System Design
Designing systems that stay correct and available at scale.
4 subjects · 27 topics · 7 areas
Subjects covering this category
4 subjects- Subject · Beginner to Advanced
Designing HTTP APIs that clients can understand, call safely, and keep using as the API changes.
- HTTP for API Designers
- Designing the Contract
- Repeats, Retries and Long Jobs
- Subject · Beginner to Advanced
Turning a product's requirements into a first design for a web system, and knowing what each part is there for.
- Starting a Design
- The Parts of a System
- Moving Data Around
- Subject · Intermediate to Advanced
Building a REST service with Spring Boot: wired to real data, validated, and fast enough to trust in production.
- Spring Boot Essentials
- Building REST APIs
- Data Access
- Subject · Beginner to Advanced
Following a request from an application down through the network layers and back, and naming the layer where a network problem lives.
- Getting a Packet There
- Between Two Programs
- Applications and Debugging
API Design
18 topics- API Design
Authenticating API clients: API keys, sessions, bearer tokens, JWTs and mutual TLS, and which one suits each kind of caller.
Beginner to Advanced12 cards · 8 qnot started
- API Design
REST and resource design: naming the things an API exposes and the paths that reach them, with filtering, sorting and actions that are not plain updates.
Beginner to Advanced11 cards · 7 qnot started
- API Design
HTTP caching for APIs: telling clients and CDNs how long to keep a response, and using ETags to skip unchanged downloads and to stop two clients overwriting each other.
Beginner to Advanced11 cards · 8 qnot started
- The OSI Model and Network Protocols
How WebSocket, server-sent events and WebRTC keep a connection open, who may send on it, and how each one survives a drop.
Beginner to Advanced10 cards · 6 qnot started
- API Design
HTTP methods for APIs: what GET, POST, PUT, PATCH and DELETE promise, and which are safe to repeat.
Beginner to Intermediate10 cards · 7 qnot started
- API Design
API contracts: the fields, types and formats a client and server agree on, written down so machines can check them.
Beginner to Advanced10 cards · 7 qnot started
- API Design
Protecting an API: the common API security risks, object-level checks, rate limits a client can act on, and what CORS does and does not do.
Beginner to Advanced10 cards · 8 qnot started
- API Design
HTTP status codes for APIs: choosing the code that tells a client what happened and what to do next.
Beginner to Intermediate9 cards · 7 qnot started
- API Design
Asynchronous APIs: answering a long job with 202 Accepted and a status to check, and sending signed webhooks a receiver can trust.
Beginner to Advanced9 cards · 5 qnot started
- API Design
Versioning an API: telling breaking changes from safe ones, and retiring an old version without stranding its clients.
Beginner to Advanced9 cards · 6 qnot started
- API Design
REST, GraphQL and gRPC: what each API style exposes, and how to choose one for an integration.
Beginner to Advanced9 cards · 5 qnot started
- API Design
API error responses: one error format a client can branch on, with enough detail to fix the request and nothing an attacker can use.
Beginner to Intermediate8 cards · 5 qnot started
- System Design
API pagination with offsets and cursors: returning large results a page at a time without skipping rows or slowing down.
Beginner to Intermediate8 cards · 5 qnot started
- API Design
Designing an API end to end: from requirements to reviewed endpoints, errors and a contract for one feature.
Intermediate to Advanced7 cards · 6 qnot started
- System Design
Client-server communication: polling, server-sent events, WebSockets and webhooks, chosen by who sends and how often.
Beginner to Intermediate10 cards · 5 qnot started
- API Design
Idempotency keys: letting a client retry a payment or an order after a timeout without it happening twice.
Beginner to Advanced6 cards · 4 qnot started
- Spring Boot
Mapping HTTP requests to controller methods: verbs and paths, reading request data, and choosing the response.
Intermediate to Advanced6 cards · 4 qnot started
- System Design
System design heuristics: matching a pressure such as read-heavy traffic or global users to the pattern that answers it.
Intermediate to Advanced7 cards · 5 qnot started
Caching
5 topics- API Design
HTTP caching for APIs: telling clients and CDNs how long to keep a response, and using ETags to skip unchanged downloads and to stop two clients overwriting each other.
Beginner to Advanced11 cards · 8 qnot started
- System Design
Caching: keeping copies of frequent reads close, deciding when they go stale, and the ways a cache can take a system down.
Beginner to Advanced9 cards · 8 qnot started
- Spring Boot
Caching in Spring Boot: @Cacheable, @CachePut and @CacheEvict, cache keys, caching strategies, and the default provider's limit.
Intermediate to Advanced7 cards · 5 qnot started
- System Design
System design heuristics: matching a pressure such as read-heavy traffic or global users to the pattern that answers it.
Intermediate to Advanced7 cards · 5 qnot started
- System Design
Load balancers, reverse proxies and API gateways: the three kinds of server that sit in front of yours, and the one job each is for.
Beginner to Intermediate10 cards · 5 qnot started
Microservices
3 topics- System Design
Software architectural styles: monoliths, layers, microservices, events and serverless, and the team and product each one fits.
Beginner to Advanced10 cards · 5 qnot started
- System Design
Load balancers, reverse proxies and API gateways: the three kinds of server that sit in front of yours, and the one job each is for.
Beginner to Intermediate10 cards · 5 qnot started
- System Design
Message queues and publish/subscribe: handing work off without waiting, and choosing between one reader and many.
Beginner to Intermediate9 cards · 6 qnot started
Event-Driven Architecture
3 topics- System Design
Message queues and publish/subscribe: handing work off without waiting, and choosing between one reader and many.
Beginner to Intermediate9 cards · 6 qnot started
- System Design
Client-server communication: polling, server-sent events, WebSockets and webhooks, chosen by who sends and how often.
Beginner to Intermediate10 cards · 5 qnot started
- System Design
Software architectural styles: monoliths, layers, microservices, events and serverless, and the team and product each one fits.
Beginner to Advanced10 cards · 5 qnot started
Load Balancing
2 topics- System Design
Load balancers, reverse proxies and API gateways: the three kinds of server that sit in front of yours, and the one job each is for.
Beginner to Intermediate10 cards · 5 qnot started
- System Design
Scaling a web system up or out: bigger machines or more of them, what has to be stateless first, and what autoscaling cannot catch.
Beginner to Advanced9 cards · 5 qnot started
Message Queues
2 topics- System Design
Message queues and publish/subscribe: handing work off without waiting, and choosing between one reader and many.
Beginner to Intermediate9 cards · 6 qnot started
- System Design
System design heuristics: matching a pressure such as read-heavy traffic or global users to the pattern that answers it.
Intermediate to Advanced7 cards · 5 qnot started
Consistency Models
2 topics- System Design
Caching: keeping copies of frequent reads close, deciding when they go stale, and the ways a cache can take a system down.
Beginner to Advanced9 cards · 8 qnot started
- System Design
System design heuristics: matching a pressure such as read-heavy traffic or global users to the pattern that answers it.
Intermediate to Advanced7 cards · 5 qnot started
In System Design itself
3 topics- System Design
The building blocks of a web system: DNS, CDNs, application servers and databases, and the path a request takes through them.
Beginner to Intermediate11 cards · 8 qnot started
- System Design
Requirements and trade-offs: deciding what a system must do and how well, so a design has something to be checked against.
Beginner to Intermediate9 cards · 5 qnot started
- System Design
Back-of-the-envelope estimation: turning users and their actions into requests a second, storage and downtime, before choosing a single part.
Beginner to Intermediate8 cards · 6 qnot started