AWS X-Ray: 마이크로서비스 분산 추적과 성능 분석 완벽 가이드
X-Ray로 Lambda, API Gateway, ECS 요청을 추적하는 방법. 트레이스, 세그먼트, 서비스 맵 개념과 SAA-C03 시험 핵심 정리.
관련 시험 도메인
- 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/EKS | X-Ray 데몬 사이드카 | 태스크에 X-Ray 컨테이너 추가 |
| EC2 | X-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-Ray | CloudWatch |
|---|---|---|
| 주요 목적 | 분산 추적, 요청 흐름 분석 | 로그, 메트릭, 알람 |
| 데이터 유형 | 트레이스 (요청 경로) | 로그, 메트릭, 이벤트 |
| 시각화 | 서비스 맵, 트레이스 타임라인 | 대시보드, 그래프 |
| 검색 | 어노테이션 기반 필터링 | 로그 인사이트 쿼리 |
| 알람 | 직접 지원 안 함 | 네이티브 알람 기능 |
| 비용 | 추적된 트레이스 수 | 로그 용량, 메트릭 수 |
함께 사용하는 패턴
권장 조합:
├── 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 시험 출제 포인트
자주 나오는 시나리오
- ✅ 분산 추적 도구: "마이크로서비스 병목 지점 파악" → X-Ray
- ✅ 서버리스 추적: "Lambda + API Gateway 요청 추적" → X-Ray Active Tracing
- ✅ 서비스 의존성 파악: "서비스 간 관계 시각화" → X-Ray 서비스 맵
- ✅ X-Ray vs CloudWatch: 분산 추적 vs 로그/메트릭 구분
- ✅ 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로 내보내세요.