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

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

Embed Size (px)

Citation preview

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 ?