SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
Committed to innovate
LINKVALUE
JEAN-MARIE
LAMODIERE
Build microservices
since 07/2015
@JMLamodiere
LES MICROSERVICES,
C'EST PAS AUTOMATIQUE !
Linkvalue | Jean-Marie Lamodière
2
Microservices? Think twice!
1935 CP
Linkvalue | Jean-Marie Lamodière
ASHAMED OF YOUR MONOLITH?

Spaghetti code

Side effects

Team velocity decreasing

Hard to refactor

Bugs
3
Linkvalue | Jean-Marie Lamodière
4
Linkvalue | Jean-Marie Lamodière
5
Linkvalue | Jean-Marie Lamodière
PROBLEMS THEY SOLVE
1.Autonomy
2.Autonomy
3.Autonomy
6
Linkvalue | Jean-Marie Lamodière
PROBLEMS THEY SOLVE
1.Autonomy : deployment
2.Autonomy : langage, framework
3.Autonomy : scalability
7
Linkvalue | Jean-Marie Lamodière
8
Linkvalue | Jean-Marie Lamodière
WHY AUTONOMY MATTERS?

Loosely coupled organisation
= less coupled systems

Quality audit on windows vista :
organizational structures
= most important factor!

Team accountability
9
Linkvalue | Jean-Marie Lamodière
OTHER KEY BENEFITS

Easier for newcomers

Allows isolated POC

Teams scalability

Simpler code design

Easy refactoring
10
Linkvalue | Jean-Marie Lamodière
WHO USES IT?

Uber

Netflix

Amazon

Ebay

Sound Cloud

Groupon
11

Guilt

Zalando

Spotify

Meetic

M6 Web

Auchan
Linkvalue | Jean-Marie Lamodière
« Trade-offs » appears 24x
in « Building Microservices » book
12
Linkvalue | Jean-Marie Lamodière
13
Linkvalue | Jean-Marie Lamodière
TESTIMONY
(45' talks published on )

« We had to fall back to a monolith,
and retry when ready » – SAMUEL ROZE
PHP Tour 2016 • Prenons soin de nos microservices

« I wish I had known... » – MATT RANNEY
GOTO 2016 • What I Wish I Had Known
Before Scaling Uber to 1000 Services
14
Linkvalue | Jean-Marie Lamodière
15
Linkvalue | Jean-Marie Lamodière
WHAT IS SO COMPLEX ?

Boundaries : hard to find / change

Huuuge dev-ops stack

Distributed system

Failure handling

Monitoring

End-to-end testing
16
Linkvalue | Jean-Marie Lamodière
17
Linkvalue | Jean-Marie Lamodière
BOUNDARIES : WHERE TO SPLIT?

Splitting = hard to change

Size ? Small enough, not smaller

Splitting by technical layers? no!

Things that should change together
(« S » in S.O.L.I.D.)

Loose coupling, high cohesion
18
Linkvalue | Jean-Marie Lamodière
DDD* TO THE RESCUE!
(* Domain Driven Design)
Toolset to help domain experts
and developers to refine and
share domain knowledge, reflect it in
the code base, and prioritize efforts.
19
Linkvalue | Jean-Marie Lamodière
MAKE THE IMPLICIT, EXPLICIT!
20
Copyright @DDDreboot ;)
Linkvalue | Jean-Marie Lamodière
SPLIT BY BOUNDED CONTEXT

Bounded context = Team sharing
the same « ubiquitous language »
(same terms)

Vertical, business-focus slice
21
Linkvalue | Jean-Marie Lamodière
WHEN TO SPLIT ?

When ready : technical stack chosen,
architectural decisions taken,
devs and ops willing to go,
autonomous 2 pizza feature teams

When sure of a splitting point

Start with a monolith (!) to find them
22
Linkvalue | Jean-Marie Lamodière
CONWAY'S LAW
« Organizations which design systems
are constrained to produce designs
which are copies of the communication
structures of these organizations »
23
Linkvalue | Jean-Marie Lamodière
2ND LAW OF CONSULTING
(Gerald Weinberg)
24
Linkvalue | Jean-Marie Lamodière
SPLITTING STRATEGY

Implement double-writing
(microservice or legacy side)

Publish needed messages

One-shot data import script

Assert data is sync

Read from microservice
25
Linkvalue | Jean-Marie Lamodière
COMMUNICATION BETWEEN µS

No shared database!

Language agnostic (ex : rest / json)

If weakly typed (json), have a clear doc
(optional? nullable?) or json-schema

Keep consistency. ex : pagination

Define minimal customer-centric api
26
Linkvalue | Jean-Marie Lamodière
COMMUNICATION BETWEEN µS
27
Linkvalue | Jean-Marie Lamodière
28
Linkvalue | Jean-Marie Lamodière
SYNCHRONOUS COMMUNICATION
- PROS -

Easier to understand
(= method call)

Easier transition from monolith

Instant feedback to the client
29
Linkvalue | Jean-Marie Lamodière
SYNCHRONOUS COMMUNICATION
3030
User
Optin
Other service
depending on
1 optin
Register
Register
french user
Read 1 optin
Read
Linkvalue | Jean-Marie Lamodière
SYNCHRONOUS COMMUNICATION
- CONS -

Fanout : 1% slow calls more
probable when cascading calls

Beware of coupling !

Beware of distributed monolith !!
31
32
« Distributed monolith »
@tiffyshindo
Linkvalue | Jean-Marie Lamodière
ASYNCHRONOUS COMMUNICATION

Message broker

Reactive : event driven

Choregraphy over orchestration

Autonomy over authority :
each service copy the data it needs

Work well with CQRS / ES
33
Linkvalue | Jean-Marie Lamodière
ASYNCHRONOUS COMMUNICATION
34
Message brokerMessage broker
Message brokerMessage broker
User French user registered
Optin User optins changed
Other service
depending on
1 optin
Register
Read
Linkvalue | Jean-Marie Lamodière
COMMUNICATION TRAPS

Chatty communication = coupling
feature envy, wrong splitting…

Perf overhead : define « acceptable »
35
Linkvalue | Jean-Marie Lamodière
36
Linkvalue | Jean-Marie Lamodière
DESIGN FOR FAILURE

It will fail, have a plan!

Define what to do, to return

Define timeout for each call

Message hospital (dead letter queue)

Circuit breaker / back pressure

Blameless culture needed
37
Linkvalue | Jean-Marie Lamodière
NETFLIX CHAOS MONKEY

Randomly shut
down services

Cure developers
optimism ;)
38
Linkvalue | Jean-Marie Lamodière
SERVICE DISCOVERY

Each µs scales individualy : which
IP should we call ?

DNS in front of a load-balancer

Kubernetes services

Docker Swarm discovery
(libkv + consul/etcd/zookeeper)
39
Linkvalue | Jean-Marie Lamodière
CAP THEOREM
(Distributed Systems)

Choose 2 between consistency (C),
availability (A) and partition (P)

Avoid distributed transactions

Embrase eventual consistency

Use idempotent operations

Worker to clean inconsistency
40
Linkvalue | Jean-Marie Lamodière
41
Linkvalue | Jean-Marie Lamodière
MICROSERVICES CLIENTS

Libraries ok, 1 per language needed

No business logic in client :
avoid anemic CRUD microservices

To call a complex api (legacy,
external), build a facade service
42
Linkvalue | Jean-Marie Lamodière
CHANGE PROOF CLIENTS

Old and new api should cohexist

Postel's law : « be conservative in
what you do, be liberal in what you
accept from others »

Tolerant reader (Martin Fowler) :
ignore changes not impacting you
43
Linkvalue | Jean-Marie Lamodière
CHANGE PROOF CLIENTS
44
Linkvalue | Jean-Marie Lamodière
API GATEWAY

Avoid exposing µs to frontend

Hide spliting to new microservices

Handle authentication / roles

Pro-tips : Back-end for frontend,
1 gateway per front application
45
Linkvalue | Jean-Marie Lamodière
API GATEWAY
46
Microservice
Legacy
Monolith
Microservice Microservice
Android
API Gateway
Android
application
Public
Private
ReactJS
Web application
ReactJS
API Gateway
Linkvalue | Jean-Marie Lamodière
47
Linkvalue | Jean-Marie Lamodière
TESTING A MICROSERVICE

No end-to-end testing at µs level

Stub/mock others µs in functional tests

Have consumer-driven tests

No continuous integration = no µs!

One c.i. pipeline per microservice
48
Linkvalue | Jean-Marie Lamodière
END TO END TESTING

Test journeys (main features),
not user stories (already tested)

Goal : check wiring

Should be done in each front app

Can run in production
49
Linkvalue | Jean-Marie Lamodière
TESTING = TRUST
50
Involve a quality assurance member
in your feature team
Linkvalue | Jean-Marie Lamodière
ARCHITECT ROLE

Keep µs map up to date

Define communication between µs

Define automatic deploying,
monitoring and logging strategy

Adapt to change, like a city planner

Enforce team autonomy inside a µs
51
Linkvalue | Jean-Marie Lamodière
52
Linkvalue | Jean-Marie Lamodière
WHAT SHOULD µS KEEP COMMON ?

Rules : communication, logs...

Template to create new µs,
but no synchronization afterward

Violate DRY accross µs !

Shared code = coupling

Priority : autonomy
53
Linkvalue | Jean-Marie Lamodière
MONITORING / LOGGING TIPS

Pass a unique « correlation id »
to each sub-calls, including
messages and asynchronous calls

Make sure your APM supports
each language + versions

Have a look at Sysdig.org
54
Linkvalue | Jean-Marie Lamodière
55

Extreme Programming

TDD / BDD

S.O.L.I.D.

Loose coupling,
high cohesion

DDD

Hexagonal
Linkvalue | Jean-Marie Lamodière
BEFORE YOU START

microservices.io

martinfowler.com
/microservices/
/articles/microservices.html
/articles/microservice-trade-offs.html

groups.google.com
/forum/#!forum/microservices
56
Linkvalue | Jean-Marie Lamodière
ASYNCHRONOUS COMMUNICATION

blog.christianposta.com
Why Microservices Should Be
Event Driven:Autonomy vs Authority

reactivemanifesto.org
57
Lightbend.com (free)
Linkvalue | Jean-Marie Lamodière
TALKS

What I Wish I Had Known Before
Scaling Uber to 1000 Services
GOTO 2016 • Matt Ranney

Prenons soin de nos microservices
PHP Tour 2016 • SAMUEL ROZE

Meetic backend mutation with Symfony
SymfonyLive 2015 • J. Calabrese E. Broutin

Kafka event architecture at Meetic
Forum PHP 2015 • B. Pineau M. Robin
58
Linkvalue | Jean-Marie Lamodière
DDD RECOMMENDED BOOKS
59
leanpub.com (free)
Thank you!
Linkvalue | Jean-Marie Lamodière
60
Committed to innovate
LINKVALUE JEAN-MARIE
LAMODIERE
Build microservices
since 07/2015
@JMLamodiere
1935 CP

Weitere ähnliche Inhalte

Andere mochten auch (15)

Yachay 10
Yachay 10Yachay 10
Yachay 10
 
Vih sida
Vih  sidaVih  sida
Vih sida
 
Actividad 7
Actividad 7Actividad 7
Actividad 7
 
Animales que me rodean
Animales que me rodeanAnimales que me rodean
Animales que me rodean
 
Plan de gestion uso tic diapositivas
Plan de gestion uso tic diapositivasPlan de gestion uso tic diapositivas
Plan de gestion uso tic diapositivas
 
Actividad 1
Actividad 1Actividad 1
Actividad 1
 
Mujeres lectoras impenitentes
Mujeres lectoras impenitentesMujeres lectoras impenitentes
Mujeres lectoras impenitentes
 
Día do Libro no Martín Sarmiento
Día do Libro no Martín SarmientoDía do Libro no Martín Sarmiento
Día do Libro no Martín Sarmiento
 
Mujeres lectoras impenitentes
Mujeres lectoras impenitentesMujeres lectoras impenitentes
Mujeres lectoras impenitentes
 
My computer is being slow
My computer is being slowMy computer is being slow
My computer is being slow
 
Yachay 5
Yachay 5Yachay 5
Yachay 5
 
Yachay 29
Yachay 29Yachay 29
Yachay 29
 
Estrategiasparalacosechaespiritual 100503201217-phpapp02
Estrategiasparalacosechaespiritual 100503201217-phpapp02Estrategiasparalacosechaespiritual 100503201217-phpapp02
Estrategiasparalacosechaespiritual 100503201217-phpapp02
 
Algebra
AlgebraAlgebra
Algebra
 
Tutorial informes y formularios
Tutorial informes y formulariosTutorial informes y formularios
Tutorial informes y formularios
 

Ähnlich wie Les microservices, c'est pas automatique ! - Linkvalue Tech

Multi-Agency Multi-Media Interoperable Communication, Enabled By Redis: Paul ...
Multi-Agency Multi-Media Interoperable Communication, Enabled By Redis: Paul ...Multi-Agency Multi-Media Interoperable Communication, Enabled By Redis: Paul ...
Multi-Agency Multi-Media Interoperable Communication, Enabled By Redis: Paul ...
Redis Labs
 

Ähnlich wie Les microservices, c'est pas automatique ! - Linkvalue Tech (20)

Common Anti-patterns that Impede a Successful Digital Transformation
Common Anti-patterns that Impede a Successful Digital TransformationCommon Anti-patterns that Impede a Successful Digital Transformation
Common Anti-patterns that Impede a Successful Digital Transformation
 
Building DevOps in the Enterprise: Balancing Centralized and Decentralized Teams
Building DevOps in the Enterprise: Balancing Centralized and Decentralized TeamsBuilding DevOps in the Enterprise: Balancing Centralized and Decentralized Teams
Building DevOps in the Enterprise: Balancing Centralized and Decentralized Teams
 
Clone Clone Make: a better way to build
Clone Clone Make: a better way to buildClone Clone Make: a better way to build
Clone Clone Make: a better way to build
 
External should that be a microservice
External should that be a microserviceExternal should that be a microservice
External should that be a microservice
 
First Caracas MuleSoft Meetup Slides
First Caracas MuleSoft Meetup SlidesFirst Caracas MuleSoft Meetup Slides
First Caracas MuleSoft Meetup Slides
 
David Leslie - Testing at MACH Speed.pptx
David Leslie - Testing at MACH Speed.pptxDavid Leslie - Testing at MACH Speed.pptx
David Leslie - Testing at MACH Speed.pptx
 
Sea spin5 2013-notes
Sea spin5 2013-notesSea spin5 2013-notes
Sea spin5 2013-notes
 
Making microservices work
Making microservices workMaking microservices work
Making microservices work
 
Multi-Agency Multi-Media Interoperable Communication, Enabled By Redis: Paul ...
Multi-Agency Multi-Media Interoperable Communication, Enabled By Redis: Paul ...Multi-Agency Multi-Media Interoperable Communication, Enabled By Redis: Paul ...
Multi-Agency Multi-Media Interoperable Communication, Enabled By Redis: Paul ...
 
Let's talk about Coded Automation
Let's talk about Coded AutomationLet's talk about Coded Automation
Let's talk about Coded Automation
 
Continuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsContinuously Delivering Distributed Systems
Continuously Delivering Distributed Systems
 
Growing as a software craftsperson (part 1) From Pune Software Craftsmanship.
Growing as a software craftsperson (part 1)  From Pune Software Craftsmanship.Growing as a software craftsperson (part 1)  From Pune Software Craftsmanship.
Growing as a software craftsperson (part 1) From Pune Software Craftsmanship.
 
Lean Software Development & Kanban
Lean Software Development & KanbanLean Software Development & Kanban
Lean Software Development & Kanban
 
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
 
Novel_Value_Stream_Analysis_for_SAFe_-_ver_8.pdf
Novel_Value_Stream_Analysis_for_SAFe_-_ver_8.pdfNovel_Value_Stream_Analysis_for_SAFe_-_ver_8.pdf
Novel_Value_Stream_Analysis_for_SAFe_-_ver_8.pdf
 
Measuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in ActionMeasuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in Action
 
Improve existing code with confidence, supported by unit tests
Improve existing code with confidence, supported by unit testsImprove existing code with confidence, supported by unit tests
Improve existing code with confidence, supported by unit tests
 
Meetup slide 20_apr
Meetup slide 20_aprMeetup slide 20_apr
Meetup slide 20_apr
 
Settlers of DevOps - DevOpsDays Boston 2017
Settlers of DevOps - DevOpsDays Boston 2017Settlers of DevOps - DevOpsDays Boston 2017
Settlers of DevOps - DevOpsDays Boston 2017
 
The Changing Role of IT: From Service Managers to Advisors
The Changing Role of IT:From Service Managers to AdvisorsThe Changing Role of IT:From Service Managers to Advisors
The Changing Role of IT: From Service Managers to Advisors
 

Kürzlich hochgeladen

Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 

Kürzlich hochgeladen (20)

WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 

Les microservices, c'est pas automatique ! - Linkvalue Tech

  • 2. JEAN-MARIE LAMODIERE Build microservices since 07/2015 @JMLamodiere LES MICROSERVICES, C'EST PAS AUTOMATIQUE ! Linkvalue | Jean-Marie Lamodière 2 Microservices? Think twice! 1935 CP
  • 3. Linkvalue | Jean-Marie Lamodière ASHAMED OF YOUR MONOLITH?  Spaghetti code  Side effects  Team velocity decreasing  Hard to refactor  Bugs 3
  • 4. Linkvalue | Jean-Marie Lamodière 4
  • 5. Linkvalue | Jean-Marie Lamodière 5
  • 6. Linkvalue | Jean-Marie Lamodière PROBLEMS THEY SOLVE 1.Autonomy 2.Autonomy 3.Autonomy 6
  • 7. Linkvalue | Jean-Marie Lamodière PROBLEMS THEY SOLVE 1.Autonomy : deployment 2.Autonomy : langage, framework 3.Autonomy : scalability 7
  • 8. Linkvalue | Jean-Marie Lamodière 8
  • 9. Linkvalue | Jean-Marie Lamodière WHY AUTONOMY MATTERS?  Loosely coupled organisation = less coupled systems  Quality audit on windows vista : organizational structures = most important factor!  Team accountability 9
  • 10. Linkvalue | Jean-Marie Lamodière OTHER KEY BENEFITS  Easier for newcomers  Allows isolated POC  Teams scalability  Simpler code design  Easy refactoring 10
  • 11. Linkvalue | Jean-Marie Lamodière WHO USES IT?  Uber  Netflix  Amazon  Ebay  Sound Cloud  Groupon 11  Guilt  Zalando  Spotify  Meetic  M6 Web  Auchan
  • 12. Linkvalue | Jean-Marie Lamodière « Trade-offs » appears 24x in « Building Microservices » book 12
  • 13. Linkvalue | Jean-Marie Lamodière 13
  • 14. Linkvalue | Jean-Marie Lamodière TESTIMONY (45' talks published on )  « We had to fall back to a monolith, and retry when ready » – SAMUEL ROZE PHP Tour 2016 • Prenons soin de nos microservices  « I wish I had known... » – MATT RANNEY GOTO 2016 • What I Wish I Had Known Before Scaling Uber to 1000 Services 14
  • 15. Linkvalue | Jean-Marie Lamodière 15
  • 16. Linkvalue | Jean-Marie Lamodière WHAT IS SO COMPLEX ?  Boundaries : hard to find / change  Huuuge dev-ops stack  Distributed system  Failure handling  Monitoring  End-to-end testing 16
  • 17. Linkvalue | Jean-Marie Lamodière 17
  • 18. Linkvalue | Jean-Marie Lamodière BOUNDARIES : WHERE TO SPLIT?  Splitting = hard to change  Size ? Small enough, not smaller  Splitting by technical layers? no!  Things that should change together (« S » in S.O.L.I.D.)  Loose coupling, high cohesion 18
  • 19. Linkvalue | Jean-Marie Lamodière DDD* TO THE RESCUE! (* Domain Driven Design) Toolset to help domain experts and developers to refine and share domain knowledge, reflect it in the code base, and prioritize efforts. 19
  • 20. Linkvalue | Jean-Marie Lamodière MAKE THE IMPLICIT, EXPLICIT! 20 Copyright @DDDreboot ;)
  • 21. Linkvalue | Jean-Marie Lamodière SPLIT BY BOUNDED CONTEXT  Bounded context = Team sharing the same « ubiquitous language » (same terms)  Vertical, business-focus slice 21
  • 22. Linkvalue | Jean-Marie Lamodière WHEN TO SPLIT ?  When ready : technical stack chosen, architectural decisions taken, devs and ops willing to go, autonomous 2 pizza feature teams  When sure of a splitting point  Start with a monolith (!) to find them 22
  • 23. Linkvalue | Jean-Marie Lamodière CONWAY'S LAW « Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations » 23
  • 24. Linkvalue | Jean-Marie Lamodière 2ND LAW OF CONSULTING (Gerald Weinberg) 24
  • 25. Linkvalue | Jean-Marie Lamodière SPLITTING STRATEGY  Implement double-writing (microservice or legacy side)  Publish needed messages  One-shot data import script  Assert data is sync  Read from microservice 25
  • 26. Linkvalue | Jean-Marie Lamodière COMMUNICATION BETWEEN µS  No shared database!  Language agnostic (ex : rest / json)  If weakly typed (json), have a clear doc (optional? nullable?) or json-schema  Keep consistency. ex : pagination  Define minimal customer-centric api 26
  • 27. Linkvalue | Jean-Marie Lamodière COMMUNICATION BETWEEN µS 27
  • 28. Linkvalue | Jean-Marie Lamodière 28
  • 29. Linkvalue | Jean-Marie Lamodière SYNCHRONOUS COMMUNICATION - PROS -  Easier to understand (= method call)  Easier transition from monolith  Instant feedback to the client 29
  • 30. Linkvalue | Jean-Marie Lamodière SYNCHRONOUS COMMUNICATION 3030 User Optin Other service depending on 1 optin Register Register french user Read 1 optin Read
  • 31. Linkvalue | Jean-Marie Lamodière SYNCHRONOUS COMMUNICATION - CONS -  Fanout : 1% slow calls more probable when cascading calls  Beware of coupling !  Beware of distributed monolith !! 31
  • 33. Linkvalue | Jean-Marie Lamodière ASYNCHRONOUS COMMUNICATION  Message broker  Reactive : event driven  Choregraphy over orchestration  Autonomy over authority : each service copy the data it needs  Work well with CQRS / ES 33
  • 34. Linkvalue | Jean-Marie Lamodière ASYNCHRONOUS COMMUNICATION 34 Message brokerMessage broker Message brokerMessage broker User French user registered Optin User optins changed Other service depending on 1 optin Register Read
  • 35. Linkvalue | Jean-Marie Lamodière COMMUNICATION TRAPS  Chatty communication = coupling feature envy, wrong splitting…  Perf overhead : define « acceptable » 35
  • 36. Linkvalue | Jean-Marie Lamodière 36
  • 37. Linkvalue | Jean-Marie Lamodière DESIGN FOR FAILURE  It will fail, have a plan!  Define what to do, to return  Define timeout for each call  Message hospital (dead letter queue)  Circuit breaker / back pressure  Blameless culture needed 37
  • 38. Linkvalue | Jean-Marie Lamodière NETFLIX CHAOS MONKEY  Randomly shut down services  Cure developers optimism ;) 38
  • 39. Linkvalue | Jean-Marie Lamodière SERVICE DISCOVERY  Each µs scales individualy : which IP should we call ?  DNS in front of a load-balancer  Kubernetes services  Docker Swarm discovery (libkv + consul/etcd/zookeeper) 39
  • 40. Linkvalue | Jean-Marie Lamodière CAP THEOREM (Distributed Systems)  Choose 2 between consistency (C), availability (A) and partition (P)  Avoid distributed transactions  Embrase eventual consistency  Use idempotent operations  Worker to clean inconsistency 40
  • 41. Linkvalue | Jean-Marie Lamodière 41
  • 42. Linkvalue | Jean-Marie Lamodière MICROSERVICES CLIENTS  Libraries ok, 1 per language needed  No business logic in client : avoid anemic CRUD microservices  To call a complex api (legacy, external), build a facade service 42
  • 43. Linkvalue | Jean-Marie Lamodière CHANGE PROOF CLIENTS  Old and new api should cohexist  Postel's law : « be conservative in what you do, be liberal in what you accept from others »  Tolerant reader (Martin Fowler) : ignore changes not impacting you 43
  • 44. Linkvalue | Jean-Marie Lamodière CHANGE PROOF CLIENTS 44
  • 45. Linkvalue | Jean-Marie Lamodière API GATEWAY  Avoid exposing µs to frontend  Hide spliting to new microservices  Handle authentication / roles  Pro-tips : Back-end for frontend, 1 gateway per front application 45
  • 46. Linkvalue | Jean-Marie Lamodière API GATEWAY 46 Microservice Legacy Monolith Microservice Microservice Android API Gateway Android application Public Private ReactJS Web application ReactJS API Gateway
  • 47. Linkvalue | Jean-Marie Lamodière 47
  • 48. Linkvalue | Jean-Marie Lamodière TESTING A MICROSERVICE  No end-to-end testing at µs level  Stub/mock others µs in functional tests  Have consumer-driven tests  No continuous integration = no µs!  One c.i. pipeline per microservice 48
  • 49. Linkvalue | Jean-Marie Lamodière END TO END TESTING  Test journeys (main features), not user stories (already tested)  Goal : check wiring  Should be done in each front app  Can run in production 49
  • 50. Linkvalue | Jean-Marie Lamodière TESTING = TRUST 50 Involve a quality assurance member in your feature team
  • 51. Linkvalue | Jean-Marie Lamodière ARCHITECT ROLE  Keep µs map up to date  Define communication between µs  Define automatic deploying, monitoring and logging strategy  Adapt to change, like a city planner  Enforce team autonomy inside a µs 51
  • 52. Linkvalue | Jean-Marie Lamodière 52
  • 53. Linkvalue | Jean-Marie Lamodière WHAT SHOULD µS KEEP COMMON ?  Rules : communication, logs...  Template to create new µs, but no synchronization afterward  Violate DRY accross µs !  Shared code = coupling  Priority : autonomy 53
  • 54. Linkvalue | Jean-Marie Lamodière MONITORING / LOGGING TIPS  Pass a unique « correlation id » to each sub-calls, including messages and asynchronous calls  Make sure your APM supports each language + versions  Have a look at Sysdig.org 54
  • 55. Linkvalue | Jean-Marie Lamodière 55  Extreme Programming  TDD / BDD  S.O.L.I.D.  Loose coupling, high cohesion  DDD  Hexagonal
  • 56. Linkvalue | Jean-Marie Lamodière BEFORE YOU START  microservices.io  martinfowler.com /microservices/ /articles/microservices.html /articles/microservice-trade-offs.html  groups.google.com /forum/#!forum/microservices 56
  • 57. Linkvalue | Jean-Marie Lamodière ASYNCHRONOUS COMMUNICATION  blog.christianposta.com Why Microservices Should Be Event Driven:Autonomy vs Authority  reactivemanifesto.org 57 Lightbend.com (free)
  • 58. Linkvalue | Jean-Marie Lamodière TALKS  What I Wish I Had Known Before Scaling Uber to 1000 Services GOTO 2016 • Matt Ranney  Prenons soin de nos microservices PHP Tour 2016 • SAMUEL ROZE  Meetic backend mutation with Symfony SymfonyLive 2015 • J. Calabrese E. Broutin  Kafka event architecture at Meetic Forum PHP 2015 • B. Pineau M. Robin 58
  • 59. Linkvalue | Jean-Marie Lamodière DDD RECOMMENDED BOOKS 59 leanpub.com (free)
  • 60. Thank you! Linkvalue | Jean-Marie Lamodière 60 Committed to innovate LINKVALUE JEAN-MARIE LAMODIERE Build microservices since 07/2015 @JMLamodiere 1935 CP