Download - Essay about event driven architecture
Essay about Event-Driven Architecture
Paulo Victor Gomes @pvgomesTwitter @Pv_fusion
CTO at Natue - www.natue.com.brVoucher: PHPEXPERIENCE2017
Case - E-CommerceIn 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 solutionWe 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-SPAOrder
Management
Keep moving forward SOA’s approach...Catalog
CartShop
Customer
Cart
Cart
CMS
Url manager / SEO
Checkout
Newsletter
Freight
WMS
Checkout-SPAOrder
Management
Search API
Bye Bye Monolithic
Catalog
Shop
Customer
Cart
CMS
Url manager / SEO
Newsletter
Freight
WMS
Checkout-SPAOrder
ManagementSearch
APIStock API
Bye Bye Monolithic
Catalog
Shop
Customer
Cart
CMS
Url manager / SEO
Newsletter
Freight
WMS
Checkout-SPAOrder
ManagementSearch
APIStock API
Bye Bye Monolithic
Catalog
Shop
Customer
Cart
CMS
Url manager / SEO
Newsletter
Freight
WMS
Checkout-SPAOrder
ManagementSearch
APIStock 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 reactionsProduct flow example
BackOffice
EDA - Event reactionsProduct flow example
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product
EDA - Event reactionsProduct flow example
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct+POST+PUT+PATCH+DELETE
EDA - Event reactionsProduct flow example
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct+POST+PUT+PATCH+DELETE
FeedProduct+POST+PUT+PATCH+DELETE
EDA - Event reactionsProduct flow example
EDA - Event reactionsProduct flow example
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct+POST+PUT+PATCH+DELETE
FeedProduct+POST+PUT+PATCH+DELETE
MarketPlace+POST+PUT+PATCH+DELETE
Product
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct+POST+PUT+PATCH+DELETE
FeedProduct+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 SearchProduct+POST+PUT+PATCH+DELETE
FeedProduct+POST+PUT+PATCH+DELETE
MarketPlace+POST+PUT+PATCH+DELETE
Product
Let's try another approach
EDA - Event reactionsAnother approach
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct
Feed
MarketPlace+GETProduct
+GET
+GETProduct
EDA - Event reactionsAnother approach
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct
Feed
MarketPlace+GETProduct
+GET
+GETProduct
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct+POST+PUT+PATCH+DELETE
FeedProduct+POST+PUT+PATCH+DELETE
MarketPlace+POST+PUT+PATCH+DELETE
Product
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct+POST+PUT+PATCH+DELETE
FeedProduct+POST+PUT+PATCH+DELETE
MarketPlace+POST+PUT+PATCH+DELETE
ProductWhen will our services call Catalog?
EDA - Event reactionsAnother approach
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct
Feed
MarketPlace+GETProduct
+GET
+GETProduct
EDA - Event reactions
- Product flow example
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product SearchProduct+POST+PUT+PATCH+DELETE
FeedProduct+POST+PUT+PATCH+DELETE
MarketPlace+POST+PUT+PATCH+DELETE
ProductPerhaps a cronjob?
EDA - Event reactionsEDA approach
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product Search
Feed
MarketPlace
?
EDA - Event reactionsEDA approach
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product Search
Feed
MarketPlaceCentral Message Bus
Product CreatedProduct UpdatedProduct Deleted
EDA - Event reactionsEDA approach
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product Search
Feed
MarketPlaceCentral Message Bus
Product CreatedProduct UpdatedProduct Deleted
Events
EDA - Event reactionsEDA approach
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product Search
Feed
MarketPlaceCentral Message Bus
Product CreatedProduct UpdatedProduct Deleted
Central Message Handler
EDA - Event reactionsEDA approach
BackOffice Catalog+POST+PUT+PATCH+DELETE
Product Search
Feed
MarketPlaceCentral Message Bus
Product CreatedProduct UpdatedProduct Deleted
Central Message Handler
EDA - Event reactionsEDA approach
BackOffice Catalog
+POST+PUT+PATCH+DELETE
Search
Feed
MarketPlaceCentral Message Bus
Central Message HandlerMarketPlace Product Created
EDA - Event reactionsEDA approach
BackOffice Catalog
+POST+PUT+PATCH+DELETE
Search
Feed
MarketPlaceCentral Message Bus
Central Message HandlerMarketPlace 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 youTwitter @Pv_Fusion
Slack @pvgomes
Github github.com/pvgomes
https://joind.in/talk/0525a