넷플릭스에서 오프라인 다운로드 기능 프로젝트를 할 때, 아래와 같은 이슈가 있었다고 한다.
오프라인으로 영상을 보는 건 기존의 재생 시스템과는 다른 플로우를 타게된다. 그러면서 영상 라이센스를 관리하는 새로운 시스템이 필요해졌다.
넷플릭스는 이 시스템을 만들면서 있었던 에피소드를 기술 블로그에 정리해두었다.
넷플릭스 기술 블로그 - Scaling Event Sourcing for Netflix Downloads, Episode 1
위의 글을 읽어보고, 어떤 사건이 있었는지 블로그에 정리해보려고 한다.
넷플릭스의 기존 영상 재생 flow
넷플릭스의 영상 재생 시스템의 동작방식은 아래와 같다.
디바이스에서 보려고 하는 영화 정보랑 기기 정보들을 서버로 보내면, 영화랑 관련된 메타 데이터들을 내려준다. 여기서 메타 데이터란 영화의 이미지, 스트리밍으로 영상을 받을 URL 등을 의미한다. ( 넷플릭스의 스트리밍 시스템 관련 자료 링크 )
디바이스에서 다운받은 영화 스트림 데이터는 DRM이라는 걸 기반으로 암호화되어있다. 그리고 이 데이터는 영화를 보기 직전에 복호화된다고 한다.
이처럼 암호화 되어있는 영상 데이터를 복호화하려면 라이센스가 필요했다. 그래서 기존 시스템은 디바이스에서 영상에 대한 메타 데이터를 받은 후, 그때마다 라이센스를 요청해서 이 값으로 복호화를 하는 형식이였다.
이 당시의 라이센스는 영상 스트림 데이터를 볼 때에만, 사용되었었다. 데이터를 복호화하는 한 순간에만 사용되기 때문에 라이센스의 라이프 타임은 짧은 편이였다.
넷플릭스의 DRM 시스템
넷플릭스에서는 여러개의 DRM을 지원한다. 그리고 각 DRM 서버는 마이크로 서비스 아키텍처를 기반으로 독립적으로 관리되고 있었다. 왜냐하면 DRM은 장애가 발생하면 안되는 서비스이기 때문이다.
넷플릭스에 있는 여러 서비스는 예상치못한 장애가 발생하거나 응답 속도가 느려질 가능성이 있다. 그러나 DRM 서비스에서는 이러한 상황이 발생하면 절대 안된다. 왜냐하면 DRM 서비스에서 장애가 발생하면, 영상 재생 자체가 안되기 때문이다.
DRM 서비스는 가용성과 복원력 (resiliency)이 중요했다. 그래서 스케일 인/아웃이 간편해야했고, 배포도 독립적으로 관리될 수 있어야했다. 유연하게 스케일 인/아웃을 관리하기 위해서 예전부터 DRM 시스템은 stateless protocol으로 관리되었다고 한다.
오프라인 다운로드 영상은 기존과는 살짝 다르게 처리된다.
플로우는 아래의 설명과 같다.
- 오프라인 다운로드가 가능한 영상이면, 디바이스는 영상 복호화 라이센스를 요청한다.
- 라이센스 서버는 다운로드 유효성 관리 서버에 이 유저와 디바이스가 다운로드 영상을 받을 수 있는 애인지 물어본다.
- 다운로드 유효성 관리 서버에서 유효성 체크 결과와 오프라인 영상 재생에 필요한 다른 정보들을 함께 리턴해준다.
- 그러면 라이센스 서버에서 라이센스 정보와 오프라인 영장 재생 정보를 디바이스로 내려준다.
- 그러면 디바이스에서는 암호화된 데이터를 다운받기 시작한다.
크게 달라진 점은 라이센스를 받을 때, 유저가 다운로드를 받을 수 있는 영상인지 한번 더 체크하는 플로우가 추가되었다는거다.
다운로드 영상 라이센스의 라이프사이클
이전에는 라이센스를 영상 재생 직전에 사용하고 이를 파기했다.
그런데 다운로드 기능에서는 유저가 영상을 재생하거나, 정지 시키는 작업 등을 할 때마다
다운받은 라이센스를 재사용해서 영상을 복호화한다.
그리고 일정기간이 지나면 라이센스는 영상의 유효시간을 체크하는데,
만약 유효시간을 연장할 수 있는 영상인 경우 다시 뒷단에서 새로운 라이센스를 요청하게 된다.
만약 다운로드 서비스를 연장시켜줄 수 있는 영상이면, 라이센스를 새로 갱신해준다. 그러면 유저는 오프라인 모드에서 영상을 볼 수 있게 된다.
그리고 유저가 영상을 삭제하면, 라이센스도 함께 지워지게 된다.
생략된 내용들도 많고, 더 읽어볼 내용들도 많다.
더 구체적인 내용은 넷플릭스 블로그를 참고하면 된다.
넷플릭스 기술 블로그 - Scaling Event Sourcing for Netflix Downloads, Episode 1
넷플릭스 기술 블로그 - Scaling Event Sourcing for Netflix Downloads, Episode 2
참고자료
DRM :
stateless protocol vs stateful procol ( 한국 블로그 )
Scaling Event Sourcing for Netflix Downloads ( 해외 자료, 영상 자료가 포함되어 있음 )
'관심사 > IT와 서비스' 카테고리의 다른 글
(넷플릭스) Growth Engineering at Netflix — Accelerating Innovation ( 작성중 ) (1) | 2018.06.27 |
---|---|
커머스 업계 트렌드 찾아보기 - 미디어 커머스 (0) | 2018.04.22 |
(좋아하는 It 서비스) 왓챠플레이! (0) | 2017.07.01 |
(넷플릭스) 넷플릭스와 왓챠플레이의 스트리밍 방식 (4) | 2017.05.10 |
DEVIEW 2016 2일차 후기 (0) | 2016.11.04 |