Essay about Event-Driven
Architecture
Paulo Victor Gomes @pvgomes
Twitter @Pv_fusion
CTO at Natue - www.natue.com.br
Voucher: PHPEXPERIENCE2017
Case - E-Commerce
In this essay we will use the e-commerce as an example
Shop
- Customer
- Catalog
- Cart
- Checkout
- CMS
- WMS
- Freight….
Monolithic
Customer
Catalog
Cart
Checkout
Shop
Customer
CartCatalog
Catalog
Cart
CMS
CMS
Url
manager / SEO
Checkout
Newsletter
Newsletter
Newsletter
Freight
Freight
Freight
FreightWMS
Monolithic
Customer
Catalog
Cart
Checkout
Shop
Customer
CartCatalog
Catalog
Cart
CMS
CMS
Url
manager / SEO
Checkout
Newsletter
Newsletter
Newsletter
Freight
Freight
Freight
FreightWMS
This does not scale
very well
It is very difficult
to make changes
Service Oriented Architecture (SOA) is the solution
We can divide the problem domain into separate systems
Beginning SOA’s approach
Customer
Catalog
Cart
Checkout
Shop
Customer
CartCatalog
Catalog
Cart
CMS
CMS
Url
manager / SEO
Checkout
Newsletter
Freight
Freight
Freight
Freight
WMS
Beginning SOA’s approach
Customer
Catalog
Cart
Checkout
Shop
Customer
CartCatalog
Catalog
Cart
CMS
CMS
Url
manager / SEO
Checkout
Newsletter
Freight
Freight
Freight
Freight
WMS
Keep moving forward SOA’s approach...
Customer
Catalog
Cart
Checkout
Shop
Customer
CartCatalog
Catalog
Cart
CMS
Url
manager / SEO
Checkout
Newsletter
Freight
Freight
WMS
Keep moving forward SOA’s approach...
Catalog
Cart
Checkout
Shop
Customer
CartCatalog
Catalog
Cart
CMS
Url
manager / SEO
Checkout
Newsletter
Freight
WMS
Keep moving forward SOA’s approach...
Catalog
Cart
Shop
Customer
CartCatalog
Catalog
Cart
CMS
Url
manager / SEO
Checkout
Newsletter
Freight
WMS
Sometimes it’s not just create a service
Checkout
Shop checkout page
Order management
- Purchase Order
- Order Acceptance
- Order Processing
- Stock availability
- Sales Return
Keep moving forward SOA’s approach...
Catalog
Cart
Shop
Customer
CartCatalog
Catalog
Cart
CMS
Url
manager / SEO
Checkout
Newsletter
Freight
WMS
Checkout-SPA
Order
Management
Keep moving forward SOA’s approach...
Catalog
Cart
Shop
Customer
Cart
Cart
CMS
Url
manager / SEO
Checkout
Newsletter
Freight
WMS
Checkout-SPA
Order
Management
Search
API
Bye Bye Monolithic
Catalog
Shop
Customer
Cart
CMS
Url
manager / SEO
Newsletter
Freight
WMS
Checkout-SPA
Order
Management
Search
API
Stock API
Bye Bye Monolithic
Catalog
Shop
Customer
Cart
CMS
Url
manager / SEO
Newsletter
Freight
WMS
Checkout-SPA
Order
Management
Search
API
Stock API
Bye Bye Monolithic
Catalog
Shop
Customer
Cart
CMS
Url
manager / SEO
Newsletter
Freight
WMS
Checkout-SPA
Order
Management
Search
API
Stock API
A lot of point to point
integration
Introduction of Event-Driven Architecture (EDA)
Also known as message-driven architecture, is a software architecture pattern
promoting the production, detection, consumption of, and reaction to events
An event can be defined as "a significant change in state"
K. Mani Chandy Event-Driven Applications
We make a change to the state of a system, we record that state
change as an event, and we can confidently rebuild the system
state by reprocessing the events at any time in the future...
Martin Fowler
Events
EDA Main Goal
EDA is not just about agnostic
services, is more about reacting
through the Events
EDA - Event reactions
Product flow example
BackOffice
EDA - Event reactions
Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
EDA - Event reactions
Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
+POST
+PUT
+PATCH
+DELETE
EDA - Event reactions
Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
+POST
+PUT
+PATCH
+DELETE
Feed
Product
+POST
+PUT
+PATCH
+DELETE
EDA - Event reactions
Product flow example
EDA - Event reactions
Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
+POST
+PUT
+PATCH
+DELETE
Feed
Product
+POST
+PUT
+PATCH
+DELETE
MarketPlace+POST
+PUT
+PATCH
+DELETE
Product
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
+POST
+PUT
+PATCH
+DELETE
Feed
Product
+POST
+PUT
+PATCH
+DELETE
MarketPlace+POST
+PUT
+PATCH
+DELETE
Product
Catalog must know all services, e-commerce flow, it
isn't agnostic
A lot of point to point integration
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
+POST
+PUT
+PATCH
+DELETE
Feed
Product
+POST
+PUT
+PATCH
+DELETE
MarketPlace+POST
+PUT
+PATCH
+DELETE
Product
Let's try another approach
EDA - Event reactions
Another approach
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
Feed
MarketPlace+GET
Product
+GET
+GET
Product
EDA - Event reactions
Another approach
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
Feed
MarketPlace+GET
Product
+GET
+GET
Product
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
+POST
+PUT
+PATCH
+DELETE
Feed
Product
+POST
+PUT
+PATCH
+DELETE
MarketPlace+POST
+PUT
+PATCH
+DELETE
Product
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
+POST
+PUT
+PATCH
+DELETE
Feed
Product
+POST
+PUT
+PATCH
+DELETE
MarketPlace+POST
+PUT
+PATCH
+DELETE
Product
When will our services call Catalog?
EDA - Event reactions
Another approach
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
Feed
MarketPlace+GET
Product
+GET
+GET
Product
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Product
+POST
+PUT
+PATCH
+DELETE
Feed
Product
+POST
+PUT
+PATCH
+DELETE
MarketPlace+POST
+PUT
+PATCH
+DELETE
Product
Perhaps a cronjob?
EDA - Event reactions
EDA approach
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Feed
MarketPlace
?
EDA - Event reactions
EDA approach
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Feed
MarketPlace
Central Message Bus
Product Created
Product Updated
Product Deleted
EDA - Event reactions
EDA approach
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Feed
MarketPlace
Central Message Bus
Product Created
Product Updated
Product Deleted
Events
EDA - Event reactions
EDA approach
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Feed
MarketPlace
Central Message Bus
Product Created
Product Updated
Product Deleted
Central Message Handler
EDA - Event reactions
EDA approach
BackOffice Catalog+POST
+PUT
+PATCH
+DELETE
Product
Search
Feed
MarketPlace
Central Message Bus
Product Created
Product Updated
Product Deleted
Central Message Handler
EDA - Event reactions
EDA approach
BackOffice Catalog
+POST
+PUT
+PATCH
+DELETE
Search
Feed
MarketPlace
Central Message Bus
Central Message Handler
MarketPlace Product Created
EDA - Event reactions
EDA approach
BackOffice Catalog
+POST
+PUT
+PATCH
+DELETE
Search
Feed
MarketPlace
Central Message Bus
Central Message Handler
MarketPlace Product Created
The benefits
- If error raises on service, the message remains in queue
- It will be picked up later
- Services don’t need to know about how to make updates to other
services
- Adding more services is easy
- Scales well
References
- Event Driven Architecture - K. Mani Chandy
- What do you mean by “Event-Driven”? - Martin Fowler
- Programming Without a Call Stack - Gregor Hohpe
- Event Driven Architecture – The Basics - John Mathon
Thank you
Twitter @Pv_Fusion
Slack @pvgomes
Github github.com/pvgomes
pv.gomes89@gmail.com
https://joind.in/talk/0525a

Essay about event driven architecture