Systems Design & Cloud
The network is unreliable, and every interesting problem here is a consequence of that fact.
On this page
The working table of contents.
- Architecture is the art of deciding what talks to what — monolith (one thing, simple) → modular monolith (one thing, organized) → services (many things, independent) → the trade-offs at each step.
- API design — how services talk: REST (resources + HTTP verbs), RPC (function calls over the network), GraphQL (client asks for exactly what it needs). When to use which.
- Event-driven architecture — instead of "call me," it's "publish what happened." Events, queues, pub/sub. Event sourcing (store every change, not just current state). CQRS (separate the read path from the write path).
- Caching — store answers to avoid re-computing. Where to cache (client, CDN, application, database). Invalidation as the hard problem.
- The cloud abstraction — someone else's computers, rented by the hour. Compute (VMs, containers, functions), storage (block, object, file), network (VPCs, load balancers, CDNs). Why the bill is the new architecture constraint.
- Infrastructure as code — describe your infrastructure in files, not clicks. Terraform, Pulumi. Version-controlled, repeatable, reviewable.
- Observability — you can't fix what you can't see. The three pillars: metrics (counters, gauges), logs (events), traces (request journeys). SLOs as the contract with users.
Going deeper
Branches that earn their own article.
- Microservices patterns (sidecar, ambassador, circuit breaker, bulkhead).
- Message brokers (Kafka, RabbitMQ, NATS) deep dives.
- CQRS and event sourcing implementation details.
- Rate limiting and back-pressure strategies.
- Cell-based architecture.
- Multi-region and active-active patterns.
- Capacity planning.
- Kubernetes internals (scheduler, kubelet, etcd, CRI, CNI).
- Service mesh (Istio, Linkerd).
- Serverless architectures and cold-start trade-offs.
- FinOps and cloud cost optimization.
- CI/CD pipeline design.