OpenAI는 최근 12월 11일 ChatGPT와 Sora 서비스의 4시간 10분 중단에 대한 자세한 보고서를 발표했습니다. 이 사건은 많은 사용자에게 영향을 미쳤으며 광범위한 관심을 끌었습니다. 보고서에는 장애의 원인과 엔지니어가 직면한 어려움, 서비스 복원의 최종 프로세스가 자세히 설명되어 다른 기술 팀에게 귀중한 교훈을 제공합니다. 보고서에는 오류의 근본 원인은 물론 제어 평면 충돌이 발생했을 때 엔지니어가 취한 일련의 비상 조치가 명확하게 설명되어 있으며 이는 OpenAI의 비상 대응 능력을 반영합니다.
지난주(12월 11일) OpenAI의 ChatGPT와 Sora 서비스가 4시간 10분간 다운되어 많은 사용자에게 영향을 미쳤습니다. 이제 OpenAI는 ChatGPT 중단에 대한 자세한 보고서를 공식적으로 발표합니다.
간단히 말해서, 이 실패의 근본 원인은 작은 변화였지만, 이는 심각한 결과를 초래했습니다. 엔지니어들은 중요한 순간에 제어 표면에 갇혀 문제를 제때에 처리할 수 없었습니다. 이 실패와 관련하여 OpenAI 엔지니어는 문제를 발견한 후 클러스터 크기 축소, Kubernetes 관리 API에 대한 네트워크 액세스 차단, Kubernetes API 서버 리소스 증가 등을 포함하여 여러 가지 복구 작업을 신속하게 시작했습니다. 여러 차례의 노력 끝에 엔지니어들은 마침내 Kubernetes 제어 플레인의 일부에 대한 액세스를 복원하고 트래픽을 정상 클러스터로 전환하는 조치를 취하여 궁극적으로 시스템의 전체 복구를 달성했습니다.
이 사건은 엔지니어가 Kubernetes(K8S) 컨트롤 플레인 지표를 수집하기 위해 새로운 원격 측정 서비스를 배포한 오후 3시 12분(PST)에 발생했습니다. 그러나 서비스가 의도치 않게 너무 광범위하게 구성되어 모든 클러스터의 모든 노드가 동시에 리소스 집약적인 K8S API 작업을 수행하게 되었습니다. 이 상황으로 인해 API 서버가 빠르게 중단되어 대부분의 클러스터의 K8S 데이터 플레인이 서비스 기능을 잃게 되었습니다.
K8S 데이터 플레인은 이론적으로 제어 플레인과 독립적으로 실행될 수 있지만 DNS의 기능은 제어 플레인에 의존하므로 서비스가 서로 통신할 수 없다는 점은 주목할 가치가 있습니다. API 작업이 과부하되면 서비스 검색 메커니즘이 손상되어 전체 서비스가 마비됩니다. 3분 이내에 문제를 찾았음에도 불구하고 엔지니어는 서비스 롤백을 위해 제어 플레인에 액세스할 수 없어 "무한 루프" 상황이 발생했습니다. 컨트롤 플레인 충돌로 인해 문제가 있는 서비스를 제거할 수 없어 복구가 불가능해졌습니다.
OpenAI 엔지니어들은 즉시 클러스터를 복원하는 다양한 방법을 모색하기 시작했습니다. K8S의 API 부하를 줄이기 위해 클러스터 크기를 줄이려고 시도했으며, 서버가 정상 작동을 재개할 수 있도록 관리 K8S API에 대한 액세스를 차단했습니다. 또한 요청을 더 잘 처리하기 위해 K8S API 서버의 리소스 구성도 확장했습니다. 일련의 노력 끝에 엔지니어들은 마침내 K8S 제어 평면에 대한 제어권을 되찾았고, 결함이 있는 서비스를 삭제하고 클러스터를 점진적으로 복원할 수 있었습니다.
이 기간 동안 엔지니어들은 다른 클러스터의 부하를 줄이기 위해 복원되거나 새로 추가된 정상 클러스터로 트래픽을 이동했습니다. 그러나 많은 서비스가 동시에 복구를 시도하여 리소스 제한이 포화됨에 따라 복구 프로세스에 추가적인 수동 개입이 필요했고 일부 클러스터의 복구 시간이 오래 걸렸습니다. OpenAI는 이번 사건을 통해 경험을 통해 교훈을 얻고, 향후 유사한 상황에 직면하더라도 다시는 '잠김'을 당하지 않을 것으로 예상됩니다.
신고 세부정보: https://status.openai.com/incidents/ctrsv3lwd797
가장 밝은 부분:
실패 원인: 소규모 원격 측정 서비스 변경으로 인해 K8S API 작업이 과부하되어 서비스가 마비되었습니다.
엔지니어의 딜레마: 제어 평면의 충돌로 인해 엔지니어가 접근할 수 없게 되어 문제를 처리할 수 없게 됩니다.
⏳ 복구 과정: 클러스터 크기를 줄이고 리소스를 늘려 최종적으로 서비스를 복구했습니다.
이 사건으로 인해 서비스가 중단되었지만 OpenAI는 귀중한 경험을 제공하여 시스템 아키텍처 및 비상 계획을 개선하고 서비스 안정성을 더욱 개선하며 사용자에게 보다 안정적인 서비스 보장을 제공할 수 있었습니다. 저는 OpenAI가 이번 사건을 통해 교훈을 얻고 지속적으로 기술을 개선하여 사용자에게 더 나은 경험을 제공할 것이라고 믿습니다.