Learning · Microservices

Microservices

Microservices only pay for their complexity when a few fundamentals are solid. These notes cover the aspects that decide whether you get independence — or a distributed monolith.

Topics

  • Service boundaries

    Why clear service boundaries are the most important part of microservices — and how to draw them without building a distributed monolith.

  • Data ownership

    Why each service must own its data — and why shared databases quietly undo microservice independence.

  • Sync vs async communication

    When to call another service and when to publish an event — and how chatty APIs recreate the monolith over the network.

  • Consistency and sagas

    How to keep business invariants correct across services without distributed transactions — outbox, idempotency, and compensating workflows.

  • Resilience and failure

    Timeouts, retries, backoff, bulkheads, and circuit breakers — designing so one slow dependency does not take down the platform.

  • Security

    Zero-trust between services, identity, authorization, secrets, and protecting data in a distributed system — what seniors must own beyond the perimeter.

  • Contracts and versioning

    How to evolve APIs and events without lockstep releases — compatibility, consumer-driven expectations, and deprecation discipline.

  • Observability

    Logs, metrics, and traces across service boundaries — correlation, SLOs, and debugging distributed failures without guessing.

  • Deployability and testing

    Shipping services independently — contract tests, environments, progressive delivery, and what “done” means when the system is distributed.