advanced
Microservices and distributed systems
Design service boundaries, communication, consistency, resilience, operations, and patterns for systems that fail across process and network boundaries.
Distributed systems interviews focus on failure, consistency, and operability—not on drawing many boxes. Expect decomposition, sync vs async communication, data ownership, sagas/outbox/inbox, idempotency, resilience (timeouts, retries, circuit breakers), and day-2 operations (discovery, config, tracing, versioning).
On interviews: walk through a failure scenario (downstream timeout, duplicate message, partial outage) and the controls you would add.
Common pitfalls: distributed monolith, shared databases, chatty sync chains, and retries without idempotency.
Checklist:
- One service owns its data.
- Prefer async for loose coupling when latency allows.
- Design for partial failure and observability.
- Version APIs with compatibility in mind.