[컴] netflix 의 Marken

넷플릭스 / 주석 시스템 / 레이블링 / 어떻게 화면을 찾나 / 대용량 대규모 처리 / 하둡 / 카산드라 / 일레스틱서치

netflix 의 Marken

ref. 1, ref.2 를 보면, 넷플릭스는 Marken 이란 이름의 시스템으로 화면에 대한 metadata 를 저장하고 있다.

metadata를 annotation 이란 이름으로 만들었는데, 이 annotation 으로 넷플릭스의 영상 프레임에서 원하는 화면에 원하는 정보를 저장해 놓을 수 있다. 간단히 이야기하면, 화면에 대한 tagging, labeling 같은 것으로 보면 될 듯 하다.

예를 들면, 어느 영화의 어느 시간은 폭력적이다. 어떤 장면은 선정적이다. 어느 장면에는 장갑을 낀 사람이 있다. 등등.

architecture

  • DSL(definition schema language)은 json 을 사용했다. 이 schema 도 버전별로 저장해 놓는다.
  • annotation 을 표현하는 것도 json 으로 했다.
  • db는 casandra 를 사용했다.
  • 다양한 검색을 위해서 elasticseach 도 이용한다.
  • search latency 를 낮은 상태로 유지하려고 노력했다.
from 1.

확장성의 고려

  • 계속해서 annotation data 가 만들어지고, annotation 을 뽑아내는 알고리즘이 변경될 때마다 다시 새롭게 annotatino 들이 만들어진다. 그래서 계속 확장되는 것을 고려한다.
  • 이런 작업은 search 에 영향을 주기에 다른 stack 을 가지고 작업한다.
  • 알고리즘이 향상되면, 좀 더 많은 annotation 을 만들어내는데, 그렇게 되면, 기존의 annotation 을 update 해야 한다. 그것과 관련된 이야기를 ref. 2 에서 해준다.
    • annotation 의 양이 많기에, 그리고 어떤 것을 update할지에 대한 추적도 비용이 크기에
    • casandra/elasticsearch 위에서, data pipeline 작업을 사용자가 뒷단에서의 일을 신경쓰지 않고, 잘 수행할 수 있게 해준다.
    • 그래서 사용자가 annotation 검색을 할 때, 알고리즘에 의해 annotation 이 생성이 완료됐다면, 결과를 넘겨준다. 완료되지 않았다면 아무것도 return 하지 않는다. 그리고 새로운 알고리즘2가 실행된다면, 그동안은 기존의 annotation 의 결과를 넘겨준다. 그리고 알고리즘2의 수행이 끝나면 그때부터 update된 알고리즘을 return 해준다.
    • 이것과 관련된 flag 들은 Cassandra, Elasticsearch 에 들어가 있다. 그리고 api를 통해서 사용자도 알 수 있다.

Reference

  1. Scalable Annotation Service — Marken | Netflix TechBlog
  2. Data ingestion pipeline with Operation Management (Marken) | Netflix TechBlog

댓글 없음:

댓글 쓰기