Learn Microservices
Split a system into independently deployable services - and keep them consistent, reliable and observable.
About this track
Microservices let large teams build, deploy and scale parts of a system independently - at the price of network calls, distributed data and a lot more to operate. This track teaches the patterns that make that trade worth it, and how to tell when it isn’t.
You’re helping Galactic Noodle Express, an interplanetary ramen delivery startup, break up its monolith. You’ll draw service boundaries with domain-driven design, give every service its own data, and connect them with REST, gRPC and events through a gateway. You’ll keep data consistent with sagas, the transactional outbox, CQRS and event sourcing; make services resilient with circuit breakers and bulkheads; see inside them with structured logs, metrics and distributed tracing; run them in containers on Kubernetes; ship safely with contract tests and canary releases; and secure them with mTLS and tokens. Along the way you’ll unwind failing sagas, follow requests across services and sort out boundaries. Every exercise is a small Python simulation, and the capstone migrates the monolith with the strangler fig pattern.
- Basic Python for the exercises: strings, lists, dicts, loops and functions.
- A general idea of how web apps talk over HTTP helps.
- The Distributed Systems track is a great companion: this track builds on its ideas about retries, idempotency and consistency.
- Unit 1 · 0/3 lessons
Foundations
Monoliths versus microservices, finding boundaries with domain-driven design, and data ownership. Badge: Boundary sketcher
- 0x001Monoliths and microservicesSee what microservices are, what they cost, and when a well-built monolith is the better choice. 24 min 0/2 exercises solved 24 min 0/2 exercises solved
- 0x102Finding service boundariesUse domain-driven design - business capabilities, bounded contexts, ubiquitous language and aggregates - to draw boundaries that last. 28 min 0/2 exercises solved 28 min 0/2 exercises solved
- 0x203Data ownershipGive each service its own database, avoid the shared-database trap, and query across services with composition and replicated data. 26 min 0/2 exercises solved 26 min 0/2 exercises solved
- Unit 2 · 0/3 lessons
Communication
REST and gRPC, compatible API changes, events and brokers, gateways and service discovery. Badge: Message passer
- 0x304Synchronous APIs: REST and gRPCDesign request-response APIs between services, evolve them without breaking clients, and budget latency across call chains. 28 min 0/2 exercises solved 28 min 0/2 exercises solved
- 0x405Asynchronous messaging and eventsDecouple services with events and message brokers, and handle duplicates and ordering safely. 30 min 0/2 exercises solved 30 min 0/2 exercises solved
- 0x506API gateways and service discoveryGive clients one front door with an API gateway or BFF, and let services find each other with discovery, load balancing and service meshes. 26 min 0/2 exercises solved 26 min 0/2 exercises solved
- Unit 3 · 0/3 lessons
Data and consistency
Sagas with compensations, the transactional outbox, CQRS and event sourcing. Badge: Saga keeper
- 0x607Sagas: transactions across servicesReplace distributed transactions with sagas - a sequence of local transactions with compensations - orchestrated or choreographed. 30 min 0/2 exercises solved 30 min 0/2 exercises solved
- 0x708The transactional outboxSolve the dual-write problem: update your database and publish events reliably with an outbox, change data capture and idempotent consumers. 26 min 0/2 exercises solved 26 min 0/2 exercises solved
- 0x809CQRS and event sourcingSeparate writes from reads with CQRS, store state as a log of events with event sourcing, and build read models with projections. 28 min 0/2 exercises solved 28 min 0/2 exercises solved
- Unit 4 · 0/5 lessons
Running microservices
Resilience patterns, observability, containers and Kubernetes, safe deployments and service security. Badge: Platform pilot
- 0x9010Resilience patternsStop one failing service from taking down the rest with timeouts, retries with backoff, circuit breakers, bulkheads and fallbacks. 30 min 0/2 exercises solved 30 min 0/2 exercises solved
- 0xA011Observability: logs, metrics and tracesSee inside a fleet of services with structured logs, correlation IDs, RED metrics, distributed traces, health checks and SLOs. 30 min 0/2 exercises solved 30 min 0/2 exercises solved
- 0xB012Containers and KubernetesPackage services as container images and run them on Kubernetes with Deployments, Services, probes, config and autoscaling. 30 min 0/2 exercises solved 30 min 0/2 exercises solved
- 0xC013Testing and safe deploymentsTest services at the right levels, catch breaking API changes with contract tests, and release safely with canaries, blue-green and feature flags. 28 min 0/2 exercises solved 28 min 0/2 exercises solved
- 0xD014Securing service-to-service trafficApply zero trust inside the system: authenticate users at the edge with tokens, authenticate services with mTLS, and authorize every call. 26 min 0/2 exercises solved 26 min 0/2 exercises solved
- Unit 5 · 0/1 lessons
Capstone
Strangle the monolith: plan the extraction order, route traffic gradually and compare shadow traffic. Badge: Fig whisperer