트레이스와 서비스 맵 분석하기

AWS 모니터링 및 문제 해결

John Q. Martin

Principal Consultant

서비스 맵이란?

 

트레이스 데이터로 자동 생성: 별도 설정 불필요

서비스마다 색상 상태등이 있는 철도 출발 안내판: 초록색은 정시, 주황색은 지연, 빨간색은 중단

한눈에 보기: 초록색 = 정시 · 주황색 = 지연 · 빨간색 = 중단

 

접근 방법:

  • X-Ray 콘솔 → Service map
  • 필터 적용
  • 노드 클릭 → 상세 분석
AWS 모니터링 및 문제 해결

서비스 맵 색상 코드

 

서비스 맵 색상 코드: 초록색은 성공한 호출, 노란색은 클라이언트 오류, 빨간색은 서버 오류, 보라색은 스로틀링, 회색은 트래픽 없음

서비스 맵을 열면 초록색이 아닌 부분부터 확인하세요.

노드를 클릭하면 응답 시간 분포, HTTP 상태 분석, 오류 유형을 확인할 수 있습니다.

AWS 모니터링 및 문제 해결

서비스 맵 읽는 법

 

API Gateway와 OrderService가 DynamoDB Inventory와 노란색 Payment 서비스로 분기되는 서비스 맵

AWS 모니터링 및 문제 해결

크리티컬 패스 분석

 

크리티컬 패스 = 가장 긴 서비스 호출 체인

API Gateway (50ms)
  -> OrderService (50ms)
    -> PaymentService (100ms)
      -> External API (200ms)

Total: 400ms

External API = 전체 지연 시간의 50%

 

이를 활용하는 방법:

  • External API가 최적화 대상입니다
  • 방법: 캐싱 추가, 타임아웃과 폴백 구현, SLA 협상

대안 경로와 비교:

OrderService -> DynamoDB
Total: 120ms (fast)
AWS 모니터링 및 문제 해결

종속성 위험

 

서비스 맵의 종속성 위험: 순환 종속성, 단일 장애점, 위험한 외부 종속성

AWS 모니터링 및 문제 해결

트레이스 타임라인 이해하기

 

시간 축을 따라 하위 세그먼트가 표시된 트레이스 타임라인, payment-api 호출이 가장 긴 작업으로 표시됨

 

  • 가로축은 시간: 작업이 시작된 시점과 소요 시간
  • 세로축은 서비스 계층: 하위 세그먼트가 상위 항목 아래 들여쓰기됨
  • payment-api로의 HTTP.POST(100-250ms) = 가장 긴 단일 작업
AWS 모니터링 및 문제 해결

패턴 1: 순차 실행으로 인한 병목

 

이전(순차 실행 - 80ms):

Query 1 (10-30ms)
         -> Query 2 (30-50ms)
                  -> Query 3 (50-70ms)
                           -> Query 4 (70-90ms)

 

이후(병렬 실행 - 20ms):

네 개의 쿼리가 병렬로 실행되어 겹치면서 20ms 만에 완료되는 트레이스 타임라인

AWS 모니터링 및 문제 해결

패턴 2: N+1 쿼리와 빈번한 호출 서비스

 

N+1 쿼리 문제:

Get user list       (10-20ms)
Get user 1 details  (20-30ms)
Get user 2 details  (30-40ms)
... ×100 sequential queries

해결책: 쿼리 일괄 처리, 즉시 로딩(eager loading)

 

빈번한 호출 서비스:

  • 배치 1회 대신 두 서비스 간 50번의 소규모 호출
  • 호출마다: 연결 설정 + 직렬화 + 왕복
  • 오버헤드 50배

해결책: 요청 일괄 처리, 메시지 큐, 캐싱

AWS 모니터링 및 문제 해결

패턴 3: 콜드 스타트와 연쇄 장애

 

두 개의 타임라인 막대: 콜드 스타트는 큰 주황색 초기화 블록 뒤에 작은 초록색 핸들러가 있고, 웜 스타트는 작은 초록색 핸들러만 있음

Lambda 콜드 스타트:

  • 콜드: 3000ms(초기화 2500ms + 핸들러 500ms)
  • 웜: 500ms(핸들러만)
  • 첫 호출 시 큰 초기화 세그먼트로 표시됨

해결책: 프로비저닝된 동시성, 초기화 최적화

 

연쇄 장애(Cascading Failure):

Service A [Error]
  -> Service B [Timeout 5s]
    -> Service C [Timeout 5s]
      -> Database [Timeout 5s]

트레이스 계층 전체에 동일한 타임아웃 블록이 쌓여서 나타남

해결책: 타임아웃, 서킷 브레이커, 폴백

AWS 모니터링 및 문제 해결

주석으로 트레이스 필터링하기

주석 키-값 쌍으로 트레이스를 필터링하는 X-Ray 콘솔

그룹 비교:

  • 프리미엄 사용자 평균 200ms vs. 무료 사용자 평균 150ms → 프리미엄 기능이 지연 유발
  • EU West가 US East보다 3배 느림 → 리전 간 데이터 접근 문제
AWS 모니터링 및 문제 해결

트레이스 분석 워크플로

 

  1. 식별 - 필터: response_time > 1000ms, 지속 시간순 정렬
  2. 분석 - 가장 긴 작업, 순차 병목, 병렬화 기회 찾기
  3. 주석 확인 - 사용자 ID, 주문 ID, 환경 등 비즈니스 맥락 확인
  4. 검토 - 메타데이터 확인: 요청 세부 정보, 오류 메시지
  5. 상호 참조 - CloudWatch Logs와 교차 확인
  6. 진단 - 근본 원인 파악: 느린 쿼리, 타임아웃, 알고리즘, 리소스 고갈
  7. 수정 - 코드 최적화, 캐싱 추가, 병렬화, 확장
  8. 검증 - 수정 전후 트레이스 비교, 지연 시간과 오류율 모니터링
AWS 모니터링 및 문제 해결

X-Ray 데이터로 알림 생성하기

 

# High latency alarm
aws cloudwatch put-metric-alarm \
  --alarm-name HighLatency \
  --metric-name ResponseTime \
  --namespace AWS/XRay \
  --statistic Average \
  --period 300 \
  --threshold 1000 \
  --comparison-operator GreaterThanThreshold

 

# High error count alarm
aws cloudwatch put-metric-alarm \
  --alarm-name HighErrorCount \
  --metric-name ErrorCount \
  --namespace AWS/XRay \
  --statistic Sum \
  --period 300 \
  --threshold 50 \
  --comparison-operator GreaterThanThreshold
AWS 모니터링 및 문제 해결

동영상 요약

 

  • 서비스 맵 - 자동 생성되는 아키텍처 다이어그램: 노드(서비스), 엣지(연결), 색상으로 표시되는 상태
  • 색상 코드 - 초록색(성공), 노란색(4xx), 빨간색(5xx 오류), 보라색(429), 회색(트래픽 없음)
  • 크리티컬 패스 - 가장 긴 호출 체인으로 최적화 대상 파악
  • 트레이스 타임라인 - 순차 병목, N+1 쿼리, 콜드 스타트, 연쇄 장애 드러냄
  • 주석 - 비즈니스 맥락으로 트레이스 필터링 및 그룹화
  • 워크플로 - 8단계: 식별 → 분석 → 주석 확인 → 검토 → 상호 참조 → 진단 → 수정 → 검증
AWS 모니터링 및 문제 해결

트레이스와 서비스 맵 분석하기

AWS 모니터링 및 문제 해결

Preparing Video For Download...