[reinvent 2024] 실수 없이 실패하는 법: AWS에서 배운 교훈들
Summary
AWS에서는 높은 가용성을 설계하는 것만으로는 강력한 서비스를 구축할 수 없다는 것을 배웠습니다. 이 세션에서는 AWS의 운영 리더들이 예기치 않은 상황이 발생할 때의 영향을 완화하는 방법에 대한 통찰을 공유합니다. 지난 18년간의 운영 경험에서 얻은 교훈과 함께, 실패에 대비하고 완화하는 실질적인 조언을 들어보세요.
리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?
Overview
들어가며
본론
1. 대규모 시스템에서의 복원력 리스크
AWS는 대규모 시스템에서 발생하는 가장 큰 도전 과제로 가용성 감소 문제를 언급했습니다. 시스템의 총 가용성은 개별 구성 요소의 가용성을 곱한 값으로 계산됩니다. 이를 수치로 살펴보면, 구성 요소가 10개일 때 시스템의 가용성은 99.9%로 유지되지만, 10,000개로 늘어나면 가용성은 36.8%로 급감합니다. 이는 시스템 규모가 커질수록 장애 가능성이 기하급수적으로 높아진다는 것을 의미합니다.
특히 네트워크 통합(network convergence), 부하 급증(load spikes), 배포(deployment) 중 오류, 인스턴스 손상(instance impairment) 등이 주요 리스크 요인으로 꼽혔습니다. 이러한 문제들은 대규모 시스템이 복잡해질수록 더 빈번히 발생하며, 시스템 운영에 치명적인 영향을 미칠 수 있습니다.
AWS는 이와 같은 리스크를 해결하기 위해 단순히 장애를 피하려 하기보다는, 장애를 예측하고 이를 관리할 수 있는 설계를 통해 시스템 안정성을 확보해야 한다고 강조했습니다.
2. 복구 워크플로우의 중요성
복구 워크플로우는 시스템 복원력을 강화하는 핵심 요소 중 하나로, AWS는 복구 워크플로우를 단순히 비상시에만 실행하는 것이 아니라 평소에도 주기적으로 실행하여 장애 상황에 대비한다고 밝혔습니다.
예를 들어, 인프라 교체, 메시지 버스 재연결, 리더 선출, 가용 영역(AZ) 전환 등 다양한 시나리오에서 복구 워크플로우를 반복적으로 실행하면, 장애 상황에서도 빠르고 정확하게 대응할 수 있습니다. 이는 마치 운동선수가 중요한 경기를 대비해 꾸준히 훈련하는 것과 같은 원리입니다.
AWS Route 53의 사례에서는 Anycast 네트워크 기술을 활용하여 POP(Point of Presence)를 주기적으로 제거 및 복구함으로써, 장애 발생 시에도 고객 경험에 영향을 주지 않는 방식을 구현했습니다. 이는 복구 워크플로우가 단순한 반복 작업을 넘어 시스템의 안정성을 확보하는 중요한 전략임을 보여줍니다.
3. 병목 현상 탐지와 Little’s Law
AWS는 시스템에서 병목 현상을 탐지하고 이를 해결하기 위해 Little’s Law를 활용합니다. Little’s Law는 시스템 동시 처리량(concurrency)이 요청 도착 속도(arrival rate)와 지연 시간(latency)의 곱으로 계산된다는 점에서 병목 구간을 파악하는 데 유용합니다.
예를 들어, 초당 100개의 요청이 들어오고 각 요청 처리에 0.5초가 걸린다면 시스템의 동시 처리량은 100×0.5=50100 \times 0.5 = 50입니다. AWS는 이와 더불어 “Sum of Latency”라는 지표를 도입하여 병목 구간을 시각화하고 문제 발생 전에 조치를 취할 수 있도록 했습니다.
특히 배포 과정에서 병목 현상이 발생하면 특정 인스턴스나 노드에 과부하가 집중되는데, AWS는 이를 탐지하여 문제가 있는 인스턴스를 격리하고 교체하는 방식을 통해 빠르게 복구를 진행합니다. 이러한 데이터 기반 접근 방식은 AWS의 시스템 복구가 얼마나 치밀하게 설계되었는지를 보여줍니다.
결론
AWS의 “Failing Without Flailing” 세션은 대규모 분산 시스템의 복원력 확보와 관련해 매우 실질적인 인사이트를 제공했습니다. 특히 다음과 같은 세 가지 교훈이 강조되었습니다:
- 가용성 감소를 관리하기 위한 설계: 구성 요소가 많아질수록 가용성이 급격히 감소하므로 이를 고려한 구조적 접근이 필요합니다.
- 복구 워크플로우의 반복적 실행: 평소에도 주기적으로 복구 워크플로우를 실행하여 장애 대응 능력을 강화할 수 있습니다.
- 병목 현상 사전 탐지 및 대응: Little’s Law와 Sum of Latency 지표를 활용해 병목 구간을 탐지하고, 사전 대응을 통해 시스템 안정성을 유지할 수 있습니다.
AWS는 장애를 완전히 피하는 대신, 장애를 예상하고 이를 효과적으로 복구할 수 있는 방식을 지속적으로 발전시켜 왔습니다. 이번 세션을 통해 배운 교훈은 단순히 AWS와 같은 대규모 기업에만 적용되는 것이 아니라, 다양한 시스템 설계와 운영에서도 활용할 수 있는 매우 유용한 전략임을 느낄 수 있었습니다.
“복원력은 선택이 아닌 필수”라는 AWS의 철학은 오늘날과 같은 복잡한 IT 환경에서 우리가 추구해야 할 가장 중요한 가치임을 다시 한번 깨닫게 되었습니다.