Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Microservice Everything Redux Eng

Microservice Everything Redux Eng

Microservice everything redux - English version

B5405045448a182b8ee12236ec63d8b0?s=128

Jakub Marchwicki

March 28, 2019
Tweet

Transcript

  1. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 1/98 MICROSERVICES, MICROSERVICES, MICROSERVICES EVERYWHERE

    MICROSERVICES EVERYWHERE Jakub Marchwicki [@kubem]
  2. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 2/98 @kubem ~ http://jakub.marchwicki.pl the

    5 why’s of microservices the 5 why’s of microservices Microservices? Microservices? Microservices? Microservices? Microservices? Why? Why? Oh, why? Oh dear God, why? Damn it! Why?
  3. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 3/98 Software engineer Chief Mob

    O cer Jakub Marchwicki <@kubem> http://jakub.marchwicki.pl
  4. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 4/98 @kubem ~ http://jakub.marchwicki.pl microservices,

    how it all started? microservices, how it all started? All names, characters, and incidents portrayed in this story are ctitious. No identi cation with actual persons (living or deceased), places, and buildings is intended or should be inferred.
  5. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 5/98 @kubem ~ http://jakub.marchwicki.pl on

    day one there was a lonely architect sitting on day one there was a lonely architect sitting
  6. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 6/98 @kubem ~ http://jakub.marchwicki.pl in

    a tower made of ivory in a tower made of ivory sitting in an uncertainty and sadness
  7. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 7/98 @kubem ~ http://jakub.marchwicki.pl and

    the architect said and the architect said
  8. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 8/98 @kubem ~ http://jakub.marchwicki.pl let

    there be µservices let there be µservices
  9. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 9/98 @kubem ~ http://jakub.marchwicki.pl let

    there be small modules let there be small modules which have only a single reason to change
  10. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 10/98 @kubem ~ http://jakub.marchwicki.pl let

    the modules communicate let the modules communicate over well de ned interfaces
  11. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 11/98 @kubem ~ http://jakub.marchwicki.pl let

    the output of one module let the output of one module becomes the input of the other
  12. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 12/98 @kubem ~ http://jakub.marchwicki.pl and

    the architect saw it was good and the architect saw it was good
  13. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 13/98 @kubem ~ http://jakub.marchwicki.pl and

    the architect called it and the architect called it a distributed system
  14. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 14/98 @kubem ~ http://jakub.marchwicki.pl and

    developers seen it and developers seen it and it was good
  15. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 15/98 @kubem ~ http://jakub.marchwicki.pl and

    there was evening, and there was morning and there was evening, and there was morning (Genesis. 1, 1-25)
  16. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 16/98

  17. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 17/98 @kubem ~ http://jakub.marchwicki.pl microservices

    microservices — James Lewis and Martin Fowler “the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API
  18. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 18/98

  19. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 19/98 @kubem ~ http://jakub.marchwicki.pl µservices

    µservices Small business domain Independent; independently deployed Running in it’s own process Managing it’s data Loosely integrated using common communication protocols
  20. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 20/98

  21. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 21/98 monolith are bad -

    mmkey?? monolith are bad - mmkey??
  22. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 22/98 @kubem ~ http://jakub.marchwicki.pl microservices

    are good microservices are good Clean code Single responsibility modules Faster than monoliths Easier to manage Easier to scale Docker, Docker, Docker, Docker potentialy faster to deploy, works faster independent teams, independent codebases at this point we should at least mention Docker
  23. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 23/98 microservices are good -

    mmmkey? microservices are good - mmmkey?
  24. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 24/98 @kubem ~ http://jakub.marchwicki.pl (…

    ) collection of task-oriented or dedicated systems that pool their resources and capabilities together to create a new, more complex system which offers more functionality and performance than simply the sum of the constituent systems
  25. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 25/98 @kubem ~ http://jakub.marchwicki.pl system

    of systems system of systems (… ) collection of task-oriented or dedicated systems that pool their resources and capabilities together to create a new, more complex system which offers more functionality and performance than simply the sum of the constituent systems
  26. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 26/98

  27. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 27/98 @kubem ~ http://jakub.marchwicki.pl so

    what can possibly go wrong? so what can possibly go wrong?
  28. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 28/98

  29. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 29/98

  30. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 30/98 // Exibit A +-------------+

    | | | Resources | | service | | | +-------------+ //
  31. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 31/98 // Exibit A +------------------+

    +-------------+ | | | | | Access control | | Resources | | | | service | +------------------+ | | +-------------+ //
  32. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 32/98 // Exibit A +------------------+

    +-------------+ | | | | | Access control | | Resources | | | | service | +------------------+ | | +-------------+ +----------------+ | | | Users | | repository | | | +----------------+ //
  33. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 33/98 // Exibit A +------------------+

    +-------------+ | | | | | Access control | | Resources | | | | service | +------------------+ | | +-+-----------+ ^ | | +----------------+ | | | | | Users | | | repository | | | | | +----------------+ (1) + //
  34. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 34/98 // Exibit A +------------------+

    +-------------+ | | | | | Access control | | Resources | | | | service | +------------------+ | | +-+-------+---+ ^ | | | | | +----------------+ | | | | | | | Users | | | (2) | repository | | +-----------> | | | +----------------+ (1) + //
  35. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 35/98 // Exibit A +------------------+

    +-------------+ | | | | | Access control | | Resources | | | | service | +------------------+ | +<---------+ +-+-------+---+ (3) | ^ | | | | | | | +----------------+ | | | | | | | Users | | | (2) | repository | | +-----------> | | | +----------------+ (1) + //
  36. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 36/98 // Exibit A +------------------+

    +-------------+ | | | | (4) | Access control | | Resources +------------>+ | | service | +------------------+ | +<---------+ +-+-------+---+ (3) | ^ | | | | | | | +----------------+ | | | | | | | Users | | | (2) | repository | | +-----------> | | | +----------------+ (1) + //
  37. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 37/98 // Exibit A +------------------+

    +-------------+ | | | | (4) | Access control | | Resources +------------>+ | | service | +------------------+ | +<---------+ +-+-------+---+ (3) | ^ | | | | | | | | | | +----------------+ | | | | | | | | | Users | | | | (2) | repository | | | +-----------> | | | | +----------------+ (1) | + | (5) v //
  38. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 38/98 @kubem ~ http://jakub.marchwicki.pl microservices

    journey microservices journey
  39. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 39/98 @kubem ~ http://jakub.marchwicki.pl microservices

    journey microservices journey — Christopher Alexander “A Piecemeal Growth is the process of building something a step at a time. Each step consists of evaluating the current system, deciding what should be done next (what should be fixed or improved) and then adding a piece or making a change.
  40. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 40/98 @kubem ~ http://jakub.marchwicki.pl a

    scoring engine EXIBIT B EXIBIT B -- 2009
  41. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 41/98 +-----------------------------------------------+ | | |

    +-----------------------------------+ | | | | | | | Boundary: SOAP | | | | | | | +-----------------------------------+ | | | | | | | EJB | | | | | | | +-----------------------------------+ | | | | | | +--------+ +-------+ +----------+ | | | | | | | | | | | JAX-WS | | JPA | | DROOLS | | | | | | | | | | | +--------+ +-------+ +----------+ | | | | | | JBoss 4.2.x | | | +-----------------------------------------------+
  42. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 42/98 @kubem ~ http://jakub.marchwicki.pl Can

    you visualize this? A UI? Webservices are so hard to sell. business value? business value?
  43. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 43/98 +-----------------------------------------------+ | | |

    +--------------------+--------------+ | | | | | | | | Boundary: SOAP | JSF | | | | | | | | +--------------------+--------------+ | | | | | | | EJB | | | | | | | +-----------------------------------+ | | | | | | +--------+ +-------+ +----------+ | | | | | | | | | | | JAX-WS | | JPA | | DROOLS | | | | | | | | | | | +--------+ +-------+ +----------+ | | | | | | JBoss 4.2.x | | | +-----------------------------------------------+
  44. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 44/98 +-----------------------------------------------+ | | |

    +-----------------+-----------------+ | +---------------+ | | | | | | | | | Boundary: SOAP | REST endpoint | <--------------+ | Dedicated | | | | | | | mobile | | +-----------------+-----------------+ | | Single Page | | | | | | Application | | | EJB | | | | | | | | | | | +-----------------------------------+ | +---------------+ | | | | | +--------+ +-------+ +----------+ | | | | | | | | | | | JAX+WS | | JPA | | DROOLS | | | | | | | | | | | +--------+ +-------+ +----------+ | | | | | | JBoss 4.2.x | | | +-----------------------------------------------+
  45. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 45/98 @kubem ~ http://jakub.marchwicki.pl Keep

    separate things separately NOTE TO SELF NOTE TO SELF
  46. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 46/98 @kubem ~ http://jakub.marchwicki.pl microservices

    checklist microservices checklist Small business domain Independent; independently deployed Running in it’s own process Managing it’s data Loosely integrated using common communication protocols     
  47. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 47/98 @kubem ~ http://jakub.marchwicki.pl microservices

    checklist microservices checklist Small business domain Independent; independently deployed Running in it’s own process Managing it’s data Loosely integrated using common communication protocols     
  48. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 48/98 @kubem ~ http://jakub.marchwicki.pl retrospective

    retrospective
  49. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 49/98 @kubem ~ http://jakub.marchwicki.pl —

    James Lewis “ We define libraries as components that are linked into a program and called using in-memory calls, while services are out-of-process components who communicate with remote procedure calls
  50. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 50/98 @kubem ~ http://jakub.marchwicki.pl consumer

    driven contracts consumer driven contracts (… ) drives the development of the Provider from its Consumers point of view, which means consumer describes what and how it wants to receive the information (in a form of a contract) and then provider implements the service following the given contract.
  51. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 51/98 @kubem ~ http://jakub.marchwicki.pl huge

    image repository EXIBIT C EXIBIT C -- 2007
  52. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 52/98 +--------------------------------------+ | | |

    web / controllers | | | +-----------+--------------------------+ | | (1) ^ | | v | (5) | +-------------------------------------+ | | | application logic | | | +--+-------------------------+--------+ | | | (2) ^ | (4) | | | v | (3) v | +----------+--+ +------------------+ | | | | | MySQL | | filesystem | | | | | +-------------+ +------------------+
  53. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 53/98 @kubem ~ http://jakub.marchwicki.pl can’t

    work with it The search function is unbelievably slow business value? business value?
  54. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 54/98 @kubem ~ http://jakub.marchwicki.pl business

    as usual There is no such thing as legacy — what can’t be killed, becomes
  55. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 55/98 Proxy +-----+ +------------------+ |

    | /* | | +----------------+--------------------------> | | | | | | The Old stuff | | | | | +--------+ | | | | | | | | | +------------------+ | | | | | | | | | Elastic Search | | | | data push | | | | | | | | | | | +------------------+ | | | | /search | | | | | +--------------------------> | | <------+ | | | Elastic Search | | | | index | | | | | +-----+ +------------------+
  56. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 56/98 @kubem ~ http://jakub.marchwicki.pl microservices

    checklist microservices checklist Small business domain Independent; independently deployed Running in it’s own process Managing it’s data Loosely integrated using common communication protocols     
  57. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 57/98 @kubem ~ http://jakub.marchwicki.pl retrospective

    retrospective
  58. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 58/98 @kubem ~ http://jakub.marchwicki.pl Andrew

    Tanenbaum — Distributed Systems (2007) - Principles & Paradigms “(… ) as every parent of a small child knows, converting a large object into small fragments is considerably easier than the reverse process.
  59. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 59/98 Write through update query

    +--------------------------+ +----------------------------------+ -------------------->| update denormalized view |-------->| update persistent (master) store | +--------------------------+ +----------------------------------+ Write behind update query +----------------------------------+ +---------------------------+ ---------------->| update persistent (master) store |----------->| update denormalized views | +----------------------------------+ +---------------------------+ Read through read query +--------------------------+ +---------------------------+ <---------------------| update denormalized view |<--------------| read persistent store | +--------------------------+ +---------------------------+
  60. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 60/98 @kubem ~ http://jakub.marchwicki.pl lessons

    learned lessons learned from all these projects
  61. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 61/98 @kubem ~ http://jakub.marchwicki.pl start

    small start small
  62. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 62/98 @kubem ~ http://jakub.marchwicki.pl slightly

    less distributed systems monoliths are
  63. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 63/98 @kubem ~ http://jakub.marchwicki.pl don’t

    diagram - trace and visualize don’t diagram - trace and visualize
  64. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 64/98 @kubem ~ http://jakub.marchwicki.pl let

    the application tell you where it spends time
  65. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 65/98 @kubem ~ http://jakub.marchwicki.pl automate,

    automate, automate automate, automate, automate
  66. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 66/98 @kubem ~ http://jakub.marchwicki.pl event

    a single WAR cannot be deployed manually
  67. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 67/98 @kubem ~ http://jakub.marchwicki.pl but

    we’ve already started! but we’ve already started! what do our services do when nobody watches?
  68. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 68/98

  69. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 69/98 @kubem ~ http://jakub.marchwicki.pl distributed

    computing distributed computing Leslie Lamport — Microsoft mailing list 1987 A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.
  70. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 70/98 @kubem ~ http://jakub.marchwicki.pl distributed

    computing distributed computing
  71. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 71/98 @kubem ~ http://jakub.marchwicki.pl fallacies

    of distributed computing fallacies of distributed computing — 1994 - 1998 (is) a set of assertions made by L Peter Deutsch and others at Sun Microsystems describing false assumptions that programmers new to distributed applications invariably make
  72. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 72/98 @kubem ~ http://jakub.marchwicki.pl

  73. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 73/98 @kubem ~ http://jakub.marchwicki.pl in

    other words in other words
  74. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 74/98 @kubem ~ http://jakub.marchwicki.pl network

    sucks
  75. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 75/98 @kubem ~ http://jakub.marchwicki.pl load

    balance load balance all the things
  76. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 76/98 @kubem ~ http://jakub.marchwicki.pl …

    before choosing a load balancer … before choosing a load balancer
  77. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 77/98 @kubem ~ http://jakub.marchwicki.pl AWS

    Elastic Load Balancer nginx Ribbon + Eureka Ribbon + Consul Kubernetes
  78. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 78/98 @kubem ~ http://jakub.marchwicki.pl load

    balancing load balancing
  79. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 79/98 @kubem ~ http://jakub.marchwicki.pl server-side

    load balancing server-side load balancing
  80. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 80/98 @kubem ~ http://jakub.marchwicki.pl client-side

    load balancing client-side load balancing
  81. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 81/98 @kubem ~ http://jakub.marchwicki.pl Client-Side

    Service Discovery / Load balancing Service registers itself in a central repository. The repository also provides an information about other services availability. Other services request the information and autonomously decide which instances are called. Server-Side Service Discovery / Load balancing Service registers itself in a central repository. Other services access the repository (single address), which internally forwards the request to an available instance.
  82. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 82/98 @kubem ~ http://jakub.marchwicki.pl …

    before choosing a load balancer … before choosing a load balancer
  83. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 83/98 @kubem ~ http://jakub.marchwicki.pl brewer’s

    theorem (cap theorem) brewer’s theorem (cap theorem) — 1998 (… ) it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees: Consistency, Availability and Partition tolerance.
  84. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 84/98 @kubem ~ http://jakub.marchwicki.pl Consistency

    Every read receives the most recent write or an error Availability Every request receives a (non-error) response – without the guarantee that it contains the most recent write Partition tolerance The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes
  85. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 85/98 @kubem ~ http://jakub.marchwicki.pl cap

    + network fallacies cap + network fallacies
  86. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 86/98 @kubem ~ http://jakub.marchwicki.pl either

    Consistent or Available when Partitioned
  87. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 87/98 @kubem ~ http://jakub.marchwicki.pl consistency

    vs availability consistency vs availability CP All data is consistent (single store)
  88. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 88/98 @kubem ~ http://jakub.marchwicki.pl consistency

    vs availability consistency vs availability AP Data is distributed
  89. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 89/98

  90. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 90/98 @kubem ~ http://jakub.marchwicki.pl …

    before choosing a load balancer … before choosing a load balancer
  91. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 91/98 @kubem ~ http://jakub.marchwicki.pl cap

    + network latencies cap + network latencies
  92. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 92/98 @kubem ~ http://jakub.marchwicki.pl in

    the absence of partitions, one has to choose between
  93. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 93/98 @kubem ~ http://jakub.marchwicki.pl pacelc

    theorem pacelc theorem — Daniel J. Abadi 2012 Ignoring the consistency/latency tradeoff of replicated systems is a major oversight [in CAP], as it is present at all times during system operation, whereas CAP is only relevant in the arguably rare case of a network partition.
  94. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 94/98 @kubem ~ http://jakub.marchwicki.pl …

    before choosing a load balancer … before choosing a load balancer
  95. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 95/98 microservices are simple… microservices

    are simple…
  96. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 96/98 … but ain’t easy

    … but ain’t easy
  97. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 97/98 questions? questions?

  98. 3/28/2019 Microservices, microservices everywhere file:///home/jakub/workspaces/slides/microservices-microservice_everything/slides.html?print-pdf#/ 98/98 @kubem ~ http://jakub.marchwicki.pl @kubem

    ~ http://jakub.marchwicki.pl @kubem . http://speakerdeck.com/kubamarchwicki/microservice-everything-redux-eng jakub.marchwicki@casumo.com http://jakub.marchwicki.pl/