웹에서 비디오를 서비스하는 것은 가장 일반적인 시나리오 중의 하나가 되었습니다. 상품에 대한 설명 비디오, 동영상 교육 비디오, 광고, UCC 동영상, 뮤지비디오 등 정말 다양합니다.
그런데 한가지 이슈가 있죠. 네트웍 대역폭은 IT에서 가장 비용이 많이 드는 항목 입니다. 또한, 고화질을 원한다면 그 비용은 훨씬 더 비싸지죠.
그렇다면, 위와 같은 동영상을 호스팅 하는 방법과 그 비용을 줄일 수 있는 방법에 관심이 갈 수 밖에 없을텐데요, 그 부분을 오늘 설명드리도록 하겠습니다.
1. 무료 미디어 호스팅 서비스를 사용하는 방법
- YouTube, 마이크로소프트 Silverlight 스트리밍 서비스, NHN의 블로그에 연계하는 방법 등 다양하죠. 즉, 비디오 컨텐츠를 다른 회사의 네트웍을 이용해서, 그 회사가 대역폭 비용을 내도록 하는 방법이죠. 그 회사는 광고등으로 수익을 얻게 되는 방식 입니다. 마이크로소프트의 Silverlight 스트리밍 서비스는 10G의 컨텐츠까지 업로드할 수 있고, 한달에 5TB까지는 무료로 다운로드 가능하도록 제공 되는 서비스 입니다. (최대 1.4 Mbps Bit-rate 제공)
2. 자체 서버에서 미디어를 호스팅 하는 방법
- 미디어에 인증을 부여하고 싶거나, 큰 동영상을 서비스하는 경우, 또는 비디오에 광고를 넣고 싶은 경우에는 직접 호스팅을 하고 싶어질 겁니다. 컨트롤을 해야 하기 때문이죠.
이때는 두가지 옵션이 있습니다.
1) 스트리밍 서버 시나리오
. 스트리밍 시나리오에서는 클라이언트 (Silverlight, 윈도우 미디어 플레이어, 플래쉬 등)가 스트리밍 서버에 연결을 하게 됩니다. 스트리밍 서버가 비디오 스트림을 내려 보내고, 사용자는 앞으로 가거나 뒤로 돌려보기, 정지, 멈춤 등을 자유롭게 할 수 있습니다. 사용자가 브라우저를 닫거나, 다른 페이지로 이동하면 비디오 스트림이 자동적으로 데이터 보내는 것을 멈추게 되죠.
Windows Media Services (WMS)는 윈도우에서 무료로 다운받아 사용할 수 있는 스트리밍 서버이고, 윈도우 미디어 플레이어나 크로스 플랫폼 기능이 제공되는 Silverlight 등의 클라이언트를 사용할 수 있습니다. 웹에서 비디오 스트리밍을 제공할 때 가장 확장성이 뛰어나고 비용 효율적인 방식이며, 온디맨드 스트리밍, 또는 실시간 스트리밍 등의 방식으로도 사용될 수 있습니다. 또한, Windows Server 2008 Web Server 에디션에서도 구동 가능합니다.
2) 프로그레시브 다운로드 시나리오
. 프로그레시브 다운로드 시나리오에서 클라이언트 (플래쉬, Silverlight)는 웹서버에 직접 연결되어 비디오를 다운로드 받기 시작하며, 충분한 양이 다운로드 되면 바로 플레이가 가능합니다. 이 방식의 장점은 웹서버에 설정하는 것이 정말 쉽습니다. 웹서버에 해당 미디어를 복사한 후, URL 주소만 정해지면 클라이언트 비디오 플레이어가 플래이 합니다. 웹서버에 설정이 필요없고, 스트리밍 서버 셋업등의 과정이 불필요합니다.
프로그레시브 방식의 단점은 웹서버가 최대한 빨리 파일이 다운로드 한다는 것입니다. 사용자가 사이트에서 비디오 보기를 클릭하면 웹서버가 클라이언트로 해당 파일을 최대한 빠르게 보내기 시작합니다. 사용자가 처음부터 끝까지 비디오를 본다면 별 문제가 없지만, 비디오를 보다가 중간에 멈추거나, 다른 페이지로 옮겨 가면 보지도 않는 파일이 다운로드가 된다는 불합리한 부분이 있습니다. 보지도 않는데 다운로드 되는 내용이 수 메가바이트나 된다면, 그 만큼의 돈을 낭비하고 있는 셈이 되는거죠.
3. 그래서, IIS7.0 비트 레이트 Throttling 모듈 (Bit Rate Throttling Module)이 있습니다.
- 해당 모듈은 미디어 유형에 관계없이 Bandwidth, 즉 대역폭의 낭비를 막아줍니다. 최초로 마임타입 확인 후, 파일에 대해 Bit-rate 인코딩을 한 후 최초 20초간 플레이 할 수 있는 양의 미디어를 최대한 빠르게 전송합니다. 일단 20초 만큼의 미디어가 다운된 이후 부터는 Bit Rate Throttling 모듈이 전송되는 양을 제어하기 시작합니다. 그러면서, 클라이언트가 플레이어를 멈추거나 다른 페이지로 옮겨가는 것을 모니터링 하다가 사용자가 시청을 멈추는 순간 자동적으로 파일 보내기를 멈추게 하는 역할을 합니다.
예를들면, 35MB짜리 비디오 파일이 500Kbps의 속도로 인코딩되어 상영되면, IIS는 20초에 해당하는 만큼의 파일을 즉시 내려보낸 후 (20초 * 500Kbps, 1.25MB), 이후에는 초당 500Kbps의 컨텐츠를 내려보냅니다. (20초 만큼의 버퍼만 갖도록 유지, 사용자가 보다가 버퍼링이 일어나지 않도록 하기 위함)
만약, 1분 후에 사용자가 비디오 보기를 멈추거나 다른 페이지로 옮겨 가면, IIS가 상황을 인지하고 컨텐츠 전송을 멈추게 됩니다. IIS는 단지 80초에 해당하는 비디오만 다운로드 했기 때문에 전체 35MB 중 (5M, 즉 80초 * 500kbps)의 대역폭만 사용한 셈이 되는 것이죠. 이 30MB가 수백번 반복 된다면 대역폭, 즉 비용을 엄청나게 절약할 수 있게 되는 것입니다.
Bit Rate Throttling Module Setup
Bit Rate Throttling Configuration Walkthrough
Bit Rate Throttling Extensibility
ScottGu's의 블로그를 참고하여 글을 정리하였습니다.