Debugging in the monolithic era ended with a single stack trace. A function called another function, and when an exception occurred, the call stack was printed line by line from top to bottom. But the moment that monolith was shattered into dozens of microservices, Lambda hung behind an API Gateway, that Lambda called other Lambdas, and DynamoDB, SQS, and external HTTP APIs wedged themselves in between, "the stack trace" as a concept collapsed entirely. A single user request scattered across process boundaries, networks, and asynchronous queues. To answer "why did this request take 3 seconds," you must thread the scattered work fragments back together as a single causal chain