배경
실제 장애 사례
ECS 기반 배치 서비스에서 주문 수집이 중단되는 이슈가 발생했다. 원인을 추적한 결과, AWS 내부적으로 진행된 ElasticContainerService task patching retirement 작업이 ECS Task를 재기동시킨 것이 원인이었다.
[문제]
배치 서비스 주문 수집 중단
[원인]
AWS Health Dashboard: ElasticContainerService task patching retirement
→ AWS Fargate 플랫폼 버전 업데이트로 인해
이전 플랫폼 버전의 Task가 자동 종료 및 교체
[영향]
Task 재기동 중 배치 처리 중단 → 주문 수집 누락
이 사건은 단순한 참고용 알림이 아니라, 실제 프로덕션에 영향을 주는 계획된 인프라 작업이었다.
왜 AWS Health Dashboard 모니터링이 필요한가
AWS 내부 작업이 사용자 리소스에 영향을 줌
AWS Fargate는 서버 관리 없이 자동으로 리소스를 제공하는 서비스이기 때문에, 기능 추가와 유지보수를 위해 플랫폼을 정기적으로 업데이트한다.
ElasticContainerService task patching retirement는 AWS가 새로운 플랫폼 버전 revision을 배포함에 따라 이전 플랫폼 버전에서 실행 중인 태스크가 자동으로 종료되고 교체되는 작업이다.
업데이트 내용:
- OS 보안 패치
- 커널 업데이트
- 신규 기능 추가
- 내부 유지보수
조기 경보의 가치
대부분의 Health Dashboard 알림은 사전에 공지된다.
"ElasticContainerService task patching retirement가 진행될 예정입니다"
이 정보를 바탕으로 사전 조치가 가능하다:
- 백업 이미지 점검
- 태스크 롤링 업데이트 사전 실행
- 이미지 캐싱 확인
- 배치 스케줄 조정 (작업 시간대 회피)
모니터링 대상
EC2를 제외한 AWS 관리형 서비스 관련 이벤트를 중점 모니터링한다.
| 서비스 | 주요 이벤트 |
|---|---|
| ECS Fargate | Task Patching Retirement, 플랫폼 버전 업데이트 |
| Lambda | Runtime Deprecation, 보안 패치 |
| S3 | 서비스 장애, API 오류율 증가 |
| 기타 관리형 서비스 | Retirement, Patching, Reboot |
중요 알람: ECS Task Patching Retirement
AWS Fargate 플랫폼 버전 업데이트
↓
이전 플랫폼 버전의 Task 자동 종료
↓
새 플랫폼 버전으로 Task 교체 (재기동)
↓
재기동 중 서비스 일시 중단 가능
알림 자동화 구성
방식: AWS User Notifications
AWS Health Dashboard
↓
AWS User Notifications (알림 규칙 설정)
↓
이메일 채널 → 팀 메일로 자동 전달
설정 과정
-
AWS User Notifications 활성화
- AWS 콘솔 → User Notifications → 알림 규칙 생성
-
알림 대상 이벤트 설정
- Fargate, Lambda, S3 등 관리형 서비스의 Retirement, Patching, Reboot 이벤트
-
이메일 채널 연결
- 팀 메일 주소를 수신 대상으로 등록
-
동작 확인
- 이메일 정상 수신 확인 완료
EventBridge 연동 (확장)
더 세밀한 제어가 필요한 경우 EventBridge를 활용할 수 있다.
{
"source": ["aws.health"],
"detail-type": ["AWS Health Event"],
"detail": {
"service": ["ELASTICCONTAINERSERVICE", "LAMBDA", "S3"],
"eventTypeCategory": ["scheduledChange", "accountNotification"]
}
}AWS Health Event
↓
EventBridge Rule (서비스/이벤트 유형 필터)
↓
SNS Topic → 이메일 / Slack / SMS
운영 프로세스
일일 모니터링 목록에 추가
AWS Health Dashboard를 일일 모니터링 체크리스트에 포함시켰다.
일일 모니터링 체크리스트:
☐ CloudWatch 알람 상태 확인
☐ ECS Task 상태 확인
☐ AWS Health Dashboard 확인 ← 추가
☐ Agent 동기화 상태 확인
사전 알림 수신 시 대응 절차
1. Health Dashboard 알림 수신 (이메일)
2. 영향 범위 파악 (어떤 서비스, 어떤 리전)
3. 사전 조치 실행
- ECS: 이미지 최신화, 롤링 업데이트 사전 실행
- Lambda: 런타임 버전 업데이트
4. 작업 예정 시간대에 모니터링 강화
5. 작업 완료 후 서비스 정상 동작 확인
정리
- AWS 내부 인프라 작업이 프로덕션에 직접 영향을 줄 수 있음을 실제 장애로 확인
- AWS User Notifications를 통한 이메일 알림 자동화 구축
- ECS Task Patching Retirement 등 관리형 서비스 이벤트 사전 감지
- 일일 모니터링 체크리스트에 Health Dashboard 추가
- 사전 알림 기반 조기 대응으로 운영 리스크 감소
배운 점
우리가 아무것도 바꾸지 않아도 서비스는 멈출 수 있다. 관리형 서비스를 쓴다는 건 운영의 일부를 AWS에 맡긴다는 뜻이고, 그 쪽에서 하는 작업도 우리 서비스의 변경 이벤트라는 걸 이 장애로 알게 됐다.
그래서 모니터링 대상에 "우리 인프라의 상태"만이 아니라 "AWS가 우리 인프라에 하려는 작업"을 추가했다. 감지가 아니라 예고를 받는 채널이라는 점에서 성격이 다르다.
Fargate 플랫폼 교체로 Task가 재기동된다는 건, 언제든 컨테이너가 사라질 수 있다는 전제를 다시 확인해 준 사건이기도 했다. 이 전제는 ECS Fargate 컨테이너 Health Check 기반 자동 재시작 구현과 ECS Task STOPPED 상태 감지에서 계속 이어진다.
이어 읽기
- ECS Task STOPPED 상태 감지 및 Slack 알람 구축: Task가 사라졌을 때 사유를 확인하는 방법
- Amazon SES 기반 이메일 알림 인프라 구축: 이 공지를 받는 메일 발송 기반