마이크로서비스로 시스템을 쪼개면 얻는 게 있고 잃는 게 있다. 얻는 건 독립 배포와 확장이고, 잃는 건 "전체 그림"이다. 모놀리식 시절엔 느린 요청이 있으면 스택 트레이스 하나로 어느 함수가 병목인지 보였다. 그런데 요청 하나가 API Gateway → Lambda → DynamoDB → 외부 결제 API → SNS → 또 다른 Lambda를 지나가면, 각 서비스의 로그는 자기가 본 조각만 안다. Lambda 로그는 "나는 200ms 걸렸다"고 하고, DynamoDB 메트릭은 "나는 5ms였다"고 하는데, 사용자는 3초를 기다렸다. 그 나머지 2.8초가 어디서 샜는지는 어느 한 서비스도 모른다. 이 "조각난 진실을 하나로 꿰는" 문제가 분산 트레이싱(distributed tracing)이 풀려는 것이고, AWS에서 그 도구가 X-Ray다.
이 글은 X-Ray가 어떻게 한 요청의 전체 여정을 하나의 트레이스로 재구성하는지, 왜 모든 요청을 추적하지 않고 샘플링하는지, 그리고 X-Ray와 짝을 이루는 운영 도구인 Trusted Advisor(모범 사례 권고)·Health Dashboard(AWS 측 사고)·Compute Optimizer(ML 기반 right-sizing)가 각각 어떤 질문에 답하는지를 따라간다