Lesson 09 · Operating at Scale
Three concerns Principals design in from day one — the ability to answer unknown questions, the tail nobody's dashboard shows, and the bill nobody owns.
Here's the pattern that separates Principal-level architecture from senior-level architecture: seniors design the system, then bolt on monitoring, tune performance when someone complains, and discover the cloud bill in a panicked Slack thread. Principals treat all three as architecture decisions made up front — because retrofitting any of them is an order of magnitude more expensive than designing for them.1 This lesson gives you the working mental model for each, and a lab that turns them into a single audit you can run on a real service this week.
Start with the sharpest distinction in the field. Monitoring answers known questions — you predicted a failure mode ("CPU might spike", "error rate might climb") and built a dashboard or alert for it. Observability answers unknown questions — the failure you never predicted, arriving as a weird customer complaint. The test, per Observability Engineering: can you understand any state your system gets into, without shipping new code to do it?1 Forty green dashboards and a customer saying "it's broken only for us, only since Tuesday" is the moment that test gets graded.
| Monitoring | Observability | |
|---|---|---|
| Question type | Known, predicted in advance ("is CPU high?") | Unknown, novel ("why is this weird thing happening?") |
| Data shape | Pre-aggregated metrics; the detail is thrown away at write time | Rich, wide events with many fields — sliceable ad hoc at read time |
| Killer query | "Is the error rate above 1%?" | "Which customers, on which app version, hitting which endpoint, see this?" |
| Fails when | The failure is one you never predicted | Nobody minds the ingest bill or query discipline |
You'll hear observability sold as "three pillars": metrics, logs, and traces.
Be able to argue both sides of that framing. It's genuinely useful as an inventory of telemetry
types — it's how OpenTelemetry organizes its signals, and how most vendors package their
products. The critique, argued hard by Majors, Fong-Jones, and Miranda: pillars describe
data types, not the capability — buy three siloed tools and you'll still be
eyeballing timestamps trying to correlate them during an incident.1
What actually buys you answers to unknown questions is
high-cardinality, high-dimensionality
data: events that carry fields like customer_id, app_version, and
build_id — exactly the fields traditional metrics systems choke on, and exactly the
ones that isolate "which customers on which version".1
The senior-level performance mistake is reporting averages. An average of 60ms can hide the fact that one request in a hundred takes eight seconds — and no actual user experienced 60ms.5 Principals speak in percentiles: the p99 is a real request from a real user, and often your most valuable user — the customer with the most data makes the heaviest queries.2 That's why Amazon famously set internal latency targets on the 99.9th percentile: the slowest requests belong to the accounts that matter most.2
Then comes the effect that makes tails an architecture problem: tail latency amplification. When one user request fans out to many backend calls — as almost every microservice page load does — the user waits for the slowest one. If just 1% of backend calls are slow and a page touches 100 backends, roughly 63% of page loads hit at least one slow call. Your rare tail becomes your typical experience.23 This is why Google treats tail-tolerance as a design discipline — hedged requests, tried-and-true replication tricks — not a tuning pass.3 And it connects straight back to Lesson 03: performance work that isn't aimed at the system's actual bottleneck is decoration. Find the constraint first; percentiles tell you whether you found it.
Cloud cost is the concern most engineers treat as someone else's job — and the one where a Principal who shows up with numbers gets instant credibility with leadership. The move is Lesson 02's move, unchanged: cost is just another dimension in the trade-off table, weighed against latency, reliability, and team speed — never optimized in isolation, never ignored. AWS's cost pillar defines the goal the same way: deliver business value at the lowest price point that still meets your requirements — a trade-off statement, not a minimization.4
Know the three classic gotchas. Egress: moving data out of a cloud or between regions often costs more than storing it — a "simple" multi-region or multi-cloud design can hemorrhage money in transfer fees. Storage lifecycle: data written once and read never, sitting on hot expensive tiers forever. The observability bill itself: high-cardinality telemetry is powerful and priced accordingly — observability spend is a top-line item at scale, and the 2nd edition of Observability Engineering devotes chapters to managing it.14 And the metric that makes cost legible to the business: cost per request, or cost per tenant. "$40k/month" starts a fight; "our cost per order doubled since March" starts a strategy conversation.4
This lab produces a one-page operability audit memo for one real service you work on — the same three questions, asked honestly. It's promotion evidence ("found and framed an operability gap nobody owned") and a ready-made interview story. Write:
Feedback loop: bring the memo back to me in chat. I'll review it against a Principal-level rubric — did you test the audit with a concrete unknown-question scenario rather than asserting "we have good logging", is every latency claim percentile-based with no averages anywhere, and does your cost lever honestly name its trade-off. This memo goes into your Lesson 12 promotion packet — operability audits are rare, legible, org-level evidence.
Three scenarios. Diagnose from the mental models — unknown questions, percentiles, trade-offs — not from memory of the text.
Scenario A
On-call gets a ticket: "File uploads fail for our team since Tuesday — only on the Android app." All forty dashboards are green; CPU, memory, and error-rate alerts are quiet. The on-call engineer is stuck. What's the actual gap here?
Scenario B
Your latency dashboard shows a healthy 62ms average and the SLO is green, but your three biggest enterprise customers report pages taking 3+ seconds. Each page load fans out to roughly 100 backend calls. What's your first diagnosis?
Scenario C
Finance mandates a 25% cloud-cost cut. One engineer proposes deleting all distributed tracing (biggest single saving); another proposes tiering old logs to cold storage and sampling traces. As the Principal in the room, how do you frame the decision?
Hand-picked follow-ups. None are required — the primary source above comes first.