NGINX 로 50만 명 이상의 시청자에게 비디오 스트리밍 제공

Globo.com은 라틴 아메리카에서 가장 큰 온라인 미디어 그룹입니다. 시청자에게 뉴스, 엔터테인먼트, 스포츠와 같은 라이브 비디오 스트리밍 을 제공합니다.

목차

1. 도전
2. 스트리밍 솔루션
3. 스트리밍 결과
4. Globo.com에 대해

1. 도전

2012년 브라질 최고의 미디어 및 엔터테인먼트 포털인 Globo.com은 하루 방문자 수가 백만 명이 넘었고, 온라인 시청률이 전례없이 성장하고 있었습니다. 브라질 최고의 텔레비전 브랜드인 Grupo Globo의 온라인 지사인 Globo.com은 이 미디어 회사의 뉴스, 스포츠, 엔터테인먼트를 여전히 빠르게 성장하고 있는 방대한 시청자에게 온라인으로 배포하는 역할을 담당하고 있습니다.

방문자들은 뉴스와 시사 관련 기사뿐만 아니라 온라인에서 방송되는 수많은 Globo 뉴스보도, TV 프로그램, 스포츠 이벤트 등 훌륭한 동영상 콘텐츠를 즐기기 위해 Globo.com을 방문합니다. 이러한 사용자들은 기존 TV에 버금가는 사용하기 쉬운 고품질의 온라인 시청 환경을 기대합니다.

Globo.com이 처리해야 하는 엄청난 양의 트래픽으로 인해 인터넷을 통해 라이브 비디오를 전송하는 것은 심각한 기술적 과제가 되었습니다. 한 예로, 2010년 FIFA 월드컵 기간 동안 최대 30만 명의 동시 시청자가 온라인으로 경기를 실시간으로 시청했습니다. 당시 Globo.com은 축구장에서 웹으로 비디오를 스트리밍하기 위해 독점 미디어 서버와 Real-Time Messaging Protocol (RTMP)을 사용하고 있었습니다. 하지만 이 솔루션은 이상적이지 않았습니다.

미디어 서버는 특수 포트를 사용하여 비디오를 전송했기 때문에 방화벽 뒤에 있는 사용자는 스트리밍을 시청하는 데 어려움을 겪었습니다. 독점적인 비공개 소스 소프트웨어였기 때문에 문제를 디버깅하거나 운영을 모니터링하기 위한 계측 기능을 추가하기가 어려웠습니다. 또한 비디오는 Flash를 통해 전송되었기 때문에 iOS 기기를 사용하는 사용자는 스트림을 시청할 수 없었습니다.

특히 부하가 높을 때 성능도 문제가 되었습니다. RTMP는 상태 저장 프로토콜이기 때문에 여러 대의 서버에서 비디오 콘텐츠를 가져올 수 있는 대신 세션당 한 대의 컴퓨터에서 각 시청자에게 콘텐츠를 제공해야 했습니다. 로드 밸런싱은 제한적이었고, 장애 복구는 어려웠으며, 캐싱은 존재하지 않았습니다.

그 결과 트래픽이 폭주하는 시간대에 클라이언트는 과부하가 걸린 서버를 떠나 다른 서버에 자동으로 재연결을 시도했습니다. 하지만 그 서버도 과부하가 걸려서 연쇄적인 장애가 발생했습니다. 한 번 접속을 잃은 많은 사용자가 다시 돌아오지 않았습니다.

Globo.com의 비디오 플랫폼 개발자인 Juarez Bochi는 “창문 너머로 관객과 돈이 날아가는 것을 볼 수 있었습니다.”라고 설명합니다.

2. 스트리밍 솔루션

시청자 수가 증가하고 모바일 디바이스에서 비디오에 대한 수요가 증가함에 따라 Globo.com은 이전 미디어 서버에 번들로 제공되던 RTMP 솔루션에서 NGINX와 함께 제공되는 HTTP Live Streaming(HLS)으로 전환하기로 결정했습니다.

HLS는 iOS 디바이스에 대한 비디오 지원을 추가했을 뿐만 아니라 상태 비저장 HTTP 전송 방식을 통해 캐싱을 활용하고 로드 밸런싱의 이점을 최대한 활용하면서 성능과 확장성에 큰 영향을 미쳤습니다. 또한 HTTP 기반 비디오 전송과 NGINX를 사용하여 비디오 전송 아키텍처를 모니터링할 수 있게 되었습니다.

“NGINX는 놀라운 캐싱을 제공했습니다. 또한 다른 머신이나 가상 서버를 가동하기만 하면 되기 때문에 확장성도 뛰어났습니다.”라고 Globo.com의 소프트웨어 엔지니어인 Leandro Moreira는 설명합니다. “HLS는 사용자가 받아야 할 비트레이트 스트림을 더 잘 결정하기 때문에 더 나은 사용자 경험을 제공할 수 있었습니다. 또한 서버 팜에서 무슨 일이 일어나고 있는지 확인할 수 있는 계측 기능도 마음에 들었습니다.”

NGINX는 전 세계에서 가장 바쁜 100만 개의 웹사이트를 지원합니다. Netflix 및 Hulu 등 온라인 비디오 분야의 선두주자들이 콘텐츠를 전 세계에 빠르고 안정적으로 전송하기 위해 사용하고 있습니다. Apple의 HLS, Adobe의 HTTP Dynamiuc Streaming(HDS), RTMP와 같은 인기 있는 스트리밍 프로토콜을 즉시 지원하는 NGINX는 모든 디바이스와 네트워크에 맞게 스트리밍을 최적화합니다. NGINX 오픈 소스 소프트웨어는 추가 비디오 기능을 지원하도록 확장할 수 있으며, NGINX Plus에는 고급 비디오 기능이 내장되어 있습니다.

NGINX를 사용하는 Globo.com의 HLS 스트리밍 아키텍처에서는 원본 비디오가 HLS로 변환되고 전송을 위해 세그먼트화됩니다. 세분화를 통해 Globo.com은 이전 미디어 서버에서는 불가능했던 DVR 유형의 기능을 구현할 수 있습니다. NGINX와 Lua는 Redis 데이터베이스와 함께 동적 재생 목록을 생성하는 데 사용됩니다. 이를 통해 Globo.com의 사용자 지정 비디오 플레이어 사용자는 홈팀의 골과 같은 특정 장면을 반복해서 시청하고 다른 부분을 건너뛸 수 있어 시청 환경을 완벽하게 제어할 수 있습니다.

NGINX는 캐싱 및 중복성을 제공하면서 HLS 파일을 쉽게 사용할 수 있도록 합니다. 이 애플리케이션은 지리적 위치, 권한 부여, 인증(사용자 및 브로드캐스터 권리를 존중하는 데 중요)을 위한 모듈이 포함된 마이크로서비스를 사용하여 구축되었습니다. 브라질 제품이기도 한 스크림팅 언어인 Lua는 재생 목록 생성 및 혼잡한 연결에서 사용자를 위한 대기열 시스템(“waiting room”)에 사용됩니다.

또한 NGINX는 프론트엔드를 구동하여 비디오 스트림을 iOS 및 Android 기기와 PC 사용자를 위한 맞춤형 web-based Flash 비디오 플레이어릍 통해 전송합니다.

“NGINX는 놀라운 캐싱을 제공했습니다. 또한 다른 머신이나 가상 서버를 가동하기만 하면 되기 때문에 확장성도 뛰어났습니다. HLS가 사용자에게 제공할 비트레이트 스트림을 더 잘 결정하기 때문에 더 나은 사용자 경험을 제공할 수 있었습니다. 또한 서버 팜에서 어떤 일이 일어나고 있는지 확인할 수 있는 계측 기능도 마음에 들었습니다.”
– Leandro Moreira, Globo.com의 소프트웨어 엔지니어

Image: Full control over viewing experience Globo.com NGINX case study 스트리밍

3. 스트리밍 결과

50만 명 이상의 사용자에게 손쉽게 라이브 스트리밍 하기

축구는 브라질에서 인기가 높으며, 온라인 시청자 수가 이미 엄청나고 계속 증가하고 있기 때문에 Globo.com은 2014 FIFA 월드컵이 자사의 비디오 스트리밍 아키텍처를 시험대에 올릴 것이라는 것을 알고 있었습니다. 요청은 두 개의 데이터 센터에 있는 80개의 프론트엔드 NGINX 노드에서 로드 밸런싱 되었으며, 이 노드들은 또한 NGINX를 실행하는 6개의 백엔드 노드에서 비디오 세그먼트를 캐싱했습니다.

2014년 월드컵 기간 동안 Globo.com은 피크 시간대에 50만 명이 넘는 시청자에게 경기의 라이브 비디오 스트림을 아무런 문제 없이 전송했으며, 그 이상의 요청도 쉽게 처리할 수 있었습니다. 비디오 요청은 초당 125,000건에 달했으며, 경기 중 전송된 처리량은 640Gbps를 초과했습니다.

인프라 최적화를 위한 심층적인 가시성 확보]

Globo.com은 이전 미디어 서버를 통해 로그 파일을 확인하고 리소스 사용량을 모니터링하는 데 그쳤습니다. Globo.com은 NGINX와 함께 제공되는 HLS 스트리밍으로 전환한 후 스트리밍 인프라를 훨씬 더 자세히 분석할 수 있는 능력을 얻었습니다.

NGINX를 통해 Globo.com은 손쉽게 계측 기능을 추가하고 서버 팜을 위한 맞춤형 대시보드를 구축하여 CPU 및 메모리 사용률부터 비디오 버퍼링 및 캐시 누락률에 이르기까지 모든 것을 표시할 수 있었습니다.

이 정보를 통해 Globo.com은 비효율적인 부분을 정확히 찾아내고 전송 속도를 미세 조정할 수 있었습니다. HLS 및 NGINX 솔루션으로 가능한 계측을 통해 Globo.com은 비디오 버퍼링 속도를 600%까지 줄이고 캐싱 메커니즘을 최적화할 수 있었습니다.

NGINX 및 Lua를 통한 손쉬운 마이크로서비스 추가

2013년에 이미 비디오 전송 인프라의 성능과 확장성에 만족한 Globo.com은 2014년 월드컵을 대비해 사용자 경험을 개선하는 데 집중할 수 있었습니다.

핵심 기능 외에도 NGINX에는 기능을 확장할 수 있는 third-party 모듈 라이브러리가 있습니다. Lua third-party 모듈은 NGINX와 긴밀하게 통합되며 사용하기 쉬운 언어를 통해 빠르고 강력한 비동기 스크립팅을 제공합니다.

Globo.com은 NGINX와 Lua를 사용하여 시청자가 경기장에서 펼쳐진 멋진 플레이를 되감고 다시 볼 수 있는 DVR 기능을 지원하는 HLS 재생 목록을 동적으로 생성하는 마이크로서비스를 만들었습니다.

지역 ISP의 대역폭 병목 현상으로 인해 사용자들에게 비디오 전송 문제가 발생했을 때, Globo.com은 이 문제를 해결하기 위해 또 다른 마이크로서비스를 생성하여 너무 많은 사용자가 포화 상태의 대역폭 링크를 통해 비디오에 액세스하려고 할 때 “waiting room”을 생성할 수 있도록 NGINX와 Lua를 사용했습니다. 이를 통해 시청자에게 일관된 비디오 품질을 보장하고 고품질 콘텐츠 제공업체로서의 명성을 유지할 수 있었습니다.

Image of Globoplay for Globo case study about video streaming through NGINX, hls and rtmp 스트리밍

4. Globo.com에 대해

Globo.com은 Rio de Janeiro와 São Paulo에 지사를 두고 있는 라팅 아메리카 최대 미디어 대기업인 Organizações Globo의 인터넷 자사입니다. 이 회사는 브라질 최고의 웹 버티컬 포털을 통합하여 뉴스(G1), 스포츠(globoesporte.com), 동영상(GloboPlay), 셀러브리티(GShow)를 제공합니다. 그 외에도 조직의 다른 모든 미디어 부서에 대한 서비스 제공자 역할을 하며 인터넷 문제에 대한 전략 및 기술 지원도 제공합니다. 대용량 웹 배포에 탁월하며 국내 최대 규모의 동시 비디오 스트리밍 시청자에게 서비스를 제공합니다. 자세한 내용은 www.globo.com에서 확인할 수 있습니다.

NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 논의하십시오.

NGINX에 대한 최신 정보들을 빠르게 전달받고 싶으시다면, 아래의 뉴스레터를 구독하세요.

NGINX STORE를 통한 솔루션 도입 및 기술지원 무료 상담 신청

* indicates required