Checkpoint: Real-time & Async Communication
You've Got the Whole Toolbox — Now Choose
This section handed you a lot of ways to move data between machines: asking repeatedly (polling), a two-way live connection (WebSockets), one-way server push (SSE), cross-company callbacks (webhooks), peer-to-peer media (WebRTC), and then the async side — synchronous calls made safe, queues that absorb bursts, logs versus brokers, pub/sub fan-out, and the honest truth about delivery guarantees.
Knowing what each is isn't the skill. The skill is reaching for the right one when a real feature lands on your desk — and, just as often, not over-engineering a simple thing into a live socket. This checkpoint is ten concrete features. For each, you pick the communication style and immediately see whether it holds up, why, and which lesson it came from. Aim for 7 out of 10; anything you miss points you straight back to the lesson worth a second read.

Make the Call: Ten Features, Ten Decisions
Read each feature like a ticket you've just been handed. Resist the urge to pick the fanciest option — the right answer is often the simplest one that fits. Choose, read the reasoning, and move on:

What You Can Now Do
If those felt natural, you've internalized the section's real payoff — a decision reflex:
- Real-time to the browser? Ask which direction. One-way server→client → SSE; two-way and chatty → WebSocket; changes rarely → just poll or fetch; peer media → WebRTC; across a company boundary → webhook.
- Service-to-service? Ask do I need the answer now? Yes → a synchronous call with a timeout and retry; no → hand it off async.
- Going async? Ask what shape of delivery? Absorb a burst → a queue; replay and many readers → a log; broadcast one event to many → pub/sub; and always assume at-least-once, so make consumers idempotent.
That three-question reflex — which direction, need it now, what shape — is what separates picking a pattern on purpose from cargo-culting whatever you used last time.
Wrapping Up the Section
- There's no single "real-time" tool — there's a direction (one-way vs two-way), a timing (sync vs async), and a shape (request/reply, push, or fire-and-forget), and each feature picks its own point in that space.
- The most common mistake isn't choosing the wrong advanced tool — it's choosing an advanced tool at all when a plain request would do. Simplicity that fits beats sophistication that doesn't.
- Everything async rides on the same honest foundation: messages can be lost or duplicated, so you design for at-least-once and make the effect idempotent.
That closes Real-time & Async Communication. Next up is Caching — the other half of making systems fast: instead of moving work off the request path, you avoid the work entirely by remembering the answer.