essay about event driven architecture

Post on 10-Apr-2017

93 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

pv.gomes89@gmail.com

https://joind.in/talk/0525a

top related