Friday evening
Lumen Home sells home goods. Its catalog API handles about 2,400 requests a minute at the evening peak, and checkout reads current prices from it, so when the catalog fails, carts stall even though checkout itself is fine.
Last Friday the price store behind the catalog started failing, and 14% of catalog requests failed for eleven minutes. The team heard about it from customer tickets. The service had one application log of free-form messages and no metrics, and nobody could tell whether requests were failing, slowing down or piling up. By the time they found the fault, 9% of add-to-cart attempts had failed.
What you're changing
Make the service expose its four golden signals, put them on one dashboard, and write the alert rules that page the on-call before the customers notice. The catalog's responses stay as they are.
What the starter gives you
The catalog service (Python and FastAPI) and, around it, everything else already wired: a fake price store with fault controls, background traffic, Prometheus, Alertmanager, a stand-in pager and Grafana. Prometheus scrapes GET /metrics on the service and loads every rule file in monitoring/rules/; Grafana loads every dashboard in monitoring/dashboards/. Both folders are empty.
make up starts it all. make fault makes every fifth price-store call fail and every call take 250 ms, make fault-latency makes every call take 2.5 seconds, and make clear-fault turns both off. make load sends 100 requests and prints one summary line. make rehearse and make rehearse-latency turn a fault on while the background traffic runs and print how many seconds passed before the pager got a page. make contract checks the catalog still answers as it did.
The rules Prometheus loads are the ones the rehearsals run against, and a rehearsal can't wait an hour: scale the windows down for the lab, and write the production windows beside them.
You can port the service to another language: keep its routes, port 8000 inside the container and STORE_URL, and run make contract until it passes.
Tracing, log shipping and running the monitoring stack with high availability are out of scope; they are questions for your write-up. For the deploy, the service with its /metrics reachable is enough.