아마존 웹 서비스(AWS)가 최근 발생한 대규모 서비스 중단 사태에 대한 상세한 사후 분석 보고서를 발표했습니다. 이번 장애는 단 하나의 DNS 레이스 컨디션(race condition) 문제에서 시작되어 아마존(Amazon)의 클라우드(cloud) 제국 전체를 흔들었고, 수많은 주요 웹사이트와 서비스가 하루 종일 마비되는 결과를 초래했습니다. 피해액은 수천억 달러에 달할 것으로 추정되고 있습니다.
아마존 웹 서비스(AWS) 대규모 장애 발생
이번 사건은 10월 19일 오후 11시 48분(태평양 표준시, 한국 시간 10월 20일 오전 7시 48분)에 시작되었습니다. 미국 동부 1(US-EAST-1) 리전(Region)의 북부 버지니아(Northern Virginia) 지역에서 고객들이 다이나모DB(DynamoDB) API 오류율 증가를 보고하면서 문제가 수면 위로 떠올랐습니다. 이 작은 문제가 결국 AWS 서비스 전반에 걸쳐 연쇄적인 장애를 일으키며 많은 기업과 사용자들에게 큰 불편을 주었습니다.
문제의 시작: DNS 레이스 컨디션
아마존의 사후 분석 보고서에 따르면, 이번 장애의 근본 원인은 다이나모DB의 자동화된 DNS 관리 시스템 내에 잠재되어 있던 레이스 컨디션 때문이었습니다. 이 시스템은 가용성을 위해 두 가지 독립적인 구성 요소로 이루어져 있습니다.
- DNS 플래너(DNS Planner): 로드 밸런서(load balancer)의 상태를 모니터링하고 DNS 계획을 생성하는 역할을 합니다.
- DNS 인액터(DNS Enactor): 아마존 라우트 53(Amazon Route 53)을 통해 변경 사항을 적용합니다.
문제는 한 DNS 인액터가 “비정상적으로 높은 지연”을 겪는 동안 DNS 플래너가 계속해서 새로운 계획을 생성하면서 발생했습니다. 이때 두 번째 DNS 인액터가 새로운 계획을 적용하기 시작했고, 첫 번째 인액터가 지연된 작업을 완료하는 시점에 맞춰 정리 프로세스를 실행했습니다. 이 정리 과정에서 오래된 계획이 ‘오래된(stale)’ 것으로 간주되어 삭제되었고, 이로 인해 해당 지역 엔드포인트(endpoint)의 모든 IP 주소가 즉시 제거되었습니다. 결국 시스템은 불일치 상태에 빠졌고, 더 이상의 자동화된 업데이트가 불가능해졌습니다.
도미노처럼 무너진 AWS 서비스들
DNS 오류는 다이나모DB에 연결되는 시스템에 즉각적인 영향을 미쳤습니다. 고객 트래픽뿐만 아니라 AWS 내부 서비스까지 DNS 실패를 경험하게 되었어요. 이는 EC2 인스턴스(EC2 instance) 시작과 네트워크 구성에도 영향을 주었습니다.
특히, EC2 인스턴스를 호스팅하는 물리 서버의 임대(lease)를 관리하는 드롭렛 워크플로우 매니저(DropletWorkflow Manager, DWFM)는 다이나모DB에 의존하고 있었습니다. DNS 오류로 인해 DWFM의 상태 확인이 실패하자, EC2 서버(드롭렛)는 인스턴스 상태 변경을 위한 새로운 임대를 설정할 수 없게 되었습니다.
다이나모DB가 복구된 후, DWFM은 전체 EC2 플릿(fleet)에 걸쳐 임대를 재설정하려고 시도했습니다. 하지만 그 규모가 너무 방대하여 완료되기 전에 임대가 만료되기 시작했고, DWFM은 결국 혼잡 붕괴(congestive collapse) 상태에 빠져 수동 개입이 필요했습니다.
이후 네트워크 관리자(Network Manager)는 엄청난 양의 지연된 네트워크 구성을 전파하기 시작했고, 이로 인해 새로 시작된 EC2 인스턴스들은 네트워크 구성 지연을 겪었습니다. 이러한 네트워크 전파 지연은 네트워크 로드 밸런서(Network Load Balancer, NLB) 서비스에도 영향을 미쳤습니다. NLB의 헬스 체크(health check) 서브시스템은 네트워크 지연으로 인해 헬스 체크에 실패한 새로운 EC2 인스턴스를 제거했다가, 다음 확인에서 성공하면 다시 복원하는 과정을 반복했습니다.
EC2 인스턴스 시작이 제대로 이루어지지 않으면서, 다이나모DB에 의존하는 다른 서비스들도 연쇄적으로 문제를 겪었습니다.
- 람다(Lambda)
- 엘라스틱 컨테이너 서비스(Elastic Container Service, ECS)
- 엘라스틱 쿠버네티스 서비스(Elastic Kubernetes Service, EKS)
- 파게이트(Fargate)
아마존의 대응과 앞으로의 과제
아마존은 이번 사태의 재발을 막기 위해 다이나모DB DNS 플래너와 DNS 인액터 자동화 시스템을 전 세계적으로 비활성화했습니다. 안전장치가 마련될 때까지는 수동으로 관리할 예정이라고 합니다.
아마존은 이번 사태에 대해 사과하며, “모든 AWS 서비스에 걸쳐 이번 이벤트의 세부 사항을 계속해서 검토하면서, 향후 유사한 이벤트의 영향을 피하고 복구 시간을 더욱 단축할 추가적인 방법을 모색할 것”이라고 밝혔습니다.
이번 장시간의 서비스 중단은 수많은 웹사이트와 정부 서비스에 영향을 미쳤으며, 그로 인한 혼란과 피해는 수천억 달러에 이를 것으로 추정됩니다. 클라우드 서비스의 안정성이 얼마나 중요한지, 그리고 단 하나의 작은 결함이 얼마나 큰 파급 효과를 가져올 수 있는지 다시 한번 일깨워주는 사건이었습니다.