AWS Certified Developer - Associate (DVA-C02) #12 Domain 4-1 트러블슈팅과 최적화: 관측
#11 배포 전략까지 다루며 배포 도메인을 마쳤습니다. 마지막 도메인은 18%의 트러블슈팅과 최적화입니다. 첫 글은 관측(observability), 즉 “무슨 일이 일어나고 있는지 보는 도구"입니다. 장애를 추적하려면 먼저 로그,지표,추적을 읽을 수 있어야 합니다.
CloudWatch Logs #
애플리케이션,서비스의 로그를 수집,검색,보관합니다.
| 개념 | 의미 |
|---|---|
| 로그 그룹(Log Group) | 같은 애플리케이션,함수의 로그 묶음. 보존 기간 설정 |
| 로그 스트림(Log Stream) | 한 소스(인스턴스,실행 환경)의 로그 시퀀스 |
| Logs Insights | 로그를 쿼리 언어로 검색,집계 |
| 구독 필터 | 로그를 실시간으로 Lambda/Kinesis로 스트리밍 |
- Lambda는 로그를 자동으로 CloudWatch Logs에 기록합니다(실행 역할에 로그 권한 필요).
- EC2,온프레미스는 CloudWatch Agent를 설치해야 로그,메모리,디스크 지표를 보냅니다.
시험 함정: EC2의 메모리,디스크 사용률은 기본 지표가 아닙니다. CloudWatch Agent를 깔아야 커스텀 지표로 올라옵니다. CPU,네트워크는 기본 제공입니다.
CloudWatch Metrics #
시스템,애플리케이션의 수치를 시계열로 수집합니다.
- 표준 지표. AWS 서비스가 자동 제공(EC2 CPU, Lambda 호출 수,오류,지속시간 등).
- 커스텀 지표.
PutMetricData로 직접 올립니다(주문 수 등 비즈니스 지표). - 고해상도(High-Resolution). 1초 단위까지. 기본은 1분(또는 5분).
- 차원(Dimension). 지표를 함수명,환경 등으로 분류하는 키-값.
CloudWatch Alarms #
지표가 임계치를 벗어나면 동작합니다.
- 상태:
OK/ALARM/INSUFFICIENT_DATA. - 액션: SNS 알림, Auto Scaling, EC2 액션, 배포 자동 롤백.
- 복합 알람으로 여러 알람을 논리 조건으로 묶을 수 있습니다.
X-Ray: 분산 추적 #
마이크로서비스,서버리스에서 요청이 여러 서비스를 지나며 어디서 느려지고 어디서 실패하는지를 추적합니다.
| 개념 | 의미 |
|---|---|
| 세그먼트(Segment) | 한 서비스가 처리한 작업 단위 |
| 서브세그먼트(Subsegment) | 세그먼트 안의 세부 호출(DB 쿼리, 외부 API 등) |
| 트레이스(Trace) | 한 요청이 만든 세그먼트 전체 |
| 서비스 맵(Service Map) | 서비스 간 호출 관계,지연,오류 시각화 |
| 샘플링(Sampling) | 일부 요청만 추적해 비용,부하 절감 |
- Lambda는 활성화 토글 + 실행 역할 권한으로 X-Ray를 켭니다. 코드에 SDK를 넣으면 외부 호출까지 서브세그먼트로 잡힙니다.
- EC2/ECS/온프레미스는 X-Ray 데몬을 실행해 추적 데이터를 전송합니다.
- “여러 서비스를 거치는 요청에서 병목 구간을 찾고 싶다"의 답은 X-Ray입니다.
EMF: Embedded Metric Format #
로그에 구조화된 JSON으로 지표를 함께 기록하면, CloudWatch가 그 로그에서 자동으로 커스텀 지표를 추출합니다.
- 별도
PutMetricDataAPI 호출 없이, 로그를 쓰는 것만으로 지표 생성. - 고카디널리티 컨텍스트(요청 ID 등)를 로그로 남기면서 동시에 집계 지표를 얻습니다.
- 서버리스에서 API 호출 비용,지연 없이 커스텀 지표를 만드는 권장 방식입니다.
CloudTrail과의 구분 #
관측 도구를 고르는 문항에서 자주 헷갈리는 쌍입니다.
| 서비스 | 무엇을 보는가 |
|---|---|
| CloudWatch | 성능,로그(“얼마나 빠른가/무슨 로그가 났나”) |
| X-Ray | 요청 경로,병목(“어디서 느린가”) |
| CloudTrail | API 호출 감사(“누가 무슨 API를 호출했나”) |
“누가 이 리소스를 삭제했나"는 CloudTrail, “왜 느린가"는 X-Ray/CloudWatch입니다.
시험 출제 패턴 #
- “여러 마이크로서비스를 지나는 요청의 병목을 찾는다.” → X-Ray(서비스 맵).
- “EC2 메모리 사용률을 모니터링.” → CloudWatch Agent(커스텀 지표).
- “로그를 쿼리로 검색,집계.” → CloudWatch Logs Insights.
- “API 호출 없이 서버리스 커스텀 지표 생성.” → EMF.
- “누가 S3 버킷을 지웠는지.” → CloudTrail.
- “오류율이 임계치를 넘으면 알림.” → CloudWatch Alarm + SNS.
- “비즈니스 지표(주문 수)를 직접 기록.” → 커스텀 지표(
PutMetricData) 또는 EMF.
자주 만나는 함정 #
1) EC2 메모리가 기본 지표라는 오해 #
CPU,네트워크는 기본, 메모리,디스크는 Agent 필요입니다.
2) CloudWatch와 CloudTrail 혼동 #
성능,로그는 CloudWatch, API 감사는 CloudTrail입니다.
3) X-Ray를 코드만으로 켰다고 생각 #
Lambda는 추적 활성화 + 실행 역할에 X-Ray 권한이 필요합니다.
정리 #
이번 글에서 잡은 것:
- CloudWatch Logs(그룹,스트림,Logs Insights,구독 필터), EC2 메모리는 Agent 필요
- Metrics(표준,커스텀,고해상도,차원)와 Alarms(SNS,롤백 연계)
- X-Ray. 세그먼트,서브세그먼트,서비스 맵,샘플링으로 병목 추적
- EMF. 로그만으로 커스텀 지표 추출(서버리스 권장)
- CloudWatch(성능),X-Ray(경로),CloudTrail(API 감사) 구분
다음: Domain 4-2 최적화와 문제 해결 #
무엇이 일어나는지 보는 법을 익혔으니, 마지막은 그것을 개선하고 흔한 오류를 해결하는 법입니다. #13 최적화와 문제 해결에서는 캐싱 계층, Lambda 성능 튜닝, 그리고 시험에 자주 나오는 오류 코드와 트러블슈팅 패턴을 정리하겠습니다.