Vertical vs Horizontal Scaling
Vertical scaling means a bigger machine; horizontal means more of them behind a load balancer. Most real systems use both, in a specific order.
Concurrency vs Parallelism
Concurrency structures a program to deal with many things at once; parallelism actually executes them simultaneously. A system can have one without the other.
Long Polling vs WebSockets
Long polling stretches an ordinary HTTP request to fake server push; WebSockets leave the request/response model entirely. Update frequency decides.
Batch vs Stream Processing
Batch processes data in scheduled chunks; stream processes it continuously as it arrives. The real question deciding between them: how fresh must it be?
Stateful vs Stateless Design
Whether a server remembers a client between requests quietly decides how easily it scales. Stateless means state moved elsewhere, not that it disappeared.
Strong vs Eventual Consistency
Strong consistency guarantees every read sees the latest write; eventual consistency lets replicas catch up later. It depends on what the data needs.
Read-Through vs Write-Through Cache
Read-through and write-through put the cache itself in charge of talking to the database, instead of the application — usually adopted together, not alone.
Push vs Pull Architecture
Push sends data the instant it changes; pull asks for it on demand. Push needs a known, reachable receiver, which is exactly why pull still wins sometimes.
REST vs RPC
REST models an API around resources; RPC calls a named action directly. Internal service calls tend to favor RPC/gRPC, public APIs tend to favor REST.
Sync vs Async Communication
Does the caller wait for a response, or move on and find out later? Nearly every tradeoff in this course is a version of this one underlying decision.