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

Who slowed us down? I want my monolith back!

Who slowed us down? I want my monolith back!

Talk given at microXchg 2017
https://www.youtube.com/watch?v=ZNLKvWRDgto

Markus Krogemann

February 16, 2017
Tweet

More Decks by Markus Krogemann

Other Decks in Programming

Transcript

  1. Startup with established product and growing customer base Business based

    on a monolithic application Occasional crashes and overload issues CTO hired to address the problems
  2. “Ever since we started with the new architecture, it has

    taken us much longer to get any feature out of the door.” “No story ts into our two-week sprints anymore.”
  3. Premature adoption of Microservices Martin Fowler — MicroservicePremium "So my

    primary guideline would be don't even consider microservices unless you have a system that's too complex to manage as a monolith. The majority of software systems should be built as a single monolithic application. Do pay attention to good modularity within that monolith, but don't try to separate it into separate services."
  4. Mary Poppendiek at GOTO Berlin 2016 "... so you have

    to gure out how to migrate. ... if you take that company's solution, it's their solution to their problem. ... at amazon, the service orientated architecture took ve or six years. ... every one of those things took that long to go from an idea to actually developed at scale. ... and if you think you can do it in 5 months, you're crazy. Ain't gonna happen."
  5. Functional, dynamically typed language Immutable data structures, Pattern matching Implements

    the Actor Model Fault tolerant, Distributed runtime system Hot code swapping, no need to stop the system The AXD301 achieved 99.9999999% reliability
  6. Functional Programming with immutable data structures Actor Model: Isolation &

    Share nothing architecture Actor Model: Communication only through message passing Let it crash: Fault tolerance through supervision trees Good skills? Probably!
  7. Enter Elixir Umbrella projects $ mix new abc --umbrella $

    cd abc/apps $ mix new a $ mix new b --sup $ mix new c --sup Deployments: All, some or one app per node Location transparency: Works in one node → Will also work in distributed mode Supervision trees often represent bounded contexts
  8. Dev teams are quick to adopt Microservice style... ...but required

    capabilities may not be in place. And they are scarce, not easy or quick to build up. Team skills will outweigh architectural style! Consider Erlang and Elixir :-)
  9. References Martin Fowler • MicroservicePremium GOTO 2016 • The Future

    of Software Engineering • Mary Poppendieck The True story about why we invented Erlang and A few things you don’t want to tell your Manager • Mike Williams AXD 301 • Ericsson Review No. 1, 1998 Erlang's nine nines Joe Armstrong's PhD thesis on the creation of Erlang José Valim • Elixir in times of microservices