SlideShare ist ein Scribd-Unternehmen logo
1 von 56
voxxeddays.com/luxembourg/ #voxxeddaysLU
Events Everywhere
CĂŠdric Pontet
@cpontet
breaking monoliths and silos
June 22nd 2016
voxxeddays.com/luxembourg/ #voxxeddaysLU
Who is this guy ?
What does he do ?
How does he dare stand in front
of us today and speak about
such grave things as system
architectures and monoliths and
coupling ?
Let’s speak about you instead
voxxeddays.com/luxembourg/ #voxxeddaysLU
Signed CommitStrip album to win
Game ends at 5 PM
voxxeddays.com/luxembourg/ #voxxeddaysLU
The monolith
Source : https://filmessaysandarticles.wordpress.com/2014/07/14/an-analysis-of-the-dawn-of-man-in-2001-a-space-odyssey/
Evolution
voxxeddays.com/luxembourg/ #voxxeddaysLU
What is so bad about a
monolith after all ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
Go buy yourselves an
Enterprise
Service
Bus
and all your problems will be solved
The next step of evolution
Expensive
Shit
Ball
Any idea what SOA means in Dutch ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
The holy relational database
Every problem is a nail.
The only tool you need is a
hammer.
News flash
RDBMS vendors tell lies
voxxeddays.com/luxembourg/ #voxxeddaysLU
The new big idea : ÂľServices
There must a
better way
ÂľServices
==
SOA done properly
Source : http://martinfowler.com/articles/microservices.html
small
voxxeddays.com/luxembourg/ #voxxeddaysLU
It’s not a technical problem
It’s a business problem
voxxeddays.com/luxembourg/ #voxxeddaysLU
Enters Domain-Driven Design
Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans http://dddcommunity.org
Eric Evans
voxxeddays.com/luxembourg/ #voxxeddaysLU
Bounded context
Explicitly define the context within which a model applies.
Explicitly set boundaries in terms of
• team organization
• usage within specific parts of the application,
• and physical manifestations such as code bases and database schemas.
Standardize a single development process within the context, which need
not be used elsewhere.
Model expressions, like any other phrase, only have meaning in context.
Source : Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans - Chapter 14 : Maintaing model integrity
voxxeddays.com/luxembourg/ #voxxeddaysLU
Context map
Source : https://blog.codecentric.de/2015/07/microservices-strategie-vor-taktik
Different sub-domains
• Core domain
• Supporting sub-domain
• Generic sub-domain
voxxeddays.com/luxembourg/ #voxxeddaysLU
Aggregates
• Transactional consistency boundaries
• Aggregate root is the gatekeeper of the aggregate
 it enforces business rules
 it cannot be blindsided
Source : Modeling Aggregates with DDD and Entity Framework by Vaughn Vernon
voxxeddays.com/luxembourg/ #voxxeddaysLU
Ubiquitous language
Breaking the language barrier between business
and tech people by sharing the same language
It’s all about communication and learning
Breaking silos starts with communication
 Language is ubiquitous in a context
voxxeddays.com/luxembourg/ #voxxeddaysLU
A stereotypical
DDD architecture
Source : http://www.cqrsinfo.com
One per Bounded Context
Traditional scaling model
voxxeddays.com/luxembourg/ #voxxeddaysLU
You applied Stategic Design and now have several pristine Domain
Models in context
You system is devided into well defined Bounded Countexts and your
contexts do not leak
Your domain logic and business rules are explicitly expressed in your
code though well designed Aggregates
All is for the best
But
• How do you write reports ?
• Should you load 200 000 aggregates to compute statistics ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
CQRS
Yet another evolutionnary step
voxxeddays.com/luxembourg/ #voxxeddaysLU
Command / Query Responsibility Segragation
Event Centric: Finding Simplicity in Complex Systems by Greg Young
Estimated release date
Sometime between Q3 2016
and 2035 Greg Young
http://buildstuff.lt
voxxeddays.com/luxembourg/ #voxxeddaysLU
Commands and Queries
Command
• It requests an action
• It mutates state
• It does not return data
Query
• It answers a question
• It does not mutate state
• It returns data
voxxeddays.com/luxembourg/ #voxxeddaysLU
Optimized for reads
• 80/20 law
• Denormalization brings direct
display in UI
• Thin data access layer
• Caching
• BASE on the read side
Write side ensures consistency
• Use of DDD
• Domain logic and rules are
enforced by aggregates
• ACID on the write side
Source : CQRS Journey
CQRS
voxxeddays.com/luxembourg/ #voxxeddaysLU
What about consistency ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
Brewer’s CAP theorem
• Consistency : all nodes see the same data at the same time
• Availability : a guarantee that every request receives a
response about whether it succeeded or failed
• Partition tolerance : the system continues to operate despite
arbitrary partitioning due to network failures
No, you can’t always get what you want
 Sometimes, you need to make hard a choices
Source : https://en.wikipedia.org/wiki/CAP_theorem
voxxeddays.com/luxembourg/ #voxxeddaysLU
Eventual consistency
Don’t underestimate the cost of
maintaining consistency all the time
• What is the book of record ?
It’s ok to use stale data
• Your data is stale as soon as it has
been read from the database anyway
Don’t fight it, embrace it
• It might even become a competitive
advantage
voxxeddays.com/luxembourg/ #voxxeddaysLU
How do I keep the read
model in sync ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
Distributed transaction
Source : CQRS Journey
Caracteristics
• Consistent (2 phase commit)
Problems ?
• Performance
• Expensive to implement
and maintain
• Slow  2 phase commit
• Availabiliy
• Does not scale
• Accidental complexity
Solution
 Relax consistency ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
Using a reliable message transport
Source : CQRS Journey
Caracteristics
• Eventually consistent
• Performance
• Availability
Problems ?
• Your infrastructure needs
to supports transaction
over database and queue
voxxeddays.com/luxembourg/ #voxxeddaysLU
No transaction
Source : CQRS Journey
Caracteristics
• Eventually consistent
• Performance
• Availability
Problems ?
• Your data persistence has
to cope with it
• Did I hear triggers  ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
You seperated your reads from your writes
You bind DTO direcly in your UI
Your UI is task oriented
Your write side ensures business rules and consistency
Your read side is eventually consistent
You did good
But
• You persist only current state and you still need an ORM
• Syncing read from write is expensive and might require some kind of
transaction
voxxeddays.com/luxembourg/ #voxxeddaysLU
Introducing Event Sourcing
voxxeddays.com/luxembourg/ #voxxeddaysLU
Commands and Events
Command
• It’s an action
• Requested (can say f*ck off)
• Imperative verb
• Self contained
Event
• It’s a fact
• Always true (immutable)
• Passed tense verb
• Self contained
 PlaceOrder  OrderPlaced
voxxeddays.com/luxembourg/ #voxxeddaysLU
Event stream
Performance
• Immutability
• Append-only
Simplicity
• Events are simple
• Minimal data access
History
• Audit log for free
• Record/playback
• Debugging
Source : CQRS Journey
voxxeddays.com/luxembourg/ #voxxeddaysLU
Event Sourcing
Save
• Don’t save current state
• Save a stream of small immutable
events instead
Load
• Replay events to restore current state
• Use snapshots if need be
Sync
• Use events to sync the read model
• Use a publish/subscribe pattern to
scale denormalization
Source : CQRS Journey
voxxeddays.com/luxembourg/ #voxxeddaysLU
Projections
React to events as they are written
Create new events when
interesting combinations occur
Write temporal correlation queries
that run over historical data and on
into the future
Source : http://www.jefclaes.be/2013/10/event-projections.html
voxxeddays.com/luxembourg/ #voxxeddaysLU
Integration made easy
Source : http://www.confluent.io/blog/making-sense-of-stream-processing/
• Your even stream can be
used as a message queue
• Use event projections to
denormalize in multiple read
models or external systems
• Leverage publish/subscribe
infrastructure
voxxeddays.com/luxembourg/ #voxxeddaysLU
https://geteventstore.com/
Event sourced by design
• Writen as an event sourced system
• Open source  go check the code out
Projections
• Consume or create new events
• Volatile, catch-up or persistent subsciptions
Portable
• Runs on mono on Linux, OS X and
Windows
• Clients API for HTTP, .NET, Akka, Erlang
Great performances
• 15,000 writes per second
• 50,000 reads per second
voxxeddays.com/luxembourg/ #voxxeddaysLU
What else can I do with events ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
EventStorming
Introducing EventStorming : An act of Deliberate Collective Learning by Alberto Brandolini
Alberto Brandolini
voxxeddays.com/luxembourg/ #voxxeddaysLU
The bullshit asymmetry principle
voxxeddays.com/luxembourg/ #voxxeddaysLU
A workshop format for
quickly exploring complex
business domains
Source:https://twitter.com/ziobrando/status/535828549102759936
Source : http://fr.slideshare.net/ziobrando/event-storming-recipes
EventStorming
It is powerful
It is engaging
It is efficient
It is easy
It is fun
voxxeddays.com/luxembourg/ #voxxeddaysLU
Things we’ve learnt from modeling with events
• Applies to many domains
• Changes the way domain experts think about the system
• Focus on behavior instead of structure
• Focus on temporal aspects : this happens before that
 Develop new competitive advantage
voxxeddays.com/luxembourg/ #voxxeddaysLU
Occationaly Connected Applications
Denormalizers Workflow
Backend system
Monitoring
Source : http://www.slideshare.net/CdricPontet/events-at-the-tip-of-your-fingers-42179091
voxxeddays.com/luxembourg/ #voxxeddaysLU
EventSourced != EventDriven
CQRS/EventSourcing is NOT a top level architecture
 Use it only when it makes sense
voxxeddays.com/luxembourg/ #voxxeddaysLU
MicroService, Reactive, Actors
What is all this fuss about ?
voxxeddays.com/luxembourg/ #voxxeddaysLU
Imperative vs Reactive
Responsive
• Respond in a timely manner
• Consistent quality of service
Resilient
• Stay responsive in the face of failure
• Failures are contained
• Recovery is delegated
to an other component
Elastic
• Stay responsive under
varying workloads
• No bottlenecks
Message driven
• Asynchronous message passing
• Clear boundaries ensure loose coupling
Source : http://www.reactivemanifesto.org
voxxeddays.com/luxembourg/ #voxxeddaysLU
Source : http://reactivex.io
Pull
vs
Push
Observer pattern
done properly
Reactive
Extensions
Imperative
vs
Reactive
voxxeddays.com/luxembourg/ #voxxeddaysLU
Actor model
An actor is a computational entity that, in response to a message
it receives, can concurrently:
• send a finite number of messages to other actors;
• create a finite number of new actors;
• designate the behavior to be used for the next message it receives.
Computational model
Inherently concurrent
Infinitely composable
Fault tolerant through supervision
Source : http://www.brianstorti.com/the-actor-model
voxxeddays.com/luxembourg/ #voxxeddaysLU
Better languages & tools
are ready
Leverage your infrastructure
voxxeddays.com/luxembourg/ #voxxeddaysLU
• Functional language
• Immutable state
• Functions with no side effect
• Type system enforces invariants
• Event processing is a left fold
C#
F#
Source : Scott Wlaschin https://fsharpforfunandprofit.com/ddd
It’s all functional
State <= State + Event
voxxeddays.com/luxembourg/ #voxxeddaysLU
Messaging & storage
Messaging infrastructure
• RabbitMQ
• ZeroMQ
• Apache Kafka
• Azure Service Bus
Make your pick
• Column
• Key-Value
• Document
• Graph
• Multi-model
Choose the right tool according to your context
 No dogma
voxxeddays.com/luxembourg/ #voxxeddaysLU
The cloud is your best friend
voxxeddays.com/luxembourg/ #voxxeddaysLU
Embrace the new trends
IoT
• Telemetry == Events
• Stream analytics
• Smart Everything
Source:https://www.control4.com/blog/2014/03/the-internet-of-things-and-the-connected-home
Big data
• Machine learning
• Deep learning
• Data lake
Source:https://www.ucl.ac.uk/big-data/bdi
voxxeddays.com/luxembourg/ #voxxeddaysLU
To be continued…
voxxeddays.com/luxembourg/ #voxxeddaysLU
What is the next big thing ?
MicroServices is just the latest trend
 Something else will come up !
Good modeling & design principles stay
valuable through time
• SOLID
• Patterns of Enterprise Application Architecture
• Enterprise Integration Patterns
• Domain-Driven Design
 Loose coupling + high cohesion
voxxeddays.com/luxembourg/ #voxxeddaysLU
Distributed software is hard
First rule of disributed sofware
DON’T DISTRUBUTE unless you genuinely need to
 Design your software so that you might distribute
Beware of accidental complexity
• Distribution makes things more difficult to understand
• The learning curve is steep
Remember : CQRS/ES is not a top level architecture
 Use it only when it makes sense
voxxeddays.com/luxembourg/ #voxxeddaysLU
Beware : HAL 9000
voxxeddays.com/luxembourg/ #voxxeddaysLU
Interesting video content
• DDDEurope - Eric Evans — Tackling Complexity in the Heart of Software
• DDDEurope - Greg Young — A Decade of DDD, CQRS, Event Sourcing
• DDDEurope - Alberto Brandolini — The Precision Blade
• DDDx - Eric Evans - DDD and Microservices: At Last, Some Boundaries!
• DDDx - Scott Wlaschin – Domain Driven Design with the F# type system
• React 2014 - Erik Meijer – What does it mean to be Reactive?
• Lang.NEXT - Hewitt, Meijer and Szyperski – The Actor Model

Weitere ähnliche Inhalte

Ähnlich wie Events everywhere - breaking monoliths and silos

Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetesDr Ganesh Iyer
 
Docker, Containers and the Future of Application Delivery
Docker, Containers and the Future of Application DeliveryDocker, Containers and the Future of Application Delivery
Docker, Containers and the Future of Application DeliveryDocker, Inc.
 
Why Docker
Why DockerWhy Docker
Why DockerdotCloud
 
Why docker | OSCON 2013
Why docker | OSCON 2013Why docker | OSCON 2013
Why docker | OSCON 2013dotCloud
 
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...Mark Heckler
 
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...Mark Heckler
 
Built in NM - Meetup Talk - CTL Labs
Built in NM - Meetup Talk - CTL LabsBuilt in NM - Meetup Talk - CTL Labs
Built in NM - Meetup Talk - CTL LabsRoss Jimenez
 
OCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, Smile
OCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, SmileOCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, Smile
OCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, SmileOCCIware
 
Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017
Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017
Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017Marc Dutoo
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroPatrick Chanezon
 
How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker Jonathan Martin
 
the endless now: distributed systems & teams
the endless now: distributed systems & teamsthe endless now: distributed systems & teams
the endless now: distributed systems & teamsbridgetkromhout
 
Best Practices for Microservice CI/CD: Lessons from Expedia and Codefresh
Best Practices for Microservice CI/CD: Lessons from Expedia and CodefreshBest Practices for Microservice CI/CD: Lessons from Expedia and Codefresh
Best Practices for Microservice CI/CD: Lessons from Expedia and CodefreshCodefresh
 
Event Hub & Azure Stream Analytics
Event Hub & Azure Stream AnalyticsEvent Hub & Azure Stream Analytics
Event Hub & Azure Stream AnalyticsDavide Mauri
 
Chainlink, Cosmos, Kusama, Polkadot: Approaches to the Internet of Blockchains
Chainlink, Cosmos, Kusama, Polkadot:   Approaches to the Internet of BlockchainsChainlink, Cosmos, Kusama, Polkadot:   Approaches to the Internet of Blockchains
Chainlink, Cosmos, Kusama, Polkadot: Approaches to the Internet of BlockchainsGene Leybzon
 
Connecting the Dots: How Blockchains Can Interoperate with Polkadot
Connecting the Dots: How Blockchains Can Interoperate with PolkadotConnecting the Dots: How Blockchains Can Interoperate with Polkadot
Connecting the Dots: How Blockchains Can Interoperate with PolkadotPureStake
 
Demystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data ScientistsDemystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data ScientistsDr Ganesh Iyer
 
CICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the TrenchesCICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the TrenchesCodefresh
 
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware
 
OCCIware: Extensible and Standard-based XaaS Platform To Manage Everything in...
OCCIware: Extensible and Standard-based XaaS Platform To Manage Everything in...OCCIware: Extensible and Standard-based XaaS Platform To Manage Everything in...
OCCIware: Extensible and Standard-based XaaS Platform To Manage Everything in...OW2
 

Ähnlich wie Events everywhere - breaking monoliths and silos (20)

Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetes
 
Docker, Containers and the Future of Application Delivery
Docker, Containers and the Future of Application DeliveryDocker, Containers and the Future of Application Delivery
Docker, Containers and the Future of Application Delivery
 
Why Docker
Why DockerWhy Docker
Why Docker
 
Why docker | OSCON 2013
Why docker | OSCON 2013Why docker | OSCON 2013
Why docker | OSCON 2013
 
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
 
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
Clouds & Containers: Hit the High Points and Give it to Me Straight, What's t...
 
Built in NM - Meetup Talk - CTL Labs
Built in NM - Meetup Talk - CTL LabsBuilt in NM - Meetup Talk - CTL Labs
Built in NM - Meetup Talk - CTL Labs
 
OCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, Smile
OCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, SmileOCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, Smile
OCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, Smile
 
Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017
Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017
Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - Intro
 
How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker
 
the endless now: distributed systems & teams
the endless now: distributed systems & teamsthe endless now: distributed systems & teams
the endless now: distributed systems & teams
 
Best Practices for Microservice CI/CD: Lessons from Expedia and Codefresh
Best Practices for Microservice CI/CD: Lessons from Expedia and CodefreshBest Practices for Microservice CI/CD: Lessons from Expedia and Codefresh
Best Practices for Microservice CI/CD: Lessons from Expedia and Codefresh
 
Event Hub & Azure Stream Analytics
Event Hub & Azure Stream AnalyticsEvent Hub & Azure Stream Analytics
Event Hub & Azure Stream Analytics
 
Chainlink, Cosmos, Kusama, Polkadot: Approaches to the Internet of Blockchains
Chainlink, Cosmos, Kusama, Polkadot:   Approaches to the Internet of BlockchainsChainlink, Cosmos, Kusama, Polkadot:   Approaches to the Internet of Blockchains
Chainlink, Cosmos, Kusama, Polkadot: Approaches to the Internet of Blockchains
 
Connecting the Dots: How Blockchains Can Interoperate with Polkadot
Connecting the Dots: How Blockchains Can Interoperate with PolkadotConnecting the Dots: How Blockchains Can Interoperate with Polkadot
Connecting the Dots: How Blockchains Can Interoperate with Polkadot
 
Demystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data ScientistsDemystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data Scientists
 
CICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the TrenchesCICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the Trenches
 
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
 
OCCIware: Extensible and Standard-based XaaS Platform To Manage Everything in...
OCCIware: Extensible and Standard-based XaaS Platform To Manage Everything in...OCCIware: Extensible and Standard-based XaaS Platform To Manage Everything in...
OCCIware: Extensible and Standard-based XaaS Platform To Manage Everything in...
 

KĂźrzlich hochgeladen

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto GonzĂĄlez Trastoy
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 

KĂźrzlich hochgeladen (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 

Events everywhere - breaking monoliths and silos

Hinweis der Redaktion

  1. Who knows anything about Microservices DDD CQRS/ES Event-driven architectures I have been part of the DDD community for quite some time now. Read the book in 2006 DDDx twice DDDEurope in 2016 Speaker at BuildStuff Let me know if I go too fast Ask questions
  2. What is a monolith ? 2001: A space odysey Monolith = fear + curiosity Mysterious force fallen from the sky The central source that holds everything together In software Client/Server Single unit of deployment per component Vertical deployment even though N-tier Scale up
  3. Monolithic systems are not so bad. I have built many of them that are still running Who has never built a system like that ? Problems Tighly coupled Heavy to deploy Enforces silos structure  Font end devs vs COBOL devs, devs vs ops Do not scale very well  Scale up has limitations Do not cope well with concurrency Leveraging multi core procs and cloud CORBA COM/DCOM Webservices & WS* of death
  4. Nothing very new N-Tier RMI COM/DCOM/COM+ CORBA WS* of death REST ESB Heavyweight Brokered architecture != distributed Difficult to deploy and upgrade Seldom used properly business logic ends up in the ESB instead of in the domain model ESB = Software vendors trick
  5. Another software vendor trick makes you belive that everything has to be built with a relational DB Problem Integration through the DB Object/Relational impedence mismatch Single point of failure Does not scale Again a software vendors trick
  6. Now we have a better solution : Microservices They are going to save the world Is everything so much better ? It’s not only about deployment, it’s all about boundaries
  7. We tend to see everything as a technical problem because we like that But it’s actually a business problem. How do you model a system that makes sense for your actual business domain ? It’s all about clean responsabilities segregation DDD  boundaries
  8. It’s not about building blocks and patterns It’s all about boundaries The 2 most important concepts in DDD ? Bounded contexts Aggregates According to Eric himself, you should start reading the book from chapter 7 and forward, then come back to the beginning Skip the Building Blocks and understand Strategic Design first
  9. Boundaries  Encapsulation Clean, documented ways to communicate 1 team  1 Bounded Context
  10. Bounded contexts live into sub domains You want to focus on your core domain  where you have your competitive advantage
  11. Aggregates should be simple Beware the naive aggregate design approach
  12. Duplicated in different Bounded Contexts DB schema to separate concerns Modules/Namespace Perfectly viable option… but
  13. Basic Availability Soft-state Eventual consistency Atomic: Everything in a transaction succeeds or the entire transaction is rolled back. Consistent: A transaction cannot leave the database in an inconsistent state. Isolated: Transactions cannot interfere with each other. Durable: Completed transactions persist, even when servers restart etc.
  14. Rolling Stones song
  15. If you want to favor availability and resilience of your system, you will need to relax consistency
  16. 2-phase commit 
  17. Viable solution
  18. Viable solution
  19. Think accounting What is the book of records ATM Warehouse The system is not the book of record The physical world is the book of record
  20. Device app is event sourced Optimistic concurrency Conflict resolution on events  Think about GIT
  21. Beware : HAL 9000