Skip to content

Microservices

  • The term “microservice” is widely discussed and often referred to as a buzzword in the technology industry.
  • Microservices are popular due to their scalability, extensibility, and resilience when implemented correctly.
  • The conversation aims to address common challenges and best practices for effective use of microservices.
  • A favored definition: a microservice is an independently deployable unit focused on performing a single job very well, communicating via clearly defined interfaces.
  • Successful microservice design emphasizes complete independence between components.
  • Needing to deploy multiple services together frequently suggests incorrect service boundaries or unnecessary coupling.
  • Communication between microservices must strictly occur through well-defined interfaces; direct access to another service’s data or memory is not allowed.
  • Following Jeff Bezos’s API mandate: no direct linking, data store reads, shared memory, or backdoors; only service interface calls over the network.
  • Interface forms may include API calls, message passing, or event-driven mechanisms, but must always maintain clear contracts or schemas.
  • It is crucial to never break backwards compatibility for these interfaces.
  • Properly implemented microservices foster flexibility—allowing independent team work and rapid, low-risk feature releases.
  • Ideally, if one microservice fails, others continue functioning without interruption.
  • Service failures should not cascade to impact high-value or unrelated services.
  • Building in patterns to manage cascading failures and resilience is necessary at scale; detailed guidance will follow in later modules.
  • The high-level microservices overview invites deeper exploration into their detailed implementation.
  • Emphasis on thoughtful adoption, ensuring microservices are used only when appropriate and built correctly.