Slide 1

Slide 1 text

Event Driven Architecture Reason, how and where to apply Luram Archanjo

Slide 2

Slide 2 text

Who am I? ● Software Engineer at Sensedia ○ Edenred ○ Cielo ● MBA in Java projects ● Java and Microservice enthusiastic

Slide 3

Slide 3 text

Agenda ● Microservices ● REST ● Message Driven Architecture ● Event Driven Architecture ● Questions

Slide 4

Slide 4 text

Moving to Microservices Feature A Feature B Feature C Monolith Microservice Microservice Microservices Microservice

Slide 5

Slide 5 text

● Communication ● Security ● Network failures ● Observability ○ Metrics ○ Logs ○ Tracing Challenges with Microservices

Slide 6

Slide 6 text

Communication Microservice Microservice Microservice Microservice Microservice Microservice Microservice Microservice

Slide 7

Slide 7 text

Representational state transfer (REST)

Slide 8

Slide 8 text

REST - Representational State Transfer GET GET POST PUT DELETE /movies /movies/{movieId} /movies /movies/{movieId} /movies/{movieId}

Slide 9

Slide 9 text

● Web already built on top of HTTP ● Easy to understand ● Variety of http implementation in any languages ● Loose coupling between client and server Representational State Transfer

Slide 10

Slide 10 text

Microservice Communication Microservice Microservice Microservice Microservice Microservice Microservice Microservice Microservice

Slide 11

Slide 11 text

Cheers We have a system

Slide 12

Slide 12 text

Unfortunately We will have problems

Slide 13

Slide 13 text

Microservice Communication Microservice Microservice Microservice Microservice Microservice Some kind of problems • Crash of service • Slow response time • Change of interface

Slide 14

Slide 14 text

How to handle it?

Slide 15

Slide 15 text

There is something worse

Slide 16

Slide 16 text

Microservice Communication Database per service Microservice Microservice Microservice Microservice Microservice

Slide 17

Slide 17 text

Code is easy, state is hard

Slide 18

Slide 18 text

Event-Driven Architecture

Slide 19

Slide 19 text

First, we need to learn the difference between Synchronous vs Asynchronous

Slide 20

Slide 20 text

Synchronous vs Asynchronous

Slide 21

Slide 21 text

Reasons to Send a Message

Slide 22

Slide 22 text

Reasons to Send a Message

Slide 23

Slide 23 text

Message-Driven Architecture Producer Consumer Message Broker Producer Producer Consumer Consumer Advantages • Durable Message • Guaranteed delivery • Decoupling

Slide 24

Slide 24 text

Message-Driven Architecture Producer Consumer Message Broker Producer & Consumer Pattern One message, one consumer! Consumer Consumer

Slide 25

Slide 25 text

Message-Driven Architecture Publisher Subscriber Message Broker Publisher & Subscriber Pattern One message, many subscribers! Subscriber Subscriber

Slide 26

Slide 26 text

Event-Driven Architecture

Slide 27

Slide 27 text

Event-Driven Architecture Event-Driven Architecture Message-Driven Architecture Broker Producer Consumer

Slide 28

Slide 28 text

Event-Driven Architecture Event Producer Event Consumer Event Broker Fire & Forget Pattern One event, many consumers! Event Consumer Event Consumer

Slide 29

Slide 29 text

Events are facts that happened in the system

Slide 30

Slide 30 text

Types of events Low level event “CRUD” Events ● OrderCreated ● OrderUpdated ● OrderDeleted Domain level event Business Events ● RequestedOrder ● ApprovedOrder ● RejectedOrder

Slide 31

Slide 31 text

Saga Pattern

Slide 32

Slide 32 text

Saga Pattern Orchestration Choreography Event Producer Event Mediator Event Consumer Event Consumer Event Event Broker Producer Consumer Event Consumer

Slide 33

Slide 33 text

“We can query an application's state to find out the current state of the world, and this answers many questions. However there are times when we don't just want to see where we are, we also want to know how we got there.” Martin Fowler, 2005

Slide 34

Slide 34 text

Event Sourcing Persists the state of a entity as a sequence of state-changing events Whenever state of entity changes, a new event is appended to the list of Events Saving an event is a single operation (atomic) The application reconstructs an entity’s current state by replaying the events

Slide 35

Slide 35 text

Event Sourcing

Slide 36

Slide 36 text

CQRS Optimize different nonfunctional requirements for read and write Write Delay Eventual Consistency Database as event publisher (optional) Data Projection and Materialized View Command Service Microservice Event Store Query Service Microservice

Slide 37

Slide 37 text

Eventual Consistency Command Service Microservice Event Store Query Service Microservice I want pizza Pizza = ? Pizza = Preparing

Slide 38

Slide 38 text

Event Ording 0 100 80 Events Account: Created Deposit: R$ 100 Withdraw: R$ 20 Withdraw: R$ 20 Ordering Not Ordering 60 0 0 0 100

Slide 39

Slide 39 text

Event Stream Event #1 Event #2 Event #3 Event #4 Event #5 Event #6 Event #7 Replay Timeline

Slide 40

Slide 40 text

Why we are talking about Event Driven Architecture (EDA)

Slide 41

Slide 41 text

“By 2020, event-sourced, real-time situational awareness will be a required characteristic for 80% of digital business solutions, and 80% of new business ecosystems will require support for event processing.” Top 10 Strategic Technology Trends for 2018

Slide 42

Slide 42 text

Summary 2º Place 1º Place 3º Place It enables an application to maintain data consistency across multiple services without using distributed transactions It scales well to a very large number of users and allows new services to be added without breaking the streams of data that are currently deployed Analytics ● Audit ● Near real time ● Machine learn

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

Thanks a million! Questions? /larchanjo /luram-archanjo