Amazon Web Services 한국 블로그
프랑스 TF1 방송의 AWS 기반 FIFA 월드컵 결승전 온라인 생중계 고군분투기
수백만 명의 시청자가 역사상 가장 짜릿한 월드컵 결승전을 시청하기 3년 전, 프랑스의 선도적인 사설 TV 채널인 TF1은 새로운 클라우드 기반 아키텍처 채택을 포함하여 방송 플랫폼의 기반을 재정의하는 프로젝트를 시작했습니다.
그들과 다른 모든 방송사들은 전통적인 공중파 방송의 시청자가 감소하고 스마트 TV와 더불어 FireTV, ChromeCast, AppleTV와 같은 박스, 노트북, 태블릿 및 휴대폰과 같은 디지털 플랫폼의 인기가 높아지는 것을 관찰하였습니다. 필자가 최근 AWS 프랑스 팟캐스트에서 인터뷰한 eTF1(TF1 소속 디지털 플랫폼 담당 그룹)의 CTO Thierry Bonhomme에 따르면 현재 디지털 방송은 TF1 전체 시청자 중 20~ 25%를 차지한다고 합니다.
이러한 온라인 및 모바일 사용으로 인해 IT 시스템에서 매우 특정한 트래픽 패턴이 발생합니다. 즉, 경기 시작 몇 분 전에 연결 및 인증이 최고조에 달하고 변화하는 다양한 네트워크 품질을 통해 안정적으로 전송되어야 하는 수백만 개의 비디오 스트림이 발생합니다.
이러한 기술적 문제 외에도 경제적인 문제도 있습니다. 바로 애국가 공연 전이나 하프타임 15분과 같은 중요한 순간에 광고를 게재하는 것입니다. 디지털 플랫폼은 자체 광고 세트를 판매하는데, 이는 방송을 통해 배포되는 광고와는 다르며 지역마다 다를 수도 있습니다.
이러한 모든 비디오 스트림은 가정의 1Gb/s 광섬유부터 원격 지역의 3G 네트워크에 이르기까지 다양한 장치와 네트워크 조건을 통해 수백만 명의 시청자에게 전송되어야 합니다.
그러한 방송 준비를 위해 TF1이 채택한 접근 방식에는 디지털 아키텍처 재설계, 새 시스템의 성능을 보여주는 지표 설정, 팀 구성원의 프로세스, 역할 및 책임 정의가 포함되었습니다. 이러한 방송 준비의 일환으로 AWS는 TF1이 확장성, 성능 및 보안 요구 사항을 충족하도록 시스템을 지원했습니다.
Thierry와의 대화에서 그는 방송의 미래를 위한 새로운 기술 아키텍처를 설계할 때 회사가 가지고 있었던 두 가지 주요 목표를 설명했습니다. 첫 번째는 플랫폼의 확장성이고 두 번째는 성능에 대한 수요 충족입니다. 확장성은 동시 시청자의 피크 타임을 흡수하는 데 있어 중요합니다. 또한 비디오 스트림이 빠르게 시작되고(3초 이내) 비디오 플레이어가 중단(리버퍼링) 되지 않도록 하려면 고성능이 필요합니다. 자신의 화면에서 시청하기 전에 이웃이 소리치는 것을 듣고 자신의 팀이 방금 득점했는지 알고 싶어하는 사람은 아무도 없습니다.
디지털 방송 기술의 진화
2019년부터 TF1은 디지털 방송 아키텍처를 재설계하고 셋톱 박스, Android 또는 iOS 기기에서 실행되는 백엔드 API 또는 프런트 엔드 애플리케이션과 같은 코드의 중요한 부분을 다시 작성하기 시작했습니다. 마이크로 서비스 아키텍처를 채택하여 Amazon Elastic Kubernetes Service(EKS)에 배포하고 최고 성능을 위해 Go 프로그래밍 언어로 작성했습니다.
그들은 프런트 엔드 애플리케이션과 백엔드 애플리케이션 간의 계약을 정의하는 REST 및 GraphQL API 세트를 설계했으며 확장성을 극대화하기 위해 Apache Kafka를 사용한 이벤트 기반 아키텍처를 설계했습니다. Amazon CloudFront를 비롯한 여러 콘텐츠 전송 네트워크를 채택하여 비디오 스트림을 클라이언트 디바이스에 안정적으로 배포했습니다. 2020년 8월, TF1은 UEFA 유럽 챔피언 리그에서 바이에른 뮌헨이 파리 생제르맹을 1-0으로 꺾었을 때 대규모 스포츠 이벤트에서 새로운 플랫폼을 테스트할 기회를 얻었습니다.
필드에서 액션을 촬영하는 순간부터 모바일 기기에서 보는 순간까지 어떤 일이 벌어지는지 살펴보겠습니다.
고품질 비디오 스트림은 파리에 위치한 TF1 타워에 먼저 도착하고 하드웨어 인코더가 기기에 맞게 필요한 비디오 스트림을 생성합니다. AWS Elemental Live 하드웨어 인코더는 TV용 4K, 고화질(1080), 표준 화질(720) 및 다양한 모바일 디바이스와 네트워크 대역폭에 적합한 기타 다양한 형식 등 최대 8가지 인코딩을 생성할 수 있습니다. (이 추가 비디오 인코딩 단계는 일반 TV에서 수신하는 비디오와 모바일 장치에서 수신하는 피드 사이에 때때로 추가 지연 시간이 발생하는 이유 중 하나입니다.)
시스템은 인코딩된 비디오를 패키징하기 위해 AWS Elemental Media Package로 전송하고, 마지막으로 플레이어 애플리케이션이 비디오 세그먼트를 가져오는 CDN으로 전송합니다. 플레이어 애플리케이션은 장치 크기 및 사용 가능한 현재 네트워크 대역폭에 따라 최상의 비디오 인코딩을 선택합니다.
프랑스 선수 킬리안 음바페가 1966년 이후 처음으로 월드컵 결승전에서 해트트릭(3골)을 득점하는 모습을 지켜보기 1년 전인 2021년 말, TF1은 이전 경험과 개선이 필요한 부분을 바탕으로 위험을 식별하여 빅 이벤트를 준비하기 시작했습니다. Thierry는 다양한 경기 시나리오를 기반으로 예상 관객 규모에 대한 가설을 세웠던 방법을 설명했습니다. 프랑스 국가대표팀이 대회에 오래 참가할수록 예상 트래픽이 더 많아집니다.
토너먼트의 각 단계(예선전, 준준결승, 준결승, 결승)의 위험을 분류했습니다. 이러한 시나리오를 바탕으로 이 플랫폼은 게임 시작 15분 전에 플랫폼에 접속하는 시청자 450만 명을 유지할 수 있어야 한다고 판단했습니다(초당 5,000명의 신규 시청자 수).
이러한 수준의 확장성을 위해서는 TF1 팀뿐만 아니라 AWS 클라우드 서비스, 인증 및 권한 부여 서비스, CDN 서비스 등 사용 중인 모든 외부 시스템의 준비가 필요합니다.
시청자가 도착하면 여러 플로우 및 API 호출이 트리거됩니다. 시청자는 인증을 받아야 하며, 일부는 새 계정을 만들거나 비밀번호를 재설정해야 합니다. 인증이 완료되면 시청자는 홈페이지를 보게 되고, 이 홈페이지는 차례로 여러 API 호출을 트리거하는 데 그 중 하나는 카탈로그 서비스에 대한 호출입니다. 시청자가 실시간 스트림을 선택하면 비디오 스트림 URL을 수신하기 위한 다른 API 호출이 이루어집니다.
그러면 비디오 파트가 시작됩니다. 클라이언트측 플레이어가 선택한 CDN에 연결되고 비디오 세그먼트 다운로드를 시작합니다. 동영상이 재생되면 플랫폼은 스트리밍이 고품질로 원활하게 전송되고 리버퍼링을 일으킬 수 있는 드롭이 없는지 확인해야 합니다. 이러한 모든 요소는 최상의 시청자 경험을 보장하는 데 중요합니다.
FIFA 월드컵 결승전 생중계 준비
프랑스가 결승전에 진출하여 아르헨티나와 맞붙기 6개월 전, TF1은 AWS를 비롯한 벤더와 긴밀하게 협력하여 요구 사항을 정의하고 용량을 확보하며 테스트 및 실행 계획을 세우기 시작했습니다. 이때 TF1은 AWS Enterprise Support 플랜의 전용 프로그램인 AWS Infrastructure Event Management에 참여했습니다. 당사의 전문가들은 쇼핑 홀리데이, 제품 출시, 마이그레이션과 같은 계획된 이벤트(이 경우에는 세계 최대의 축구 경기)의 준비 및 실행 과정에서 아키텍처, 지침 및 운영 지원을 제공합니다.
이러한 이벤트의 경우 AWS는 고객이 운영 준비 상태를 평가하고, 위험을 식별 및 완화하며, AWS 전문가와 함께 자신 있게 실행할 수 있도록 지원합니다.
API의 확장성을 테스트하기 위해 특별히 주의를 기울였습니다. TF1 팀은 사용자가 플랫폼에 연결하고, 인증하고, 프로그램을 선택하고, 비디오 스트림을 시작하는 것을 시뮬레이션하는 부하 테스트 엔진을 개발했습니다. 실제 트래픽을 면밀히 시뮬레이션하기 위해 TF1은 또 다른 하이퍼스케일 클라우드 공급자를 사용하여 AWS 인프라에 요청을 보냈습니다.
테스트를 통해 대시보드에서 관찰할 올바른 지표와 경보를 생성하는 올바른 값을 정의할 수 있었습니다. Thierry는 초당 5,000개의 새로운 연결을 시뮬레이션하는 로드 시뮬레이터가 처음으로 최고 속도로 실행되었을 때 전체 백엔드에 장애가 발생했다고 말했습니다.
하지만 다른 세계 정상급 팀과 마찬가지로 TF1도 이를 유리하게 활용했습니다. 시스템을 튜닝하는 데 2~3주가 걸렸습니다. 클라이언트 애플리케이션에서 중복되는 API 호출을 제거하고 적극적인 캐싱 전략을 적용했습니다. 이러한 트래픽에 대응하여 백엔드 플랫폼을 확장하는 방법을 배웠습니다. 또한 부하가 걸린 주요 지표의 가치를 식별하는 방법도 배웠습니다.
Android 및 iOS 앱에 대해 몇 차례 백엔드 배포를 실시하고 새 릴리스를 출시한 후 시스템이 부하 테스트를 성공적으로 통과했습니다. 이때가 이벤트가 시작되기 한 달 전이었습니다. 그 순간 TF1은 치명적인 버그가 발견되지 않는 한 카타르에서의 첫 킥오프 전까지 모든 신규 개발 또는 배포를 중단하기로 결정했습니다.
모니터링 및 계획
Thierry는 기술 플랫폼은 프로젝트의 한 부분에 불과하다고 말했습니다. 또한 Datadog와 Grafana를 사용하여 지표 대시보드를 설계하여 주요 성과 지표를 모니터링하고 이벤트 중에 이상 현상을 감지했습니다. Thierry는 평균값을 관찰할 때 그림의 일부를 놓치는 경우가 많다고 지적했습니다. 예를 들어 평균 대신 P95 백분위수 값을 관찰하면 사용자의 5%에 대한 경험을 알 수 있다고 그는 말했습니다.
3백만 명이 있다면 5%는 15만 명의 고객을 의미하므로 고객의 경험을 아는 것이 중요합니다. (참고로 이 백분위수 기법은 Amazon과 AWS에서 모든 서비스 팀에서 일상적으로 사용되고 있으며 Amazon CloudWatch에는 백분위수 값 측정 지원 기능이 내장되어 있습니다.)
그는 경기 중 3백만 명이 검은 화면을 쳐다보는 악몽을 포함하여 TF1은 최악의 상황을 발생하는 것도 대비했다고 말했습니다. TF1은 초기에 커뮤니티 관리자와 소셜 미디어 소유자를 참여시켰으며 여러 시나리오에 대한 보도 자료와 소셜 미디어 메시지를 준비했습니다.
또한, 즉각적인 조치가 필요한 상황이 발생했을 때 의사소통과 대응 시간을 줄이기 위해 매 게임마다 주요 팀원들을 모두 “작전실”에 모을 계획도 세웠습니다. 이 팀에는 AWS 기술 계정 관리자, 인증 서비스 담당자, 기타 CDN 공급업체가 포함되었습니다. 또한 AWS는 서비스 팀과 프리미엄 지원 팀의 상주 엔지니어가 서비스 상태를 모니터링하고 문제가 발생할 경우 대응할 준비를 하였습니다.
공격은 축구 현장에만 있지 않습니다!
토너먼트가 시작된 후 세 번의 중요한 순간을 통해 플랫폼을 실제로 테스트할 수 있었습니다. 즉 개막식, 첫 경기, 특히 TF1 관중들에게 프랑스 팀의 첫 경기였습니다. 개막 다음 주에 토너먼트가 진행되고, 특히 프랑스 팀이 경기를 치름에 따라 IT 시스템에 가해지는 강도, 긴장감, 부하가 높아지면서 TF1 팀은 트래픽 추정치를 재평가하고 각 경기가 끝난 후 보고를 들었습니다. 하지만 현장에서 격렬한 액션이 펼쳐지는 동안 TF1 팀은 무대 뒤에서 나름의 흥분되는 상황에 직면했습니다.
준준결승전을 시작으로 팀은 광범위한 분산 IP 주소에서 비정상적인 활동을 발견했고, 시스템이 손상된 시스템 네트워크로부터 대규모 분산 서비스 거부(DDOS) 공격을 받고 있다고 판단했습니다. 누군가 서비스를 중단하고 수백만 명이 시청하지 못하도록 막으려 했습니다. TF1은 이러한 유형의 공격에 익숙하며 대시보드를 통해 실시간으로 트래픽 패턴을 식별할 수 있었습니다.
AWS Shield 및 AWS Web Application Firewall과 같은 서비스는 사용자 경험에 영향을 미치지 않으면서 사고를 완화하는 데 도움이 되었습니다. TF1 보안 팀과 AWS 전문가는 추가 분석을 수행하여 다음 게임의 일부 트래픽 및 IP 주소 패턴을 사전에 차단했습니다.
하지만 준결승전과 결승전에서는 공격의 강도가 더 강해졌는데, 10분 동안 4천만 건의 요청이 접수되면서 정점을 찍었습니다. Thierry는 “이러한 공격은 술래잡기와 같은 게임”이라고 말했습니다. 공격자는 새로운 전략을 시도하고 새로운 패턴을 적용하지만, 작전실에 있는 팀은 이를 탐지하고 필터링 규칙을 동적으로 업데이트하여 시청자가 서비스 품질의 변화를 감지하기도 전에 이를 차단합니다. 길고 치밀한 준비가 그 목적에 부합했고, 모두가 무엇을 해야 할지 알고 있었습니다. Thierry는 공격이 아무런 결과 없이 성공적으로 방어되었다고 보고했습니다.
스릴 넘치는 피날레
2022년 12월 18일 프랑스가 경기장에 들어섰을 때 TF1은 플랫폼에서 기록을 경신할 것이라고 예상했습니다.
Thierry는 트래픽이 예상보다 높았지만 플랫폼이 이를 흡수했다고 말했습니다. 그는 또한 경기 초반 아르헨티나가 선두를 달리고 있을 때 TF1 팀의 연결이 점점 끊기는 것을 목격했다고 설명했습니다…
즉, 경기 종료 10분 전 음바페가 첫 골을 넣기 전까지 말입니다. 이때 모든 대시보드에는 게임의 마지막 스릴 넘치는 순간을 맞아 시청자가 갑자기 돌아오는 모습이 표시되었습니다. 최고조에 달했을 때는 320만 개 이상의 디지털 플레이어가 동시에 연결되어 4개의 CDN을 통해 초당 3.6테라비트의 발신 대역폭을 제공했습니다.
또한 Amazon CloudFront는 전 세계 18개 방송사가 동영상 스트림을 전송할 수 있도록 지원했습니다. 토너먼트 기간 동안 총 4천8백만 개 이상의 고유 클라이언트 IP가 전 세계 450개 이상의 엣지 로케이션 중 하나에 연결되었으며, 토너먼트 마지막 경기에서 이러한 고객 배포는 거의 초당 23테라비트로 최고치를 기록했습니다.
온라인 생중계의 미래
아르헨티나가 결국 승리를 거두고 리오넬 메시가 오랫동안 바라던 월드컵 우승을 달성했지만, 2022 FIFA 월드컵은 TF1 팀에게 프로세스, 아키텍처 및 구현이 수백만 명에게 고품질 시청 경험을 제공할 수 있음을 입증했습니다.
TF1 팀은 이제 이 플랫폼이 2023년 9월에 있을 럭비 월드컵과 2027년에 있을 차기 프랑스 대통령 선거와 같이 향후 계획된 대규모 이벤트를 흡수할 준비가 되었다고 확신합니다. Thierry는 디지털 방송이 결국에는 공중파 방송보다 더 많은 시청자를 확보하고 3백만 명 이상의 동시 시청자를 확보하는 것이 새로운 표준이 될 것이라고 예측하면서 대화를 마무리했습니다.
귀사도 클라우드 컴퓨팅의 힘을 사용하여 비즈니스를 혁신하고 싶다면 지금 AWS Enterprise 지원 담당자에게 문의하십시오.