소프트웨어-이야기/아키텍처

(넷플릭스) 데이터과학을 기반으로한 넷플릭스의 스트리밍 최적화

americano_people 2017. 5. 10. 01:34

넷플릭스에서 QoE를 높이기 위해 하고 있는 것들에 대한 내용을 정리하고자 한다. 

이 포스팅은 Optimizing the Netflix Streaming Experience with Data Science 이 블로그 글을 참고하여 작성하였다.


넷플릭스는 영화 추천 뿐만 아니라, 체감 품질(QoE / quality of experience)도 많은 투자를 하고 있는 서비스이다. 


넷플릭스는 체감 품질(QoE)를 위해, 스트리밍 서비스의 품질에 많은 노력을 기하고 있다. 

이를 위해서 Adaptive StreamingOpen Connect 같은 네트워크 기술에 많은 투자를 하고 있기도 하다.

그리고 스트리밍 기술에 집중하기 위하여, 데이터를 기반으로 스트리밍 서비스를 개발하는 별도의 팀을 구성하기도 했다. 


넷플릭스에서 QoE를 높이기 위해, 집중했던 네가지 문제는 아래와 같다. 


- 스트리밍 경험을 높이는 데에 필요한 요소 분석 : QoE 요소들이 사용자 경험에 미치는 영향 분석하기

- 스트리밍 경험 향상 1 : 각 유저에게 개인화된 스트리밍 경험을 만들어주기 

- 스트리밍 경험 향상 2 : 유저의 영상 조회 패턴을 기반으로, 엣지 서버에 캐싱해둘 영상 정해두기 

- 스트리밍 경험 향상 3 유저의 영상 조회 데이터, 피드백을 기반으로 영상의 기술적 품질을 향상시키기


스트리밍 경험을 높이는 데에 필요한 요소 분석 

넷플릭스에서는 유저가 넷플릭스를 사용하는 패턴을 분석해서, 유저의 행동을 예측한다. 예를 들어, 넷플릭스에서 특정 기능을 구현했을 때, 유저의 영화 시청 시간이 어떻게 달라질 수 있는지를 예측해낸다. 

유저의 행동 패턴에 영향을 줄 수 있는 품질 요소로는 Rebuffer Rate와 Bit Rate가 있다. 


디바이스의 버퍼에 영상 데이터가 없으면, 새로 영상 데이터를 받아와야한다. 영상 재생 도중 이러한 현상이 계속 발생되면, 영상을 보다가 일시정지가 발생하게 된다. 이렇게 버퍼에 영상 데이터를 저장하기 위해 서버에 요청하는 빈도를 의미하는 지표가 Rebuffer Rate이다. 



또다른 품질요소는 Bit Rate이다. Bit Rate는 영상의 품질과도 관련이 있다. Bit Rate가 낮으면, 유저는 낮은 해상도의 영상을 보게 된다. 그리고 Bit Rate가 높으면, 좀더 고화질의 영상을 볼 수 있다. 


그런데 Rebuffer Rate와 Bit Rate는 트레이드 오프 관계에 있다.

네트워크 용량에는 제한이 있기 때문에, Bit Rate가 너무 높으면 이 제한에 걸릴 수도 있다. 

이 경우, 영상 데이터를 제대로 못받아오게 된다. 그러면 다시 새로운 영상을 다운받아야하니까, 유저 입장에서는 영상 재생 도중에 흐름이 뚝뚝 끊기는 현상이 발생할 수 있다. 


QoE를 최적화하는 데에 필요한 요소는 이 외에도 더 많은데, 각 요소들이 어떤 영향을 미칠 수 있는지 이해하는게 중요하다. 그리고 서로의 관계를 파악한 후 절충점을 찾아서 적용하는게 필요하다. 

그래서 각 QoE 요소들이 사용자의 행동에 어떤 영향을 미치는지 정량화하고, 예측해내는게 필요하다. 그다음 이걸 함수로 만들어서 자동화한다면, 이를 기반으로 유저마다 특화된 스트리밍 경험을 줄 수 있다. 


스트리밍 경험을 높이기 위한 방법

개인화된 스트리밍 경험

QoE 요소들이 유저에게 미치는 영향 분석이 완료되면, 이 예측 데이터를 잘 활용하면, 유저별로 최적화된 스트리밍 경험을 만들어줄 수 있다.

예를 들면, bit rate를 어느 수준으로 할 건지, 콘텐츠는 어느 서버에서 다운받게 할건지 등을 실시간으로 분석한 후, 이를 기반으로 유저에게 최적의 스트리밍 서비스를 제공해줄 수 있다. 그리고 유저가 선호하는 품질 수준에 따라 개인화된 스트리밍 최적화 기능을 제공할 수도 있다. 개인화에 영향을 줄 수 있는 요소로는 디바이스, 네트워크 특성, 위치 등이 있다.

예를 들어, 집에서 넷플릭스를 감상하는 유저인 경우 대역폭이 높을 것이다. 반면 지하철에서 불안정한 와이파이로 넷플릭스를 감상하는 유저는 대역폭이 낮을 것이다. 이렇듯 다른 환경에서 넷플릭스에 접근하는 경우, 대역폭이 높은 환경에서는 더 높은 화질 등을 제공할 수 있고, 대역폭이 낮은 환경에서는 화질이 좋지 않은 동영상을 스트리밍으로 제공할 수도 있다. 

영상 캐싱 최적화

넷플릭스에서는 영상을 내려주는 쪽에서도 캐싱을 최적화하기 위한 노력을 하고 있다. Open Connect라는 기술을 사용해서, 통신 사업자망 내에서, 유저와 가장 가까운 Cache에서 스트리밍 데이터를 내려받을 수 있게 해주고 있다.  

영상 품질 최적화

넷플릭스는 사용자 경험을 높이기 위해, 영상의 품질, 자막 등의 콘텐츠 품질 자체에도 신경을 쓰고 있다. 

품질 검사 프로세스, 설문지를 통한 사용자 피드백 수집, 사용자 패턴 데이터를 기반으로 이상현상 모니터링 등을 통해 좋은 품질의 영상이 공급될 수 있도록 노력하고 있다. 


글을 읽으면서 든 생각

넷플릭스를 쓰면서, 넷플릭스가 스트리밍 기술에 많은 투자를 하고있단 걸 많이 체감했었다. 
그래서 어떤 기술을 사용하고 있는건지, 어떤 분야를 신경쓰고 있는건지 궁금했다. 
찾아보니 넷플릭스는 정말 많은 측면을 고려하고 있고, 이를 위해 많은 기술에 투자를 하고 있다는 생각이 들었다. 
데이터 분석, 모델링, 통신 방식 개선, 캐싱 처리 등에 많은 투자를 해서, 현재 수준의 서비스가 될 수 있었던거구나 싶었다. 

흠냐... 


읽어보면 좋을 추가 자료들

Optimizing Content Quality Control at Netflix with Predictive Modeling

Netflix HTTP Adaptive Streaming ( 슬라이드 쉐어 )

TOAST 기술  블로그 : 웹 기술로 구현하는 Adaptive HTTP Streaming 

논문 : HTTP 적응적 스트리밍 서비스의 QoE 향상을 위한 세그먼트 특성 기반의 비디오 품질 조절 기법

넷플릭스 자료 : 탁월한 시청 경험 제공을 위한 넷플릭스(Netflix)와 전 세계 인터넷 서비스 제공업체(ISP)의 협업 현황