Bootstrapping Microservices • Ashley Davis & Damian Maclennan

Learn proven patterns for building resilient microservices, from right-sizing and loose coupling to observability and testing. Get practical guidance on when and how to adopt microservices.

Key takeaways
  • Microservices should be right-sized for their purpose rather than arbitrarily small - focus on logical business responsibilities over technical concerns

  • Sharing databases between microservices is a critical anti-pattern that breaks loose coupling and eliminates key benefits like fault isolation

  • Having services communicate too synchronously creates tight coupling and fragile systems - aim for asynchronous communication where possible

  • Local development and testing capability is essential - services need to be testable on developer machines before moving to higher environments

  • Start with proper modeling of the business domain before splitting into services - don’t start with the technical architecture first

  • Microservices add complexity that magnifies existing problems - ensure fundamentals like CI/CD and testing are solid before adopting

  • Consider a hybrid approach with a monolith core and strategic microservices around the edges rather than going fully distributed

  • Good candidates for microservices include computationally intensive tasks, security-sensitive components, and reusable capabilities like notifications

  • Proper observability and monitoring become critical with distributed systems - invest in tooling to understand system behavior

  • Breaking services out gradually based on business needs is better than forcing everything into microservices upfront