SAABlog
모니터링중급

AWS X-Ray: 마이크로서비스 분산 추적과 성능 분석 완벽 가이드

X-Ray로 Lambda, API Gateway, ECS 요청을 추적하는 방법. 트레이스, 세그먼트, 서비스 맵 개념과 SAA-C03 시험 핵심 정리.

PHILOLAMB-
X-Ray분산 추적마이크로서비스APM성능 분석

관련 시험 도메인

  • Domain 2: Design Resilient Architectures
  • Domain 3: Design High-Performing Architectures

핵심 요약

AWS X-Ray는 분산 애플리케이션의 요청 흐름을 추적하고 시각화하는 서비스입니다. 트레이스로 전체 요청 경로를 파악하고, 서비스 맵으로 병목 지점을 식별하여 성능을 최적화할 수 있습니다.

시험 팁

시험 핵심: "마이크로서비스 병목 지점 파악" → X-Ray, "로그/메트릭 모니터링" → CloudWatch, "API Gateway + Lambda 추적" → X-Ray Active Tracing


AWS X-Ray는 언제 사용해야 할까?

적합한 경우

X-Ray 적합 시나리오:
├── 마이크로서비스 아키텍처
│   └── 여러 서비스 간 요청 흐름 추적
├── 서버리스 애플리케이션
│   └── Lambda → API Gateway → DynamoDB 호출 추적
├── 성능 병목 지점 분석
│   └── 어느 서비스에서 지연이 발생하는지 파악
├── 장애 근본 원인 분석
│   └── 에러가 어디서 시작되었는지 추적
└── 서비스 의존성 파악
    └── 자동 생성되는 서비스 맵 활용

부적합한 경우

X-Ray가 최선이 아닌 상황:
├── 단순 로그 수집/분석
│   → CloudWatch Logs 사용
├── 인프라 메트릭 모니터링
│   → CloudWatch Metrics 사용
├── 실시간 알림/경보
│   → CloudWatch Alarms 사용
└── 비용 최적화만 목적
    → AWS Cost Explorer, Trusted Advisor

X-Ray 핵심 개념

아키텍처

┌─────────────────────────────────────────────────────────────┐
│                     AWS X-Ray 동작 원리                      │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   [클라이언트]                                               │
│       │                                                      │
│       ▼ 요청                                                │
│   ┌──────────────┐                                          │
│   │ API Gateway  │ ──→ 세그먼트 생성                        │
│   └──────────────┘                                          │
│       │                                                      │
│       ▼                                                      │
│   ┌──────────────┐                                          │
│   │   Lambda     │ ──→ 세그먼트 생성                        │
│   │   함수       │     + 서브세그먼트 (DynamoDB 호출)       │
│   └──────────────┘                                          │
│       │                                                      │
│       ▼                                                      │
│   ┌──────────────┐                                          │
│   │  DynamoDB    │ ──→ 서브세그먼트                         │
│   └──────────────┘                                          │
│                                                              │
│   모든 세그먼트 → X-Ray 데몬 → X-Ray 서비스                 │
│                         ↓                                    │
│                   [서비스 맵] + [트레이스 분석]              │
│                                                              │
└─────────────────────────────────────────────────────────────┘

핵심 용어

용어설명
트레이스 (Trace)단일 요청의 전체 경로 (여러 세그먼트로 구성)
세그먼트 (Segment)하나의 서비스가 처리한 작업 단위
서브세그먼트 (Subsegment)세그먼트 내 세부 작업 (DB 호출, HTTP 요청 등)
어노테이션 (Annotation)검색 가능한 키-값 메타데이터 (필터링용)
메타데이터 (Metadata)검색 불가능한 추가 정보
서비스 맵 (Service Map)서비스 간 의존성 시각화

샘플링 규칙

X-Ray 샘플링 (비용 최적화):
├── 기본 규칙: 첫 요청 + 초당 5% 샘플링
├── 커스텀 규칙 설정 가능
│   ├── 특정 URL 패턴만 추적
│   ├── 특정 사용자만 추적
│   └── 에러 요청만 추적
└── 목적: 모든 요청 추적 시 비용 급증 방지

시험 팁

샘플링 시험 포인트: X-Ray는 기본적으로 모든 요청을 추적하지 않음. 비용과 성능 최적화를 위해 샘플링 규칙을 적용함.


X-Ray와 AWS 서비스 통합

지원 서비스

서비스통합 방식설정
Lambda네이티브 통합함수 설정에서 Active Tracing 활성화
API Gateway네이티브 통합스테이지 설정에서 X-Ray 활성화
ECS/EKSX-Ray 데몬 사이드카태스크에 X-Ray 컨테이너 추가
EC2X-Ray 데몬 설치EC2에 데몬 프로세스 실행
Elastic Beanstalk네이티브 통합환경 설정에서 활성화

Lambda + API Gateway 추적

API Gateway Active Tracing 설정:
├── 콘솔: Stages → Logs/Tracing → X-Ray Tracing 활성화
├── CLI: aws apigateway update-stage --tracing-enabled true
└── 결과: API Gateway → Lambda → 다운스트림 전체 추적

Lambda Active Tracing 설정:
├── 콘솔: Configuration → Monitoring → Active tracing 활성화
├── CLI: aws lambda update-function-configuration --tracing-config Mode=Active
└── 결과: 함수 실행 시간, 콜드 스타트, 다운스트림 호출 추적

X-Ray vs CloudWatch: 어떤 걸 선택해야 할까?

비교표

비교 항목X-RayCloudWatch
주요 목적분산 추적, 요청 흐름 분석로그, 메트릭, 알람
데이터 유형트레이스 (요청 경로)로그, 메트릭, 이벤트
시각화서비스 맵, 트레이스 타임라인대시보드, 그래프
검색어노테이션 기반 필터링로그 인사이트 쿼리
알람직접 지원 안 함네이티브 알람 기능
비용추적된 트레이스 수로그 용량, 메트릭 수

함께 사용하는 패턴

권장 조합:
├── X-Ray: 요청 흐름 추적, 병목 지점 분석
├── CloudWatch Logs: 상세 애플리케이션 로그
├── CloudWatch Metrics: CPU, 메모리, 커스텀 메트릭
├── CloudWatch Alarms: 임계값 초과 시 알림
└── CloudWatch ServiceLens: X-Ray + CloudWatch 통합 뷰

시험 팁

시험 포인트: "어디서 지연이 발생하는가?" → X-Ray, "무엇이 발생했는가?" → CloudWatch Logs


X-Ray 비용 구조

가격 (US East 기준)

항목무료 티어이후 비용
추적 기록월 100,000개$5.00/백만 트레이스
추적 검색월 1,000,000개$0.50/백만 검색
추적 저장30일 보관추가 비용 없음

비용 최적화 팁

비용 절감 전략:
├── 샘플링 규칙 최적화
│   └── 프로덕션: 낮은 샘플링률, 개발: 높은 샘플링률
├── 필요한 서비스만 추적
│   └── 모든 마이크로서비스가 아닌 핵심 경로만
├── 어노테이션 최소화
│   └── 검색 가능한 데이터는 비용에 영향
└── 트레이스 그룹 활용
    └── 필터로 관련 트레이스만 조회

SAA-C03 시험 출제 포인트

자주 나오는 시나리오

  1. 분산 추적 도구: "마이크로서비스 병목 지점 파악" → X-Ray
  2. 서버리스 추적: "Lambda + API Gateway 요청 추적" → X-Ray Active Tracing
  3. 서비스 의존성 파악: "서비스 간 관계 시각화" → X-Ray 서비스 맵
  4. X-Ray vs CloudWatch: 분산 추적 vs 로그/메트릭 구분
  5. ECS/EKS 추적: "컨테이너 애플리케이션 추적" → X-Ray 데몬 사이드카

예상 문제

시험 팁

예상 문제 1: "마이크로서비스 아키텍처에서 특정 API 요청이 느린 원인을 파악해야 합니다. 요청이 어느 서비스에서 지연되는지 확인하려면?"

→ 정답: AWS X-Ray (서비스 맵과 트레이스 타임라인으로 병목 지점 식별)

시험 팁

예상 문제 2: "EKS 클러스터에서 실행 중인 마이크로서비스의 요청 흐름을 추적하려면 어떻게 해야 할까요?"

→ 정답: X-Ray 데몬을 사이드카 컨테이너로 배포 + 애플리케이션에 X-Ray SDK 통합

시험 팁

예상 문제 3: "API Gateway에서 Lambda를 호출하는 서버리스 애플리케이션의 전체 요청 경로를 추적하려면?"

→ 정답: API Gateway와 Lambda 모두에서 Active Tracing 활성화


자주 묻는 질문 (FAQ)

Q: X-Ray와 CloudWatch Application Insights의 차이점은?

X-Ray는 분산 추적에 특화되어 요청 흐름을 추적합니다. Application Insights는 .NET/SQL Server 등 특정 워크로드의 애플리케이션 문제를 자동 감지합니다. 최근 CloudWatch Application Signals가 X-Ray를 통합하여 APM 기능을 제공합니다.

Q: X-Ray는 HTTP API (API Gateway v2)를 지원하나요?

아니요, X-Ray는 현재 **REST API (API Gateway v1)**만 네이티브로 지원합니다. HTTP API를 사용하는 경우 Lambda에서 X-Ray SDK를 직접 사용해야 합니다.

Q: 샘플링률을 100%로 설정하면?

모든 요청이 추적되어 비용이 급증합니다. 프로덕션에서는 권장하지 않습니다. 디버깅 시에만 일시적으로 높은 샘플링률을 사용하세요.

Q: X-Ray 데몬은 어디서 실행해야 하나요?

  • EC2: 인스턴스에 직접 설치
  • ECS: 태스크 정의에 사이드카 컨테이너로 추가
  • Lambda: 자동 포함 (설정만 활성화)
  • Elastic Beanstalk: 플랫폼에 포함

Q: 트레이스 데이터는 얼마나 보관되나요?

X-Ray는 트레이스 데이터를 30일간 무료로 보관합니다. 더 긴 보관이 필요하면 트레이스를 S3로 내보내세요.


관련 글

참고 자료