Mature Microservices & How to Operate Them • Sarah Wells • YOW! 2019

Optimize your microservices architecture for speed, resilience, and visibility, and learn how to operate them effectively to increase developer happiness and reduce downtime.

Key takeaways
  • To optimize for speed, consider using a release frequency of 10 times a day.
  • Build resilience into systems to handle failures, as high-performing teams do.
  • Use a service mesh to improve visibility and control in microservices architecture.
  • Automate testing, so you can focus on development and not manually test every change.
  • Use logging to track changes and diagnose issues.
  • Monitor changes to identify failure patterns and resource usage.
  • Release code frequently to reduce the blast radius and minimize downtime.
  • Plan for what happens when people move on, and ensure knowledge sharing and documentation.
  • Consider the costs of complexity and avoid building unnecessary complexity.
  • Verify ownership of changes and ensure developers review and understand the code.
  • Report metrics, such as release frequency, to track performance and progress.
  • Prioritize developers’ happiness and avoid imposing too much complexity.
  • Use visualization tools to simplify complex systems and make them more understandable.
  • Avoid burnout and inefficient use of resources by releasing code frequently.
  • Consider the cultural shift required when moving from monolithic architecture to microservices.
  • Generate unique IDs for changes and use them to track issues.
  • Use GitHub to track changes and issue requests.
  • Consider the value of publishing and releasing new content regularly.
  • Use monitoring tools to track performance and identify issues.
  • Plan for and prepare for failures, rather than just reacting to them.
  • Document changes and ensure knowledge sharing within teams.
  • Use code reviews to verify changes and ensure quality.
  • Consider the business value of moving fast and avoid being slowed down by bureaucracy.