Product-Minded System Design and Observability Roadmap
Design systems that scale and can be understood in production, with a habit of tying choices to product needs.
10 milestones · ~132 hours total
- 1
Requirements and estimation
~8hClarify functional and non-functional needs, estimate traffic and storage with simple back-of-envelope maths.
Practice this → - 2
Networking and API design
~12hHTTP, DNS, load balancers, REST vs gRPC vs GraphQL, idempotency and versioning.
Practice this → - 3
Storage choices
~16hSQL vs NoSQL, indexing, replication, partitioning and picking a database based on access patterns.
Practice this → - 4
Caching and CDNs
~10hCache-aside, write-through, eviction, invalidation problems and what to put behind a CDN.
Practice this → - 5
Asynchronous systems
~14hQueues, pub/sub, event-driven design, retries, dead-letter queues and at-least-once delivery.
Practice this → - 6
Scalability and consistency trade-offs
~14hHorizontal scaling, sharding, the CAP theorem, eventual consistency and rate limiting.
Practice this → - 7
Classic design exercises
~24hURL shortener, news feed, chat service and notification system, written up with diagrams and trade-offs.
Practice this → - 8
Observability: logs, metrics and traces
~14hThe three signals, OpenTelemetry, useful dashboards and latency percentiles.
Practice this → - 9
Reliability and cost awareness
~10hFailure modes, graceful degradation, SLOs and simple cost estimates for the design choices you make.
Practice this → - 10
Product thinking in design
~10hLink design decisions to user impact, choose what to build first, write a short design doc and defend your trade-offs.
Practice this →