Exercise 3: 5 Whys — "Images Are Loading Slowly" — Possible Solution ==================================================================== Starting symptom: "Users report the website is loading images slowly." WHY? -- Because image requests are taking much longer than usual to respond. WHY? -- Because the object storage bucket serving the images is being accessed directly from the application's origin server on every request, rather than through a caching layer, and that origin path has gotten noticeably slower recently. WHY? -- Because a recent traffic increase pushed the origin server's requests-per-second against the object storage service's per-bucket request rate limits, causing a portion of image requests to be throttled (Ch.4/Ch.5's storage-tier and throttling material). WHY? -- Because the site was originally built to serve images directly from the storage bucket without a CDN or edge cache in front of it, an architecture choice that was fine at the site's original, much lower traffic volume but was never revisited as traffic grew. GENUINE ROOT CAUSE (not just a first-level symptom): the architecture never added a caching/CDN layer in front of object storage as traffic scaled up, meaning every single image request -- not just a handful -- depends directly on the storage service's own request-rate limits, which is now the actual bottleneck under current traffic levels. Why this is a genuine root cause rather than just a deeper-sounding symptom: fixing this (adding a CDN/caching layer in front of the image storage) would prevent the SAME underlying problem from recurring as traffic continues to grow, because it removes the architectural reason every image request depends directly on a rate-limited service in the first place. Merely raising the storage service's rate limit (a shallower fix, addressing only the third "why") would likely provide temporary relief but leave the site's IMAGE-SERVING PATTERN itself unchanged, meaning the same problem would likely resurface again once traffic grows further -- exactly the "fixes the symptom, not the root cause" trap this chapter's own warn-box describes. WHY THIS WORKS AS AN ANSWER ------------------------------ Each "why" moves one level deeper than the last, following the chapter's own worked example structure (slow site -> database slow -> pool exhausted -> deployment introduced a leak -> no automated test caught it), ending on an architectural/process-level explanation rather than stopping at a technical symptom like "storage was throttled" -- exactly the distinction the chapter draws between a genuine root cause and a merely deeper-sounding restatement of the same surface problem.