lighning talk: event-driven architecture for microservices

27
EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES MARTINS SIPENKO

Upload: martins-sipenko

Post on 16-Apr-2017

368 views

Category:

Technology


0 download

TRANSCRIPT

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

MARTINS SIPENKO

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ABOUT ME

▸ Located in Riga, Latvia

▸ martinssipenko

▸ Lead engineer @ KASKO, a fintech startup (insurance)

▸ Worked with PHP since around 2002

▸ AWS Certified

▸ Student at University of Latvia

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

WHY MICROSERVICES?

▸ Single responsibility services based on business logic

▸ Different technology for each service(PHP, Golang, Node.js, AWS Lambda)

▸ Allows to scale individual service

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

HOW DO THE SERVICES COMMUNICATE WITH EACH OTHER?

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

▸ Customer places an order

ORDER SERVICE

THE EXAMPLE

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

▸ Customer places an order

▸ Then we need to generate a PDF invoice document

ORDER SERVICE

PDFSERVICE

THE EXAMPLE

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

▸ Customer places an order

▸ Then we need to generate a PDF invoice document

▸ PDF needs to be stored

ORDER SERVICE

PDFSERVICE

THE EXAMPLE

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

▸ Customer places an order

▸ Then we need to generate a PDF invoice document

▸ PDF needs to be stored

▸ Order needs to be updated with a link to PDF document

ORDER SERVICE

PDFSERVICE

THE EXAMPLE

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

INITIAL APPROACH

▸ Order service makes HTTP call to PDF service

▸ PDF is generated and stored asynchronously

▸ PDF service makes an HTTP call to update Order

ORDER SERVICE

PDFSERVICE

POST POST

PATCH

POST

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

THE PROBLEM

▸ Services have to be aware of each other

▸ PDF Service must know how to update an Order

ORDER SERVICE

PDFSERVICE

POST POST POST

PATCH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

THE PROBLEM

▸ Services have to be aware of each other

▸ PDF Service must know how to update an Order

▸ What if we throw in more services?

ORDER SERVICE

PDFSERVICE

POST POST POST

PATCH

EMAIL SERVICE Send PDF to customer

CUSTOMER SERVICE

GET

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

THIS DOES NOT SCALE VERY WELL!

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

▸ Turn things the other way around

▸ But how will PDF service know when order was placed?

ORDER SERVICE

PDFSERVICE

POST POST?

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

HERE COME EVENTS!

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

▸ All services send notifications to a central BUS

▸ There is one notification queue per service

▸ Each services queue is subscribed to BUS

▸ Each service runs a background worker that listens to respective event queue

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

Order created

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

Order created

Order created

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

Order created

Order created

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

Order created

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

Order created

Order created

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

Ignore

Store

Ignore Ignore

Order created

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

Order created

Order created

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

Ignore

Store

Ignore Ignore

Order created

PDF Generated

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

PDF Generated

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

PDF Generated

PDF Generated

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

PDF Generated

PDF Generated

Ignore IgnoreUpdate reference Email PDF

THE SECOND APPROACH

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

THE SECOND APPROACH

ORDER SERVICE

API

POST

EMAIL SERVICE QUEUE

CUSTOMER SERVICE

API

ORDER SERVICE QUEUE

CUSTOMER SERVICE QUEUE

PDF SERVICE QUEUE

CENTRAL MESSAGE BUS

EMAIL SERVICE WORKER

ORDER SERVICE WORKER

CUSTOMER SERVICE WORKER

PDF SERVICE WORKER

PDF Generated

PDF Generated

Ignore IgnoreUpdate reference Email PDF

Order updatedEmail sent

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

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

EVENT DRIVEN ARCHITECTURE FOR MICROSERVICES

THANKS!

[email protected]://joind.in/talk/f1078