SlideShare a Scribd company logo
Eliminate the Complexities of Event-
Driven Architecture with Domain-
Driven Design!
Sheen Brisals
Architect, Author,
AWS Hero, Team Topologies Advocate
Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design
Coupling
Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design
Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design
If any two entities are connected, they are coupled.
Celestial bodies affect each other through gravitational
forces — they remain coupled despite the substantial
distances between them.
- Balancing Coupling in Software Design
Coupled = Connected
If everything is somehow coupled,
why is coupling considered as bad?
Legacy
ecomme
rce
Tax
System
VPC
Node.js
+
React
Elastic Beanstalk
container
Server contents Server contents
Tax
Products CRM
Fulfillment Rewards
VPC
Gateway
Corporate
data center
Server contents
Legacy
ecomme
rce
Tax
System
VPC
Node.js
+
React
Elastic Beanstalk
container
Server contents Server contents
Tax
Products CRM
Fulfillment Rewards
VPC
Gateway
Corporate
data center
Server contents
503 Service
Unavailable
Tightly coupled!
Tight coupling is Bad
Loose coupling is Good
A high degree of interdependence between
different components or modules in a system.
A minimal dependency exists between
different components or modules in a system.
To loosely couple or connect…
Independent systems
Messages (Queues)
Events (Pub-Sub)
Event-Driven Architecture
sheen-brisals
sheenbrisals
sbrisals.medium.com
#TheServerlessBook #TheSpeakerBook
Architect at Sky
AWS Serverless Hero
Team Topologies Advocate
Sheen Brisals
leanpub.com/TheSpeakerBook
1. A quick intro to EDA
Agenda
3. DDD: How can it (& others) help EDA?
2. EDA: Mistakes & Pains
4. Takeaways
Service A Service B
Invokes with a request
Returns with a response
Service C Service D
Submits a batch job
Acknowledgment
Job
status
Updates
Polls
Service C Service D
Submits a batch job
Acknowledgment
Notification
Service E Service F
Messages
Sends a
message
Receives a
message
Event-driven architecture (EDA) is an architectural
concept that uses events to communicate between
applications asynchronously.
The elements of EDA
Customer
accounts
Finance
Customer
service
Event
broker
account
created
account
created
account
created
• Event producer
• Event consumer
• Event broker or bus
• Events
account
deleted
account
deleted
Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design
Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design
EDA is Awesome!!
Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design
Mistakes and Pains of EDA
E(ve)ntangled Architecture
Event Gridlock
leading to an
Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design
Lambda pinball
architecture!
- Thoughtworks
Start-up teams
Teams new to EDA
Too focused on the MVP
No strategic vision
Event Driven to Event Intrusion
Distributed [big ball] Monolith
leading to a
System A
System B
System C
System D
System E
Event Broker
Resources / Services
System A
System B
System C
System D
System E
System A
System B
System C
System D
System E
System B
System C
System D
System E
Engineering freedom!
Feature blindness
Quick-win mindset
No design principles
High cognitive load
The Unavoidable Duplicates
Oversight by Engineers
and the
Customer
accounts
Finance
Customer
service
Event
broker
account
created
account
created
account
created
account
deleted
account
deleted
Network outage
Consumer unavailable
Quota exceeded
Rate limited
Customer
accounts
Finance
Customer
service
Event
broker
account
created
account
created
account
created
account
deleted
account
deleted
Network outage
Consumer unavailable
Quota exceeded
Rate limited
Lack of knowledge & care
No event identity
No error handling - DLQs
No flow control
Business implications
The Consequences
Breaking Contracts
of
Event
broker
account
created
account
created
account
created
Customer
accounts
Finance
Customer
service
{
{
"metadata": {
...
},
"data": {
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Bloke",
“email": “jb@email.com",
“dob": “10121999"
}
}
}
{
{
"metadata": {
...
},
"data": {
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Bloke",
“email": “jb@email.com",
“dob": “12101999"
}
}
}
MM DD YYYY
DD MM YYYY
Implicit Change
Event
broker
account
created
account
created
account
created
Customer
accounts
Finance
Customer
service
Invisible consequences
{
{
"metadata": {
...
},
"data": {
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Blog",
“email": “jb@email.com",
“dob": “10121999"
}
}
}
{
{
"metadata": {
...
},
"data": {
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Blog",
“email": “jb@email.com",
“created_on": “15022025“,
“age": 25
}
}
}
Explicit Change
Event
broker
account
created
account
created
account
created
Customer
accounts
Finance
Customer
service
Visible consequences
Event
broker
account
created
account
created
account
created
Customer
accounts
Finance
Customer
service
Visible consequences
No event contract
No event schema
Low team morale
Loss of revenue
Distributed systems
Tracing Nightmare
and the
Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design
In a distributed event-driven system,
do we even have two ends?
Checkout
Payments
Orders
Rewards
Shipping
Checkout
Payments
Orders
Rewards
Shipping
No trace identifiers
No structured logs
No clear boundaries
Lack of observability tools
Wasted engineering time
Event-driven
Architecture
is Complex!
Event-Driven Architecture
Distributed Systems
Complex
Hard
What is not complex in our lives?
Kitchen
notification
Food dispatch
Customer
notification
Checkout Route planner
Instore orders Online orders More!
Stock Phone orders
Loyalty
Menu
Driver tracking
Payments
Order
management
Personalization
3rd
Party
systems
Customer
service
Law of
Conservation
of
Complexity
Every application has an inherent
amount of complexity that cannot be
removed...
Instead, it must be dealt...
- Larry Tesler (Tesler’s Law)
Is there a way to untangle the
complexities of EDA?
The most fundamental problem in
computer science is problem
decomposition: how to take a complex
problem and divide it into pieces that
can be solved independently.
DDD-Assisted
Decomposition!
For every complex problem there is an answer that is
clear, simple, and wrong.
- H. L. Mencken
To prevent entangled architecture…
the system must be decomposed.
business untangled
Remember Conway’s Law?
Domain-Driven Design
It’s not a book.
It’s an industry!
Domain-Driven Design
DDD is a development approach to model
business domains to design and build robust
and evolvable software systems.
DDD is a collection of patterns, principles,
and practices, which can be applied to
software design to manage complexity.
Domain: Ecommerce
Domain: Insurance
Domain: Banking
A domain is an area of knowledge,
expertise, or activity a company or
business specializes in.
Domains
Domain: Ecommerce
Subdomain: Products Subdomain: Payments
Subdomain: Orders Subdomain: Loyalty
Within a domain, a subdomain is a
fine-grained area of business
activity.
There will be multiple subdomains
in a business.
Subdomains
Core subdomains
Generic subdomains
Supporting subdomains
Domain: Ecommerce
Subdomain: Products Subdomain: Payments
Subdomain: Orders Subdomain: Loyalty
Bounded contexts
Model boundaries
Evolve independently
Work together
BC Stock User
Payments
BC
Cart Shopper Rewards
BC
BC
Bounded context defines the
physical and ownership
boundaries.
But how do you find out the model boundaries?
EventStorming
EventStorming is a collaborative, non-technical workshop
that brings together business and technical people to
discuss, ideate, brainstorm, and model a business process
or analyze a problem domain.
Alberto Brandolini, the inventor of EventStorming,
drew his inspiration from Domain-Driven Design!
It’s developers’ (mis)understanding, not domain experts’
knowledge that gets released in production.
- Alberto Brandolini
Time
Domain
Event
Command
redeem reward
Aggregate
reward
Actor
customer reward_redeemed
emits
acts on
order update
order
Pivotal Event
Boundary
Big Picture EventStorming
(Domain-level EventStorming)
Design Level EventStorming
(Development-level EventStorming)
To control event intrusion…
the boundaries must be guarded.
To guard a system boundary, you require…
People: to own the product
Principles: to guide the team
Practices: to achieve fast flow
Provides a model for organizing
teams to enable autonomy and
fast flow of value.
Domain: Ecommerce
Subdomain: Products Subdomain: Payments
Subdomain: Orders Subdomain: Loyalty
Team Topologies
Enabling Teams
Platform Teams
Stream-aligned Teams
BC Stock User
Payments
BC
Cart Shopper Rewards
BC
BC
Complicated-Subsystem Teams
Dev
Prod
Test
Pre-
prod
Autonomous Team Payments - Bounded Context Operation
Owns Operates
To prevent breaking changes…
establish communication contracts.
API contracts – Synchronous Communication
Event Contracts – Asynchronous Communication
Event [Centric] Care!
An event is something already happened.
A change in the system’s state.
An immutable capsule of data about the change.
To provide context…
an event must belong somewhere.
A domain event describes something
significant that has happened in the
business domain.
Domain Events
account_created
order_placed
payment_authorized
Customers
Orders
Payments
{
“event": {
“domain”: ”customers”,
“subdomain”: ”accounts”,
“service”: ”registration”
“name”: ”account_created”
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Bloke",
“email": “jb@email.com",
“dob": “10121999"
}
}
A customer account was
created in the system!
To uniquely recognize an event…
an event must carry a version and an identity.
{
“event": {
“version”: 1.0,
“created_at”: ”2023-08-29T12:10:21Z”,
“domain”: ”customers”,
“subdomain”: ”accounts”,
“service”: ”registration”
“name”: ”account_created”
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Bloke",
“email": “jb@email.com",
“dob": “10121999"
}
}
The event now has a
version!
{
“event": {
“version”: 1.0,
“created_at”: ”2023-08-29T12:10:21Z”,
“event_id”: ”abc-xyz”,
“domain”: ”customers”,
“subdomain”: ”accounts”,
“service”: ”registration”
“name”: ”account_created”
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Bloke",
“email": “jb@email.com",
“dob": “10121999"
}
}
The event now has an
identity!
{
“event": {
“version”: 1.0,
“created_at”: ”2023-08-29T12:10:21Z”,
“event_id”: ”abc-xyz”,
“trace_id”: ”12c-x89”,
“domain”: ”customers”,
“subdomain”: ”accounts”,
“service”: ”registration”
“name”: ”account_created”
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Bloke",
“email": “jb@email.com",
“dob": “10121999"
}
}
The event now has a
trace identifier!
To handle duplicate events…
implement idempotency measures.
Customer
accounts
Finance
Customer
service
Event
broker
account
created
account
created
account
deleted
Event index
store
Is event in
the store?
Lookup
Log details
and ignore
YES
NO
Store the
event
Outbox pattern
Storage-first pattern
Devise a common event structure…
{
“event": {
“version”: 1.0,
“created_at”: ”2023-08-29T12:10:21Z”,
“event_id”: ”abc-xyz”,
“trace_id”: ”12c-x89”,
“domain”: ”customers”,
“subdomain”: ”accounts”,
“service”: ”registration”
“name”: ”account_created”
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Bloke",
“email": “jb@email.com",
“dob": “10121999"
}
}
Mixes functional and non-
functional data.
{
"detail": {
"metadata": {
// Details about the event
},
"data": {
// The instance data
}
}
Separate details into
metadata and data
sections
{
"detail": {
"metadata": {
“version”: ”1.2”,
“created_at”: ”2023-08-29T12:10:21Z”,
“event_id”: ”abc-xyz”,
“trace_id”: ”12c-x89”,
“domain”: “customers",
“subdomain”: “accounts",
“service": “registration",
“name”: ”account_created”
},
"data": {
}
}
}
metadata can also carry-
TTL
Tokens
Callback URL
etc.
{
"detail": {
"metadata": {
},
"data": {
“account_number”: ”123-456”,
“firstname”: ”Joe”,
“lastname”: “Bloke",
“email": “jb@email.com",
“dob": “10121999"
}
}
}
data section carries the
business data.
For clarity & to control event flow…
classify the events.
Common event classifications
Event categories Event types
Domain events
Operational events
Local or internal events
State transfer events
Cloud provider events
Common event classifications
Event categories Event types
Domain events
Operational events
Local or internal events
State transfer events
Cloud provider events
Command
Query
Request
Data
Status
Response
{
"detail": {
"metadata": {
“version”: ”1.2”,
“created_at”: ”2023-08-29T12:10:21Z”,
“event_id”: ”abc-xyz”,
“trace_id”: ”12c-x89”,
“domain”: “customers",
“subdomain”: “accounts",
“service": “registration",
“category": “domain_event",
“type": “data",
“name”: ”account_created”
},
"data": {
}
}
}
metadata carrying event
classification details
Event notification
Event-carried state transfer
Domain events
Short and brief info
URL to fetch details
Claim-Check Pattern
State change snapshots
Carries more details
Internal events
External events
Domain events
Internal to a context boundary
Versioning not a must
Shared between bounded contexts
Must be versioned
EDA Patterns
Service choreography is a coordinated sequence of
actions across multiple microservices to accomplish
a business process.
Orchestration is an automated and instructed
coordination of several services and resources by an
orchestrator to accomplish a business process.
To protect domain model from invading events…
build anti-corruption layers (ACL).
Collaboration type
Customer-supplier Separate ways
Cooperation
Partnership
Shared kernel
Conformist
Anticorruption layer
Open-host service
Patterns
ACL is an integration pattern between two bounded
contexts and acts as a translation layer to map data
between two systems to protect their data models.
ACL is an integration pattern between two bounded
contexts and acts as a translation layer to map data
between two systems to protect their data models.
Prevent. Protect.
Upstream
Supplier
Bounded Context
Downstream
Consumer
Bounded Context
Data
ACL
If a bounded context conforms to a mess,
it risks becoming a mess itself.
- Learning Domain-Driven Design
Customers
Rewards
3rd
Party SaaS
Payments
OHS
ACL
ACL
ACL Event
Broker
Dedicated ACL
for the SaaS
ACL to protect Orders BC from
Payments BC
Upstream: Payments
Downstream: Orders
Async Webhook
Domain events emitted as
CloudEvents for external
consumers
Upstream: Payments
Downstream: Orders
Sync API call
Orders BC conforms to Payments BC
Orders
Bounded Context
To regulate event exodus and invasion…
employ a Gatekeeper event bus.
A gatekeeper event bus is an event broker that acts
as the guarded event gate of a context boundary.
Every API has a contract, protocol,
auth, quota, etc.
But how do you apply these to
domain events as they flow into
and out of your bounded context?
A gatekeeper event bus is an event broker that acts
as the guarded event gate of a context boundary.
Guard. Control.
Bounded Context Bounded Context
Enterprise
Event Broker
User payments bounded context
Authorization
Refunds
Capture
Service status
Pay by link
Payment
authorized
Payment
declined
Payment
captured
Payment
refunded
Link emailed
Link clicked
Healthy
Unhealthy
Finance domain
Checkout bounded context
Third-party
SaaS
User payments bounded context
Authorization
Refunds
Capture
Service status
Pay by link
Payment
authorized
Payment
declined
Payment
captured
Payment
refunded
Link emailed
Link clicked
Healthy
Unhealthy
Finance domain
Checkout bounded context
Third-party
SaaS
Domain events
Cross-account
event sharing
HTTP target
User payments bounded context
Authorization
Refunds
Capture
Service status
Pay by link
Payment
authorized
Payment
declined
Payment
captured
Payment
refunded
Link emailed
Link clicked
Healthy
Unhealthy
Finance domain
Checkout bounded context
Third-party
SaaS
Domain events
Cross account
event sharing
HTTP target
User payments bounded context
Authorization
Refunds
Capture
Service status
Pay by link
Payment
authorized
Payment
declined
Payment
captured
Payment
refunded
Link emailed
Link clicked
Healthy
Unhealthy
Finance domain
Checkout bounded context
Third-party
SaaS
Domain events
Cross-account
event sharing
HTTP target
Gatekeeper
event bus
To not loose events and the history…
practise event sourcing.
Event Sourcing is a way of capturing and persisting the
changes happening in a system as a sequence of events.
PK SK EventID FirstName LastName Address Activity
100-255-8730 2023-04-
05T08:47:
30.718Z
Hru343t5-jvc Joe Bloke 99, Edge Lane,
London
UPDATED
100-735-6729 2023-01-
15T02:37:
20.545Z
lgojk834sd3-
r454
Biz Raj 12A, Top Street,
Mumbai
DELETED
100-255-8730 2022-06-
15T18:57:
43.148Z
Zxjfie294hfdkd9e
7n
Joe Bloke 15, Nice Road,
Cardiff
CREATED
100-735-6729 2009-11-
29T20:49:
40.003Z
skdj834sd3-j3ns Biz Raj 12A, Top Street,
Mumbai
CREATED
Bounded Context Level Domain Level Centralized
Audit
Service
User Payments
Event
Store
Event Broker
Event
Sourcing
Service
Bounded Contexts
Event
Store
Event
Broker
Cloud Region 3
Account X
Event
Sourcing
Service
Cloud Region 1
Account A
Account B
Cloud Region 2
Account C
Cloud Region 4
Account D
Key Takeaways
View inter-bounded context communications as contractual agreements.
Establish event contracts at the same level as API contracts.
EDA isn’t all perfect, but when done properly, it can serve as a catalyst
for engineering growth.
Business clarity promotes engineering purity. Decomposing the business
domain is the first step towards EDA.
Modularity is essential for an evolvable EDA. It enables loose coupling and
encourages team autonomy.
Employ proven industry patterns and practices to safeguard domain
models and prevent unauthorized event intrusions.
Distributed systems are essential for meeting the needs of modern
consumers, and EDA plays a crucial role in achieving this.
By applying systems thinking and Domain-Driven Design, we can
navigate the complexities of EDA through ownership boundaries,
communication contracts, collaborative efforts, along with established
engineering principles and patterns.
The Saga Continues…!
sheen-brisals
sheenbrisals
sbrisals.medium.com
#TheServerlessBook #TheSpeakerBook
Architect at Sky
AWS Serverless Hero
Team Topologies Advocate
Sheen Brisals
Thank
You!
leanpub.com/TheSpeakerBook

More Related Content

Similar to Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design (20)

Path to Event Sourcing/CQRS - Derya SEZEN
Path to Event Sourcing/CQRS - Derya SEZENPath to Event Sourcing/CQRS - Derya SEZEN
Path to Event Sourcing/CQRS - Derya SEZEN
kloia
 
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Chris Richardson
 
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Chris Richardson
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalk
confluent
 
WSO2Con EU 2015: Keynote - System of Systems - Building a Connected Business
WSO2Con EU 2015: Keynote - System of Systems - Building a Connected BusinessWSO2Con EU 2015: Keynote - System of Systems - Building a Connected Business
WSO2Con EU 2015: Keynote - System of Systems - Building a Connected Business
WSO2
 
DDD Belgium Meetup 2017: Events, flows and long running services
DDD Belgium Meetup 2017: Events, flows and long running servicesDDD Belgium Meetup 2017: Events, flows and long running services
DDD Belgium Meetup 2017: Events, flows and long running services
Bernd Ruecker
 
Iwp Preso 9 25 09
Iwp Preso 9 25 09Iwp Preso 9 25 09
Iwp Preso 9 25 09
kestephensjr
 
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Alex Cachia
 
Optimizing Your SOA with Event Processing
Optimizing Your SOA with Event ProcessingOptimizing Your SOA with Event Processing
Optimizing Your SOA with Event Processing
Tim Bass
 
Developing functional domain models with event sourcing (oakjug, sfscala)
Developing functional domain models with event sourcing (oakjug, sfscala)Developing functional domain models with event sourcing (oakjug, sfscala)
Developing functional domain models with event sourcing (oakjug, sfscala)
Chris Richardson
 
BA and Beyond 20 - Geert Haerens - Evolvable Architecture — Are you hoping fo...
BA and Beyond 20 - Geert Haerens - Evolvable Architecture — Are you hoping fo...BA and Beyond 20 - Geert Haerens - Evolvable Architecture — Are you hoping fo...
BA and Beyond 20 - Geert Haerens - Evolvable Architecture — Are you hoping fo...
BA and Beyond
 
Cloud computing pioneers - remarkable examples 2010-11-05
Cloud computing pioneers - remarkable examples 2010-11-05Cloud computing pioneers - remarkable examples 2010-11-05
Cloud computing pioneers - remarkable examples 2010-11-05
Abe Pachikara
 
Microsoft Insurance Solutions Keynote Presentation at the Financial Services ...
Microsoft Insurance Solutions Keynote Presentation at the Financial Services ...Microsoft Insurance Solutions Keynote Presentation at the Financial Services ...
Microsoft Insurance Solutions Keynote Presentation at the Financial Services ...
Mike Walker
 
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Chris Richardson
 
Enterprise Serverless Adoption. An Experience Report
Enterprise Serverless Adoption. An Experience ReportEnterprise Serverless Adoption. An Experience Report
Enterprise Serverless Adoption. An Experience Report
SheenBrisals
 
Building microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring BootBuilding microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring Boot
Chris Richardson
 
Patterns and practices for an enterprise-scale adoption of serverless!
Patterns and practices for an enterprise-scale adoption of serverless!Patterns and practices for an enterprise-scale adoption of serverless!
Patterns and practices for an enterprise-scale adoption of serverless!
SheenBrisals
 
JCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problemsJCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problems
Bernd Ruecker
 
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Chris Richardson
 
Picos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting ThingsPicos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting Things
Phil Windley
 
Path to Event Sourcing/CQRS - Derya SEZEN
Path to Event Sourcing/CQRS - Derya SEZENPath to Event Sourcing/CQRS - Derya SEZEN
Path to Event Sourcing/CQRS - Derya SEZEN
kloia
 
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Chris Richardson
 
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Chris Richardson
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalk
confluent
 
WSO2Con EU 2015: Keynote - System of Systems - Building a Connected Business
WSO2Con EU 2015: Keynote - System of Systems - Building a Connected BusinessWSO2Con EU 2015: Keynote - System of Systems - Building a Connected Business
WSO2Con EU 2015: Keynote - System of Systems - Building a Connected Business
WSO2
 
DDD Belgium Meetup 2017: Events, flows and long running services
DDD Belgium Meetup 2017: Events, flows and long running servicesDDD Belgium Meetup 2017: Events, flows and long running services
DDD Belgium Meetup 2017: Events, flows and long running services
Bernd Ruecker
 
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Alex Cachia
 
Optimizing Your SOA with Event Processing
Optimizing Your SOA with Event ProcessingOptimizing Your SOA with Event Processing
Optimizing Your SOA with Event Processing
Tim Bass
 
Developing functional domain models with event sourcing (oakjug, sfscala)
Developing functional domain models with event sourcing (oakjug, sfscala)Developing functional domain models with event sourcing (oakjug, sfscala)
Developing functional domain models with event sourcing (oakjug, sfscala)
Chris Richardson
 
BA and Beyond 20 - Geert Haerens - Evolvable Architecture — Are you hoping fo...
BA and Beyond 20 - Geert Haerens - Evolvable Architecture — Are you hoping fo...BA and Beyond 20 - Geert Haerens - Evolvable Architecture — Are you hoping fo...
BA and Beyond 20 - Geert Haerens - Evolvable Architecture — Are you hoping fo...
BA and Beyond
 
Cloud computing pioneers - remarkable examples 2010-11-05
Cloud computing pioneers - remarkable examples 2010-11-05Cloud computing pioneers - remarkable examples 2010-11-05
Cloud computing pioneers - remarkable examples 2010-11-05
Abe Pachikara
 
Microsoft Insurance Solutions Keynote Presentation at the Financial Services ...
Microsoft Insurance Solutions Keynote Presentation at the Financial Services ...Microsoft Insurance Solutions Keynote Presentation at the Financial Services ...
Microsoft Insurance Solutions Keynote Presentation at the Financial Services ...
Mike Walker
 
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Chris Richardson
 
Enterprise Serverless Adoption. An Experience Report
Enterprise Serverless Adoption. An Experience ReportEnterprise Serverless Adoption. An Experience Report
Enterprise Serverless Adoption. An Experience Report
SheenBrisals
 
Building microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring BootBuilding microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring Boot
Chris Richardson
 
Patterns and practices for an enterprise-scale adoption of serverless!
Patterns and practices for an enterprise-scale adoption of serverless!Patterns and practices for an enterprise-scale adoption of serverless!
Patterns and practices for an enterprise-scale adoption of serverless!
SheenBrisals
 
JCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problemsJCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problems
Bernd Ruecker
 
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Chris Richardson
 
Picos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting ThingsPicos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting Things
Phil Windley
 

More from SheenBrisals (15)

Patterns and practices for developing enterprise-scale applications with serv...
Patterns and practices for developing enterprise-scale applications with serv...Patterns and practices for developing enterprise-scale applications with serv...
Patterns and practices for developing enterprise-scale applications with serv...
SheenBrisals
 
Is there a place for QA in autonomous fast flow teams?
Is there a place for QA in autonomous fast flow teams?Is there a place for QA in autonomous fast flow teams?
Is there a place for QA in autonomous fast flow teams?
SheenBrisals
 
How to study, think, work, and live as an Engineer!
How to study, think, work, and live as an Engineer!How to study, think, work, and live as an Engineer!
How to study, think, work, and live as an Engineer!
SheenBrisals
 
Advanced Event-Driven Patterns - AWS Community Day Dublin
Advanced Event-Driven Patterns - AWS Community Day DublinAdvanced Event-Driven Patterns - AWS Community Day Dublin
Advanced Event-Driven Patterns - AWS Community Day Dublin
SheenBrisals
 
Sustainability In Serverless
Sustainability In ServerlessSustainability In Serverless
Sustainability In Serverless
SheenBrisals
 
How to Grow a Serverless Team in an Enterprise
How to Grow a Serverless Team in an EnterpriseHow to Grow a Serverless Team in an Enterprise
How to Grow a Serverless Team in an Enterprise
SheenBrisals
 
The Road To Event-Driven Architecture
The Road To Event-Driven ArchitectureThe Road To Event-Driven Architecture
The Road To Event-Driven Architecture
SheenBrisals
 
Enterprise Serverless Adoption. An Experience Report
Enterprise Serverless Adoption. An Experience ReportEnterprise Serverless Adoption. An Experience Report
Enterprise Serverless Adoption. An Experience Report
SheenBrisals
 
Shillings in Serverless
Shillings in ServerlessShillings in Serverless
Shillings in Serverless
SheenBrisals
 
To Serverless And Beyond!
To Serverless And Beyond!To Serverless And Beyond!
To Serverless And Beyond!
SheenBrisals
 
How LEGO.com Accelerates With Serverless
How LEGO.com Accelerates With ServerlessHow LEGO.com Accelerates With Serverless
How LEGO.com Accelerates With Serverless
SheenBrisals
 
Sloppy Little Serverless Stories
Sloppy Little Serverless StoriesSloppy Little Serverless Stories
Sloppy Little Serverless Stories
SheenBrisals
 
How to Grow a Serverless Team
How to Grow a Serverless TeamHow to Grow a Serverless Team
How to Grow a Serverless Team
SheenBrisals
 
Design and Develop Serverless Applications as Set-Pieces
Design and Develop Serverless Applications as Set-PiecesDesign and Develop Serverless Applications as Set-Pieces
Design and Develop Serverless Applications as Set-Pieces
SheenBrisals
 
Serverless Microservices Communication with Amazon EventBridge
Serverless Microservices Communication with Amazon EventBridgeServerless Microservices Communication with Amazon EventBridge
Serverless Microservices Communication with Amazon EventBridge
SheenBrisals
 
Patterns and practices for developing enterprise-scale applications with serv...
Patterns and practices for developing enterprise-scale applications with serv...Patterns and practices for developing enterprise-scale applications with serv...
Patterns and practices for developing enterprise-scale applications with serv...
SheenBrisals
 
Is there a place for QA in autonomous fast flow teams?
Is there a place for QA in autonomous fast flow teams?Is there a place for QA in autonomous fast flow teams?
Is there a place for QA in autonomous fast flow teams?
SheenBrisals
 
How to study, think, work, and live as an Engineer!
How to study, think, work, and live as an Engineer!How to study, think, work, and live as an Engineer!
How to study, think, work, and live as an Engineer!
SheenBrisals
 
Advanced Event-Driven Patterns - AWS Community Day Dublin
Advanced Event-Driven Patterns - AWS Community Day DublinAdvanced Event-Driven Patterns - AWS Community Day Dublin
Advanced Event-Driven Patterns - AWS Community Day Dublin
SheenBrisals
 
Sustainability In Serverless
Sustainability In ServerlessSustainability In Serverless
Sustainability In Serverless
SheenBrisals
 
How to Grow a Serverless Team in an Enterprise
How to Grow a Serverless Team in an EnterpriseHow to Grow a Serverless Team in an Enterprise
How to Grow a Serverless Team in an Enterprise
SheenBrisals
 
The Road To Event-Driven Architecture
The Road To Event-Driven ArchitectureThe Road To Event-Driven Architecture
The Road To Event-Driven Architecture
SheenBrisals
 
Enterprise Serverless Adoption. An Experience Report
Enterprise Serverless Adoption. An Experience ReportEnterprise Serverless Adoption. An Experience Report
Enterprise Serverless Adoption. An Experience Report
SheenBrisals
 
Shillings in Serverless
Shillings in ServerlessShillings in Serverless
Shillings in Serverless
SheenBrisals
 
To Serverless And Beyond!
To Serverless And Beyond!To Serverless And Beyond!
To Serverless And Beyond!
SheenBrisals
 
How LEGO.com Accelerates With Serverless
How LEGO.com Accelerates With ServerlessHow LEGO.com Accelerates With Serverless
How LEGO.com Accelerates With Serverless
SheenBrisals
 
Sloppy Little Serverless Stories
Sloppy Little Serverless StoriesSloppy Little Serverless Stories
Sloppy Little Serverless Stories
SheenBrisals
 
How to Grow a Serverless Team
How to Grow a Serverless TeamHow to Grow a Serverless Team
How to Grow a Serverless Team
SheenBrisals
 
Design and Develop Serverless Applications as Set-Pieces
Design and Develop Serverless Applications as Set-PiecesDesign and Develop Serverless Applications as Set-Pieces
Design and Develop Serverless Applications as Set-Pieces
SheenBrisals
 
Serverless Microservices Communication with Amazon EventBridge
Serverless Microservices Communication with Amazon EventBridgeServerless Microservices Communication with Amazon EventBridge
Serverless Microservices Communication with Amazon EventBridge
SheenBrisals
 
Ad

Recently uploaded (20)

Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3
Gaurav Sharma
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4
Gaurav Sharma
 
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-OffMicro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Tier1 app
 
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdfThe Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
Varsha Nayak
 
Bonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdfBonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdf
Herond Labs
 
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
BradBedford3
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Providing Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better DataProviding Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better Data
Safe Software
 
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentricIntegration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Natan Silnitsky
 
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlowDevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
Aarno Aukia
 
Artificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across IndustriesArtificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across Industries
SandeepKS52
 
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdfTop 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Trackobit
 
Topic 26 Security Testing Considerations.pptx
Topic 26 Security Testing Considerations.pptxTopic 26 Security Testing Considerations.pptx
Topic 26 Security Testing Considerations.pptx
marutnand8
 
How AI Can Improve Media Quality Testing Across Platforms (1).pptx
How AI Can Improve Media Quality Testing Across Platforms (1).pptxHow AI Can Improve Media Quality Testing Across Platforms (1).pptx
How AI Can Improve Media Quality Testing Across Platforms (1).pptx
kalichargn70th171
 
Rebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core FoundationRebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core Foundation
Cadabra Studio
 
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdfHow to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
QuickBooks Training
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3
Gaurav Sharma
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4
Gaurav Sharma
 
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-OffMicro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Tier1 app
 
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdfThe Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
Varsha Nayak
 
Bonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdfBonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdf
Herond Labs
 
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
BradBedford3
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Providing Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better DataProviding Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better Data
Safe Software
 
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentricIntegration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Natan Silnitsky
 
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlowDevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
Aarno Aukia
 
Artificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across IndustriesArtificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across Industries
SandeepKS52
 
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdfTop 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Trackobit
 
Topic 26 Security Testing Considerations.pptx
Topic 26 Security Testing Considerations.pptxTopic 26 Security Testing Considerations.pptx
Topic 26 Security Testing Considerations.pptx
marutnand8
 
How AI Can Improve Media Quality Testing Across Platforms (1).pptx
How AI Can Improve Media Quality Testing Across Platforms (1).pptxHow AI Can Improve Media Quality Testing Across Platforms (1).pptx
How AI Can Improve Media Quality Testing Across Platforms (1).pptx
kalichargn70th171
 
Rebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core FoundationRebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core Foundation
Cadabra Studio
 
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdfHow to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
QuickBooks Training
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
Ad

Eliminate the complexities of Event-Driven Architecture with Domain-Driven Design