Logs, metrics, traces

The three pillars

Observability means you can answer questions about a running system you didn't think to ask in advance โ€” without shipping new code first. It rests on three kinds of data: logs (discrete events โ€” "this booking was created"), metrics (numbers over time โ€” requests per second, p99 latency), and traces (the path one request took across your system, service by service). Each answers a different question: logs tell you what happened, metrics tell you how much/how often, traces tell you where the time went.

You've used print() for debugging since module 1. In production, print output is a wall of unstructured text โ€” one line per statement, no shared shape. Once you have more than a handful of requests per minute, grepping that wall for the one line you need stops working.