AWS US-East-1 리전의 DynamoDB 서비스 장애는 약 15시간 동안 지속되었으며, 이는 단일 장애 지점과 서비스 간의 강한 결합으로 인한 연쇄 장애의 전형적인 사례입니다. 💥
장애의 근본 원인은 DynamoDB의 DNS 관리 시스템 내에서 발생한 '경쟁 조건(Race Condition)' 버그였습니다. 느린 DNS Enactor가 오래된 계획을 적용하는 동안, 빠른 Enactor가 새로운 계획을 적용하고 오래된 계획을 삭제하여 DynamoDB의 메인 엔드포인트 IP 주소가 모두 지워졌습니다. 🐛
DynamoDB는 EC2 인스턴스 메타데이터, IAM 인증, Lambda의 기반 컴퓨팅 등 수많은 AWS 내부 서비스에 핵심적으로 사용되어, DynamoDB 장애가 전체 AWS 생태계에 광범위한 도미노 효과를 일으켰습니다. 🔗
EC2는 기존 인스턴스는 유지되었으나, DynamoDB에 의존하는 메타데이터 저장 문제로 새로운 인스턴스 시작이 불가능했으며, DynamoDB 복구 후에도 백로그 처리 문제로 추가적인 지연이 발생했습니다. 🚦
네트워크 로드 밸런서의 헬스 체크 실패, Lambda 기능 실행 불가, AWS 관리 콘솔 로그인 불가 등 핵심 서비스들이 DynamoDB에 대한 강한 의존성 때문에 마비되었습니다. 🚫
이러한 연쇄 장애를 방지하기 위해 서비스 간 '느슨한 결합(Loose Coupling)'을 지향하고, '서킷 브레이커', '타임아웃', '지수 백오프', '속도 제한' 등의 패턴을 구현해야 합니다. 🛡️
애플리케이션은 완전한 실패 대신 '점진적 성능 저하(Graceful Degradation)'를 통해 캐시된 데이터를 제공하거나 비핵심 기능을 비활성화하는 방식으로 설계되어야 합니다. 📉
DynamoDB 글로벌 테이블을 사용하던 고객들은 다른 리전에서 데이터에 접근할 수 있었는데, 이는 '다중 리전 배포'를 통한 지리적 이중화가 단일 장애 지점을 극복하는 중요한 전략임을 보여줍니다. 🌍
AWS 엔지니어들이 장애 발생 50분 만에 DNS 문제를 식별할 수 있었던 것은 '뛰어난 모니터링 및 가시성(Observability)' 시스템의 중요성을 강조합니다. 👁️
이 사건은 가장 정교한 클라우드 인프라조차도 예측하기 어려운 버그와 서비스 간의 복잡한 상호 의존성으로 인해 치명적인 장애를 겪을 수 있음을 시사하며, 견고한 시스템 설계를 위한 교훈을 제공합니다. 💡