How building a portable escape room made me a better microservices developer - William Brander

Learn how building a portable escape room led to key microservices insights, from defining service boundaries and monitoring distributed systems to managing complex state flows.

Key takeaways
  • Service boundaries should align with business rules to keep complexity encapsulated and maintain simpler consistency boundaries

  • When monitoring distributed systems, consider:

    • The area (infrastructure, application, capability)
    • The concern (health, performance, capacity)
    • The interaction type (passive, reactive, proactive)
  • Queue length alone is not enough for monitoring - also consider processing time, critical time, and message age in queue

  • The messaging bridge pattern allows integrating different messaging technologies (like MQTT and RabbitMQ) without either system needing to know about the other

  • Keep aggregate roots simple and well-defined around clear business capabilities rather than technical boundaries

  • State machines (like the escape room run controller) can manage complex flows while keeping individual components simple and focused

  • Use polyglot messaging to let each component use the most appropriate messaging technology for its needs

  • Service boundaries should be defined by verbs (actions/capabilities) rather than nouns (entities)

  • When modernizing legacy systems, use messaging bridges to gradually migrate components without big-bang rewrites

  • Monitoring should provide actionable insights beyond basic health checks - look for patterns and trends that indicate potential issues