$30 off During Our Annual Pro Sale. View Details »

Microservice Everything Redux Eng

Microservice Everything Redux Eng

Microservice everything redux - English version

Jakub Marchwicki

March 28, 2019
Tweet

More Decks by Jakub Marchwicki

Other Decks in Technology

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]

    View Slide

  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?

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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??

    View Slide

  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

    View Slide

  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?

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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?

    View Slide

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

    View Slide

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

    View Slide

  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 |
    | |
    +-------------+
    //

    View Slide

  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 | +------------------+
    | |
    +-------------+
    //

    View Slide

  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 |
    | |
    +----------------+
    //

    View Slide

  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)
    +
    //

    View Slide

  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)
    +
    //

    View Slide

  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)
    +
    //

    View Slide

  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)
    +
    //

    View Slide

  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
    //

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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 |
    | |
    +-----------------------------------------------+

    View Slide

  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?

    View Slide

  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 |
    | |
    +-----------------------------------------------+

    View Slide

  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 |
    | |
    +-----------------------------------------------+

    View Slide

  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

    View Slide

  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





    View Slide

  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





    View Slide

  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

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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 |
    | | | |
    +-------------+ +------------------+

    View Slide

  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?

    View Slide

  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

    View Slide

  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 |
    | | | |
    +-----+ +------------------+

    View Slide

  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





    View Slide

  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

    View Slide

  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.

    View Slide

  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 |
    +--------------------------+ +---------------------------+

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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?

    View Slide

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

    View Slide

  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.

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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…

    View Slide

  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

    View Slide

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

    View Slide

  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
    [email protected]
    http://jakub.marchwicki.pl/

    View Slide