Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

87
Construire le SI de demain REX Société Générale La simplicité comme moyen d'être performant, résilient et de réduire le Time To Market

Transcript of Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Page 1: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Construire le SI de demain

REX Société Générale La simplicité comme moyen d'être

performant, résilient et de réduire le Time To Market

Page 2: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Marie-Laure Thuret

@mlthuret

Développeur chez

Clément Héliou

@c_heliou

Développeur chez

ThierryAbaléa

@ThierryAbalea

Tech Leadà la

Société Générale

Page 3: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 4: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 5: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 6: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 7: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Palladium

Page 8: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 9: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Commodity Trading Company

Page 10: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Today

Hedging

Commodity Trading Company

Page 11: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Commodity Trading Company

Few Months Later

Hedging

Physical Delivery

Page 12: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 13: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Sales PersonCustomer Trader

Booking

Exchanges

Page 14: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Automatize the processus

Page 15: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

OrchestratorCustomer ExchangesPricer

Booking

Hedger

Trading LimitMargin

Page 16: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 17: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

The Constraints

Reliability / Resilience Performance

Productivity / Time To Market

Page 18: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Our Solution

Simplicity

Page 19: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Simple ≠ Easy

Page 20: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Choices are business-oriented

Page 21: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Functional and Code

Reduce the impedance between

Our Goal

Page 22: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Orchestration

Let’s take an example with our main component

Page 23: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 24: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 25: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 26: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Event Sourcing

Page 27: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

 «  Capture all changes to an application state as a

sequence of events  »Martin Fowler

Page 28: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Date Money Out Money In

2015/05/14 100

2015/05/14 -20

2015/05/16 -30

2015/05/24 380

2015/06/01 -70

Total -120 480

Balance 360

Page 29: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

WithdrawalPerformed

accountId: 9387amount: 30€

BankAccount

id: 9387balance: 0€

WithdrawalPerformed

accountId: 9387amount: 20€

DepositPerformed

accountId: 9387amount: 100€

BankAccount

id: 9387balance: 50€

BankAccount

id: 9387balance: 100€

BankAccount

id: 9387balance: 80€

Inspired by B. Reitzammer & J. Seitz - http://ookami86.github.io/event-sourcing-in-practice

Apply to

Apply to

Apply to

Produces

Produces

Produces

Page 30: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it

Page 31: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

BankAccount

id: 9387balance: 0€

WithdrawalPerforme

accountId: 9387amount: 20€

DepositPerformed

accountId: 9387amount: 100€

BankAccount

id: 9387balance: 100€

Bug

Inspired by B. Reitzammer & J. Seitz - http://ookami86.github.io/event-sourcing-in-practice

Apply to

Apply to

Produces

Produces

Page 32: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

WithdrawalPerformed

accountId: 9387amount: 30€

BankAccount

id: 9387balance: 0€

WithdrawalPerformed

accountId: 9387amount: 20€

DepositPerformed

accountId: 9387amount: 100€

BankAccount

id: 9387balance: 100€

BankAccount

id: 9387balance: 70€

Inspired by B. Reitzammer & J. Seitz - http://ookami86.github.io/event-sourcing-in-practice

Apply to

Apply to

Produces

Produces

Page 33: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Domain Driven Design

Page 34: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

 « DDD is about designing software based on models

of the underlying (business) domain »

Martin Fowler

Page 35: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Ubiquitous Language

RepositoryAggregate Root

EntityValue Object

Page 36: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Durable business model

Extensibility

Clean Architecture

Solid Responsibility Segregation

Page 37: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Using Event Sourcing and DDD concepts in

Multiplus

Page 38: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Multiplus Business

Logic

ReceiveQuote{command}

QuoteReceived{event}

QuoteForwarded{event}

Customer

Event Bus

QuoteForwardedHandler{handler}

Quote Requestin Quoting

QuoteReceived{event}

QuoteReceived{event}

ForwardQuote{action}

Page 39: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Transaction{aggregate root}

Pricing{entity}

Execution{entity}

Orchestration{entity}

ReceiveQuote{command/value object}

quoteRequestId: 4563price: 100€

QuoteReceived{event/value object}

accountId: 4563price: 110€

- Multiplus Business Logic -

Page 40: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

What we’ve learned

Page 41: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Be aware of

Command Sourcing

Page 42: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Multiplus Business

Logic

ReceiveQuote{command}

quoteRequestId: 4563price: 100€

QuoteForwarded{event}

accountId: 4563price: 101€

Multiplus Business

Logic

ReceiveQuote{command}

quoteRequestId: 4563price: 100€

QuoteForwarded{event}

accountId: 4563price: 102€

2015/06/01 Margin: 1%

2015/11/01 Margin: 2%

Page 43: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 44: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Multiplus Business

Logic

ReceiveQuote{command}

QuoteForwarded{event}

Customer

Event Bus

QuoteForwardedHandler{handler}

{Quote n° 65746}{Quote n° 65746} ??

QuoteReceived{event}

ForwardQuote{action}

Page 45: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Multiplus Business

Logic

ReceiveQuote{command}

QuoteForwarded{event}

Customer

Event Bus

QuoteForwardedHandler{handler}

Customer gateway

{Quote n° 65746}

{Quote n° 65746}

QuoteReceived{event}

ForwardQuote{action}

Page 46: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Store the events produced by the

Decide function

Page 47: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Multiplus Business

Logic

ReceiveQuote{command}

quoteRequestId: 4563price: 100€

QuoteForwarded{event}

accountId: 4563price: 101€

Multiplus Business

Logic

2015/06/01 Margin: 1%

2015/11/01 Margin: 2%

QuoteForwarded{event}

accountId: 4563price: 101€

Page 48: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Multiplus Business

Logic

ReceiveQuote{command}

QuoteForwarded{event}

Customer

Event Bus

QuoteForwardedHandler{handler}

QuoteReceived{event}

ForwardQuote{action}

Page 49: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

It’s all in the past !

Page 50: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Date Money Out Money In

2015/05/14 100

2015/05/14 -20

2015/05/16 -30

2015/05/24 30

2015/06/01 -70

Total -120 130

Balance 10

Page 51: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Behavior Driven Development

Conversation

Collaboration

Specifications By Examples

Three Amigos

Automation

Ubiquitous Language

Page 52: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

deliverthe rightsoftware

Page 53: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Yourdocumentationwill becomealive

Page 54: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

youwill

new comersthank

Page 55: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

youwill

new comersthank

… but you’ll enjoy it too !

Page 56: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

warning

Page 57: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

doing BDD right

easyis not

Page 58: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

BDDCommon Issues

Business and developper faces collaboration difficulties

Mess with the scenario writing

Automation Nightmare

Page 59: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

BDDCommon Issues

Business and developper faces collaboration difficulties

Mess with the scenario writing

Automation Nightmare

Page 60: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

our

complexapplication

areoften

Page 61: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

we tend to let

everywherebusiness rules

being dispatch

Page 62: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

… making them

hard to test

Page 63: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Hexagonal Architecture

the onion architecturethe clean architecture

ports and adapters

Page 64: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 65: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Advantages

Testability Flexibility

Business Centric

Page 66: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

domain driven app structure

Page 67: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

that’s not

enough !

Page 68: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

use differentgranularity

business scenarioswhen expressing your

levels

Page 69: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Given a quantity value of 1000 in GWhen the quantity is converted in OZThen the converted quantity is 32.1507 OZ

Given a quote request with a way BUYAnd the credit check request has been sentWhen the credit check response is in errorThen the pricer does not receive a quote requestAnd the platform quote status is REJECTED

Given an authorized product typeWhen the customer sends the rfsThen the pricer receives the rfsWhen the pricer sends a quoteThen the customer receives the quote

Workflow

Feature

Unit

Page 70: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

« l’enfer c’est les autres »

Jean-Paul Sartre

Page 71: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

at

any timebusiness validation

Page 72: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing
Page 73: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

steroidsintegration testing

on

Page 74: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

care aboutthe contract

between your app and another

Page 75: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

avoidaccidentalcomplexity

Page 76: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

there’s always

implicit

a schemaeven if it’s

Page 77: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Hexagonal Architecture

DDDEvent Sourcing

BDD

State Machine

Page 78: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Hexagonal Architecture

Java

DDDEvent Sourcing

BDD

State Machine

Page 79: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Hexagonal Architecture

DaggerJava

DDDEvent Sourcing

BDD

State Machine

Page 80: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Hexagonal Architecture

DaggerJava

Guava

DDDEvent SourcingBDD

State Machine

Page 81: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Our architecture is easy to deploy !

Page 82: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Simple

Page 83: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Simple

No More Technologies Than Required

Page 84: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Simple

No More Technologies Than Required

Business Centric

Page 85: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Simple

No More Technologies Than Required

Business Centric

Code Understanding is Key

Page 86: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Simple

No More Technologies Than Required

Business Centric

CourageCode Understanding is Key

Page 87: Back Day - REX Société Générale - Explorer les principes de l'Event Sourcing

Any Questions ?