아프*카tv, 유*브 등등 동영상 플랫폼에 관한 질문입니다.
안녕하세요 프론트엔드 개발자로 취업을 준비하고 있는 코린이입니다.
포트폴리오를 준비하면서 그에 따른 기획안을 작성중에 있습니다.
동영상 강의 웹사이트를 제작하려고 하는데요. 제가 질문드리고 싶은것은
아무래도 수많은 영상들을 관리하게 될텐데 제목에 적어놓은 아프*카tv, 유*브, 그리고 여타 동영상 플랫폼들은
많은 영상소스들을 어떻게 관리하는지(용량 측면에서) 궁금합니다.
또한 유저들이 원하는 영상을 선택하였을 때 어떻게 송출이 되는지 그 흐름을 대략적으로 알려주시면 감사하겠습니다 ㅠ
질문하신 내용은 동영상 스트리밍 시스템에 대한 개념에 대한 부분인 것 같습니다.
동영상 스트리밍 시스템을 제대로 구축하자면 알아야 하는 지식이 상당히 많습니다만
대략적인 개념만 설명하자면 아래와 같습니다.
먼저 동영상 다운로드 서비스와 동영상 스트리밍 서비스의 차이에 대한 개념 이해가 필요합니다.
동영상 다운로드 서비스는 말 그대로 동영상 파일을 다운로드 하는 서비스입니다.
즉, 단순히 동영상 파일을 서버에 올려놓는 것만으로 쉽게 구현할 수 있습니다.
사용자는 동영상 파일 다운로드 주소로 접속해서 동영상 파일을 다운로드 받고 PC에서 재생하게 됩니다.
그런데 동영상 다운로드 서비스로 동영상 서비스를 만들면 네트워크 용량 문제가 발생하게 됩니다.
예를 들어 1G짜리 동영상을 서버에 올렸다고 가정했을 때
사용자는 해당 동영상을 보기 위해 1G의 동영상을 모두 다운로드 받아야만 재생이 가능합니다.
즉, 동영상을 보려면 네트워크 트래픽을 무조건 1G를 사용하게 되고
사용자 역시 1G가 모두 다운로드 될 때까지 기다려야 합니다.
이런 문제를 해결하기 위해 동영상 스트리밍이라는 개념이 나옵니다.
동영상 스트리밍은 서버에 올라가 있는 동영상 파일을 네트워크를 통해 사용자에게 서비스할 때
재생되는 동영상을 조금씩 나눠서 보내는 것을 말합니다.
예를 들어 1G짜리 동영상 일지라도 10M씩 영상을 잘라서 보낸다고 보시면 되겠습니다.
따라서 사용자 입장에서는 전체 동영상 용량은 1G일지라도 10M가 다운로드 될때마다 영상을 볼 수 있기 때문에
오래 기다리지 않고 바로 동영상을 볼 수 있게 됩니다.
또한 영상을 모두 보는 것이 아니라면 1G의 네트워크 트래픽을 모두 사용하지 않아도 됩니다.
이러한 동영상 스트리밍이 가능하려면 영상을 그런 스트리밍으로 변환하여 송출하는 프로그램이 필요한데
예를 들면 FFMPEG나 Wowza와 같은 프로그램 들을 찾아보실 수 있습니다.
동영상 스트리밍 서비스를 위해 그 다음으로 알아야 할 것은 동영상 저장에 관한 것입니다.
아시다시피 동영상은 일반적으로 용량이 큰 파일인데 그렇다보니 저장 용량에 대한 이슈가 발생합니다.
이 문제를 해결하기 위해 영상 파일을 여러 서버에 분산하여 저장하거나
파일을 캐시라는 서버에 저장하여 로딩 속도를 향상시키는 기술 등이 필요한데
이런 기술의 집합으로 CDN (Content Delivery Network)이라는 용어가 사용되곤 합니다.
즉, 이 부분에 대해서는 CDN으로 찾아보시면 보다 자세한 내용들을 보실 수 있습니다.
요컨대, 동영상 스트리밍 시스템을 자체적으로 구축하려면 기본적으로 위와 같은 기술 스펙과 비용이 필요합니다.
따라서 관련한 다양한 솔루션 프로그램과 서비스들도 많이 있는데
위 개념을 이해하신 상태에서 찾아보시면 좀 더 수월하게 이해하실 수 있으실 것 같습니다.