ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 당신이 넷플릭스 같은 서비스를 디자인 한다면 - 널널한 개발자 TV
    세미나, 영상 요약정리 2022. 7. 7. 00:01
    728x90

    당신이 넷플릭스 같은 서비스를 디자인 한다면? #1

    당신이 넷플릭스 같은 서비스를 디자인 한다면? #2

    당신이 넷플릭스 같은 서비스를 디자인 한다면? #3

     

    당신이 넷플릭스 같은 서비스를 디자인 한다면?

    위의 질문의 의도는 당신이 아는 것을 전부 털어놓아 보아라입니다.

     

    "설계를 어떻게 할 것인가?"에 대한 질문입니다.

     

    기본적으로 웹 기술 + Streaming 기술이 필요합니다.

     

    넷플릭스같은 서비스는 Web기반으로 이루어지고 WAS + DB 구조로 이루어져 있습니다.

     

    Web기반이기 때문에 부하분산이 중요하고 회원 로그인에 대한 인증 + 서비스 + 과금 + 다중계정  이슈등이 중요합니다.

     

    또한 콘텐츠를 만들어서 판매하는 사람들에게는 무단 복제/배포가 되지 않는 콘텐츠 보호라는 측면이 매우 중요합니다.

     

    따라서 DRM 시스템 + 워터마킹에 대한 개념도 필요합니다.

     

    신입 개발자의 관점에서

    신입 개발자의 관점에서는 어떻게 대답할 수 있을까요?

     

    우선 미디어 서비스에 대한 구조에 대해서 살펴보겠습니다.

    https://www.youtube.com/watch?v=7OZ7R0VoMZM

     

    보통 미디어 서버에 동영상 파일에 대한 정보들이 관리됩니다.

     

    만약 철수가 Web에 접속하게 되면 접속과 로그인(인증)과정을 수행하고 영상들의 목록에 대한 정보를 받게 됩니다.

     

    이때 철수가 영상을 선택하게 되면 실제 동영상 재생으로 이어지게 됩니다.

     

    이때 미디어 서버가 가지고 있는 mp4 파일의 url을 노출하는 방법으로 동영상을 제공할 수 있습니다.

     

    그러면 철수가 영상을 선택했을 때 다이렉트로 미디어 서버로 요청이 갈까요?

     

    또한 영상 같은 경우에는 특정 영상에 따라 인기도(트래픽)가 집중되는 현상이 벌어질 수 있습니다.

     

    신입 개발자의 대답

    웹서버는 별도의 목록만 제공하도록 하고 미디어 서버는 별도로 분리시켜서 실질적인 Streaming 데이터 전송이 이루어지도록 합니다.

     

    이때 우려되는 문제로 DB에 영상 목록 + Url을 저장하여 Url을 제공할 경우에 제3자에게 유출될 가능성이 있습니다.

     

    즉, DRM(Digital rights management) : 디지털 권리 관리에 대한 개념이 필요합니다.

     

    워터마크 같은 것을 영상에 넣어 배포한 사용자를 추적하거나 URL을 암호화하고 개인이 복호화하는 방식으로 저작권을 지키려고 할 수 있습니다.

    워터마크 예시

    하지만 근본적으로 모니터로 송출되기 때문에 비디오 캡처라던가 외부장치로 녹화하는 경우는 막을 수 없습니다.

     

     

    그리고 부하분산에 대한 이야기로 만약 미디어 서버 하나가 10명의 동시접속만 감당할 수 있는데 많은 요청이 온다면?

    미디어 서버를 병렬적으로 증가시켜야 합니다.

     

    경력 개발자의 대답

    신입 개발자의 대답 +

     

    만약 미디어 서버가 한국에 있다면 한국에 있는 사람은 미디어를 빠르게 접할 수 있지만 미국에 있는 사람은 느리게 접할 수밖에 없습니다. (네트워크 전송시간이 길어질 수 밖에 없기 때문)

     

    https://www.youtube.com/watch?v=poBNuLD7WuY

     위에 있는 한국, 미국을 한국의 통신사로 생각해 보겠습니다.

     

    KT , SKT, U+ 와 같은 통신사가 존재하고 길동이는 KT를 사용하고 있습니다.

     

    KT, SKT, U+ 미디어 서버를 각각 두고 원본 영상을 복사하여 각각 저장합니다.

     

    이후에 KT를 사용하는 길동이가 영상을 요청하게 되면 KT 미디어 서버에서 영상을 요청하게 됩니다.

     

    이후에 U+ 를 사용하는 영희가 영상을 요청하게 되면 U+ 미디어 서버에서 영상을 요청하게 됩니다.

     

    위의 방식이 CDN(Content Delivery Network) 방식을 모방한 방식입니다.

     

    이렇게 서버를 3조각으로 분산해놓으면 KT, SKT, U+ 가입자 수를 기반으로 동시접속자가 얼마나 몰릴 것인지 예상할 수 있으며 이를 기반으로 서버의 개수를 선택할 수 있습니다.

     

    스트리밍 서비스는 저지연과의 싸움입니다. (사용자는 영상이 느리거나 끊기면 답답함을 느낌)

     

    그래서 보통 CDN 서비스를 사용하며 CDN 서비스가 위의 예시들을 지원해줍니다.

     

    또한 운영체제적으로 MP4라는 미디어는 HDD(하드디스크)에 저장되어 있습니다. 

     

    접근 속도를 빠르게 하기 위해 RAM에 올려야 하는데 10GB짜리 미디어를 램에 올리는 것은 용량적으로 문제가 발생할 수 있습니다.

     

    미디어 서버의 I/O 속도는 매우 빨라야 합니다.

    미디어 서버에 100명 정도가 접속했다고 가정했을 때 하드디스크의 속도가 느려질 수 있습니다.

    이때는 커널 수준에서 멀티미디어 송수신에 적합하도록 튜닝을 합니다.

     

    또한 추가적으로 HLS(Http Live Streaming) 프로토콜에 대해서도 알면 좋습니다.

     

     

    핵심 키워드 정리

    회원 로그인에 대한 인증 + 서비스 + 과금 + 다중 계정, 영상 목록 등을 관리하는 웹서버와 미디어 콘텐츠를 제공하는 미디어 서버를 분리

     

    콘텐츠 보호를 위한 DRM 시스템 + 워터마킹

     

    네트워크 속도 향상을 위해 지역별로 여러 개의 미디어 서버를 두고 병렬적으로 관리

     

    HLS, WebRTC 등 라이브 스트리밍을 위한 프로토콜

     

     

     

    댓글

Designed by Tistory.