System Design for DevOps · Module 01
System Design Foundations
How to start any design: turn a vague request into requirements and numbers, find single points of failure with simple availability math, and choose between 3-tier, monolith and microservices layouts and mono- or multi-repo code.
What you will learn
- Write functional and non-functional requirements and estimate traffic and storage
- Find single points of failure and calculate the availability of serial and parallel parts
- Explain the 3-tier architecture and the pros and cons of monoliths and microservices
- Compare mono-repo and multi-repo and their effect on CI/CD
Lessons
- Requirements and Back-of-the-Envelope Estimation
Every design starts with what the system must do (functional requirements) and how well it must do it (non-functional: latency, availability, scale, cost), followed by rough numbers for traffic, storage and bandwidth.
- Single Points of Failure and Availability Math
A single point of failure is any part whose failure stops the whole system; availability multiplies for parts in series and improves dramatically when parts run in parallel.
- The 3-Tier Architecture
A 3-tier architecture splits an application into presentation, business logic and data layers that run and scale separately; it improves security and scalability at the cost of more parts and network hops.
- Monolith vs Microservices
A monolith ships all features as one deployable unit; microservices split them into independently deployable services that communicate over the network, trading simplicity for team autonomy and fault isolation.
- Mono-repo vs Multi-repo
A mono-repo keeps all code in one repository with shared tooling; a multi-repo gives each component its own repository and history. The choice shapes CI/CD, code sharing and team independence.