브라이트코브는 비디오 플레이어 전송, 퍼블리싱 및 플레이어 관리 솔루션의 일부로 Amazon S3를 사용하고 있으며, 이 분야의 선두주자이자 뛰어난 성능을 제공하기 때문에 당연한 결과입니다. 하지만 성능이 뛰어나다고 해서 완벽한 것은 아닙니다. 저희는 이러한 상황을 예상하여 서비스 중단을 견딜 수 있도록 서비스를 강화하는 데 많은 시간과 노력을 기울여 왔으며, 그 노력은 결실을 맺었습니다.
아마존 S3 서비스 인시던트
2017년 9월 14일 목요일 오후 1시 37분(미국 동부 표준시) 경에 잠시 동안, 그리고 오후 2시 40분(미국 동부 표준시)부터 약 1시간 동안 Amazon S3 서비스가 미국 동부 지역에서 요청을 부당하게 스로틀링하기 시작했습니다. 그 결과, 완벽하게 유효한 파일 가져오기 및 넣기 요청이 다수 거부되었습니다.
이 안정적인 클라우드 인프라에 의존하는 인터넷에서 가장 많이 방문하는 웹사이트 중 일부를 포함하여 많은 S3 고객이 영향을 받았습니다. 브라이트코브는 일부 콜드 캐시 비디오 콘텐츠의 오류율이 증가했지만, 캐시 또는 캐시되지 않은 플레이어 로드는 영향을 받지 않았다고 보고하게 되어 기쁘게 생각합니다. 훨씬 더 큰 사건이 될 수도 있었던 상황이 매우 잘 통제되었습니다.
다음은 The Register에서 보도한 사건에 대한 몇 가지 정보입니다. 사고 발생 시 Amazon이 공유한 정보는 다음과 같습니다(시간은 동부 표준시로 조정됨):
- 2:58 PM EDT. 미국-EAST-1 지역의 Amazon S3 요청에 대한 오류율 증가를 조사하고 있습니다.
- 오후 3:20 EDT. 일부 고객이 S3에 액세스하는 데 스로틀링 오류가 발생하고 있음을 확인했습니다. 현재 근본 원인을 조사 중입니다.
- 3:38 PM EDT. 저희는 미국 동부 1지역에서 Amazon S3 요청에 대한 스로틀링 오류 증가 문제를 해결하기 위해 계속 노력하고 있습니다. 오류의 원인이 되는 하위 시스템을 파악하고 근본 원인을 파악했으며 현재 문제 해결을 위해 노력 중입니다.
- 3:49 PM EDT. 이제 Amazon S3에 액세스하는 스로틀 오류율이 회복되고 있습니다. 근본 원인을 파악하고 재발 방지를 위한 조치를 취했습니다.
- 오후 4시 5분(EDT). 오후 2시 40분에서 오후 3시 56분(미국 동부 표준시) 사이에 미국 동부 1지역에서 Amazon S3에 액세스하는 데 스로틀링 오류가 발생했습니다. 현재 문제가 해결되어 서비스가 정상적으로 운영되고 있습니다.
오후 1시 37분, 아마존의 확인이 있기 훨씬 전인 오후 1시 37분에 첫 번째 오류로 인해 알림이 트리거되었습니다. 알림은 서비스에 문제가 있다는 것을 알려주기보다는 수정 조치가 자동으로 시작되었다는 것을 알려주었습니다.
브라이트코브의 트래픽이 가장 많은 시간대에 발생한 이번 사고 동안 브라이트코브는 2,800만 건 이상의 브라이트코브 플레이어 요청에 문제 없이 대응했습니다. 여기에는 이미 활성화되어 있던 플레이어는 물론 사고 발생 기간 동안 게시된 79개의 플레이어도 포함되었습니다.
플레이어 장애 조치 전술
다음은 S3 설정의 일부 모습입니다.
사건이 발생한 미국 동부 지역에서는 S3를 사용하지만, Amazon에서 제공하는 양방향 지역 간 복제 옵션을 구현했습니다.
또한 필요에 따라 다른 S3 버킷으로 자동 전환을 처리하는 s3-s3라는 자체 오픈 소스 Node.js 프로젝트를 만들었습니다. 즉, 정상적인 운영 조건에서 미국 동부 지역에 업로드하는 모든 파일은 장애 조치 지역으로 전송됩니다.
플레이어 관리 및 퍼블리싱 서비스가 S3와 상호 작용할 때마다 최악의 상황에 대비합니다. 오류가 발생하면 자동으로 재시도하고 재시도가 실패하면 자동으로 다른 리전으로 장애 조치합니다.
장애 복구는 개별 요청 수준에서 처리됩니다. 요청은 항상 기본 리전에서 시작하여 필요한 경우 장애 조치 리전으로 되돌아갑니다. 시스템을 전환하거나 되돌리기 위해 수동으로 개입할 필요가 없습니다.
양방향 복제 덕분에 장애 조치 리전으로 푸시해야 하는 모든 파일은 장애 조치 리전이 다시 정상화되면 자동으로 미국 동부 리전으로 다시 복제됩니다.
아래 그래프는 자동 페일오버가 실제로 작동하는 모습을 보여줍니다. 서비스는 가능한 한 자주 기본 S3 버킷을 계속 사용했지만 그 과정에서 꽤 많이 페일오버되었습니다. 대안: 오른쪽의 모든 요청이 실패하여 고객에게 문제를 일으켰을 것입니다.

따라서 아마존에서 문제가 발생하고 있다는 사실을 전혀 인지하지 못했다면, 저희는 그 점이 마음에 듭니다.