All hope abandon ye who enters here
  1. Monolith is hard to work on:
    • Iterations are slow
    • Releases are hard (code changes from under you)
  2. Different components of the system should have different performance targets:
    • Written in different languages
    • Run on different machines
  3. Migration difficulty:
    • Maintain public API contracts
  4. Microservices shift complexity into the network:
    • Who calls who?
    • Many moving parts to fulfill simple requests
  5. Monzo:
    • 1500 services
  6. Should we start with Microservices? (it depends)
    • Cost of replacing one part is low
    • Monolith is more flexible in restructuring
  7. Splitting:
    • Bounded Contexts:
      • From Domain Driven Design by Eric Evans
      • Idea of a context (a model of what we are trying to do)
      • Split the services based on what they do
      • Product teams (think THG)
    • Conway's Law:
      • Systems reflect the communication process between teams
    • Airbnb:
      • They kept a lot of their code themselves
      • Intercepted a call and redirected what it did
      • Routing events produced by the databases
  8. Monorepo vs Multi-repo:
    • Every developer has all the code checked out
    • A lot more management overhead
    • Do not recompile all of the code
    • As always, it depends...
  9. Strangler Pattern:
    • Write stuff "around" the existing system
    • Intercept requests and reroute them to new systems
    • Nginx proxy could do that for you
  10. When to redactor a system and when to rewrite it?
  1. A system where the cloud is the primary deployment system
  2. Reasons:
    • Lots of services available
    • Scaling is easy
    • Dynamic scaling is easy (load in the morning, nothing for the rest of the day)
    • CapEX VS OpEX --> Less capital involvement
  3. Spectrum:
    • IAAS -- infrastructure as a service
    • CoAAS -- Container as a service
    • PAAS -- platform as a service
    • FAAS -- function as a service
  4. Containers: -
  1. Sam Newman:
    • Building Microservices
    • Monolith to Microservices
  2. Intro:
    1. Microservices in modern world
    2. What problem are they solving
    3. Why they may be a worse choice for a company
    4. Microservices should reflect internal company structure

Article on Monzo