Netflix는 어떻게 수 백만 개의 디바이스를 모니터링 하나?

테크 이야기 2월 21, 2021

저자 : Robert Armstrong / Netflix 파트너 엔지니어

Netflix는 수백만 개의 셋톱 박스, 스마트 TV, 스트리밍 스틱 및 기타 가전 기기에서 사용 중입니다. Netflix의 DRE(Device Reliability Engineering/디바이스 신뢰성 엔지니어링) 팀은 엄격한 초기 인증 과정을 거쳐 (위에서 언급한) 디바이스들이 수없이 많은 업데이트와 서비스 개선을 통해 고품질의 경험을 지속적으로 제공하도록 보장할 책임이 있습니다.

현재까지 전 세계에는 1,600개가 넘는 다양한 장치 모델이 있으며, 각 모델에는 다양한 파트너 펌웨어 업데이트가 실행 중입니다. DRE 팀은 이러한 장치 각각에 대해 12개 이상의 서로 다른 측정 기준을 모니터링합니다. 이러한 메트릭에는 고객 통화량, 재생 오류, 응용 프로그램 시작 오류, 비디오 품질 등이 포함됩니다.

이러한 복잡성을 관리하기 위해 우리 팀은 다양한 알림(경고) 기술, 대시 보드, 기계 학습 및 효율적인 UI를 포함하는 접근 방식을 취하여 소규모의 긴밀하게 집중된 팀으로도 지속적으로 증가하는 장치 규모를 처리할 수 있습니다. 이 블로그 게시물은 (이러한 많은 도구를 하나로 통합한) 커스텀 UI에 초점을 맞추어 설명하겠습니다.

하나의 UI로 모든 것을 관리(지배)한다.

동적인 (사용하는 디바이스가 계속 변경되는) 이기종 환경에서 의미 있는 변화를 신속하게 감지하는 것은 어려운 작업입니다. Device Reliability 팀은 Atlas, Jigsaw, Winston과 같은 몇 가지 내부 기술을 사용합니다. 우리는 볼륨(처리량 - TPS로 추정됨)이 많고 일관된 케이스에 대해 실시간 신호(signal)를 모니터링하고 볼륨(처리량)이 적은 케이스에 대해 일일 집계 신호를 사용합니다. 또한, Kibana, Tableau 및 Lumen에서 호스팅 되는 수십 개의 대시보드를 사용하여 메트릭스를 시각화, 비교 및 필터링(slice and dice)합니다.

어떤 대시보드가 특정 문제를 딥다이브 할 때 사용하는지, 그리고 특정 문제에 초점을 맞추어 대시보드를 구성하는 방법을 빠르게 생각해 내는 것은 종종 도전이 될 수 있습니다.

이 과제를 해결하기 위해 우리는 Device Reliability UI 또는 DUI라고 부르는 도구를 만들었다. 다양한 시스템의 알림을 저장하고 처리하며, 알림을 신속하게 분석할 수 있도록 추가 데이터로 보완하며, 관련 대시보드 및 도구에 대한 콘텍스트 링크(contextual link) (유저가 어떤 사람인지, 어떤 기기를 사용하는지, 어떤 채널/캠페인을 통해 유입되었는지, 누가 그 유저를 추천했는지 등 유저에 관한 데이터를 포함하고, 앱이 열리자마자 이러한 데이터 포인트들에 기반해 관련 정보를 전달하는 딥링크를 말합니다.)를 빠르게 제공합니다. 또한, Netflix 디바이스 에코 시스템 내에서 특정 디바이스 모델에 대한 상황별 정보를 빠르게 조회할 수 있으므로 처음에 경고로 트리거 되지 않은 문제를 조사할 수 있습니다.

1610474827227

패턴 찾기

일부 문제는 단일 디바이스에 영향을 줍니다. 파트너가 버그가 있는 펌웨어를 푸시하거나 내부 변경으로 인해 하나의 장치 모델에서 비 호환성이 발생할 수 있습니다. 공통 속성(칩셋, 특정 디지털 권한 관리 하위 시스템 또는 특정 버전의 Netflix 애플리케이션 일 수 있습니다.)을 공유하는 디바이스 그룹에서 다른 문제가 발생합니다.

알림들을 중앙 집중화합니다, 위에선 언급한 속성을 보강합니다, 이를 유연한(공통성을 식별하고 궁극적으로 자동화된 분석에 영감을 주는 학습을 생성하는 데 도움을 주기 위한) 시스템에 삽입합니다.

메트릭은 종종 연관성을 가집니다. 특정 인시던트에 대해 변경되는 일련의 메트릭을 분리시키거나, 인시던트의 상황을(구체화하여) 확장할 수 있습니다.
(역자의 의견 - 이 글을 이해하기 위해서는 [1]이벤트, [2]알림 - alert, [3]인시던트- incident의 차이를 이해해야 한다.)

많은 장치가 특정 메트릭에서 변경되었지만, 그 중 절반이 두 메트릭에서 변경된 경우, 장치 그룹에 걸쳐 실제로 두 개의 서로 다른 인시던트가 있을 수 있습니다.

DRUI는 이러한 유형의 이벤트를 좁히는 데 도움이 되는 필터링, 정렬 및 태깅을 제공합니다. 종종 이러한 유형(필터링, 정렬, 태깅)의 간단한 조작은 다양한 장치 및 측정 항목에서 차트를 시각적으로 정렬하고 패턴을 드러내는 데 도움이 됩니다.

1610475317833


  1. 이벤트 (event) : 이벤트는 시스템, 환경, 프로세스, 작업의 흐름에서 관찰된 변경이다. ↩︎

  2. 알림(alert) : 특정한 이벤트가 발생 했음을 알리는 알림이다. ↩︎

  3. 인시던트(incident) : 비즈니스에 영향을 미치는 중요한 이벤트다. ↩︎

역사(과거)를 들여다보다

시간이 지남에 따라 디바이스는 종종 느리게 변경되거나 주기적으로 동작합니다. DRUI는 비즈니스 컨텍스트 또는 조사를 추적하기 위하여 알림 및 장치에 대한 주석을 저장합니다. 경고는 종종 인시던트 과정에서 반복적으로 발생할 수 있습니다. DRUI는 이러한 경고를 단일 엔터티로 롤업(묶는)하는 기능을 지원합니다. 이전 경고에 태그가 지정되거나 그룹화되고 유사한 새 경고가 도착하면 DRUI는 새 경고를 기존 사건과 신속하게 연관시키기 위한 제안으로 강조되어 표시합니다.

1610475611282

자동화된 분석

특정 이상 탐지 알고리즘에 따라 어떤 메트릭(지표)이 변경되면, 알림이 트리거 됩니다.

변경의 원인을 식별하는 것은 복잡할 수 있지만, 지표 변경에 대한 (초기 심사를 수행하는 데 도움이 되는) 신속하게 검색할 수 있는 여러 가지 가능한 의심 대상(의심되는 원인)이 있는 경우가 많습니다.

DRI는 인간이 경고를 볼 때까지 이러한 유형의 검사를 수행하는 것을 지원합니다, 조사를 돕기 위해 부가적인 데이터가 보강돼 있습니다. 이러한 (심각도를 측정하거나 판단하는) 선별 작업 (triage task) 중 일부는 Winston에서 수행합니다.

인시턴트 및 메트릭 어노테이션

DRUI는 여러 경고를 사건으로 그룹화하는 것을 지원합니다. 이를 통해 이벤트의 영향을 받는 일련의 메트릭 변경 및 장치를 추적하고 댓글, 이미지를 추가하고 다른 팀과의 공유를 지원할 수 있는 중앙 위치를 만듭니다. 또한 인시던트를 사용하여 메트릭이 변경([1]metric shift)된 것에 시각적으로 주석을 달아 다른 사용자가 메트릭이 변경된 이유를 빠르게 이해할 수 있습니다.

1610475794833


  1. 예를 들면 1일 전 에러 발생 수보다 오늘 에러 발생 수가 증가한 이유 (그림 참조) ↩︎

다양한 (적절한) 대시보드 사용하기

간혹 대시보드가 너무 많아 어떤 대시보드가 특정 문제와 관련이 있는지 기억하면 문제 해결 과정이 느려질 수 있습니다. 또한 대시 보드는 일반적으로 주어진 문제에 적합한 컨텍스트를 적용하기 위해 약간의 기본 매개 변수를 설정해야 합니다.

DRUI를 사용하면 알림 유형 및 ([1]:올바른 시계열 윈도우, 장치 및 기타 매개 변수로 미리 구성된 관련 대시보드 링크에 대한) 메트릭의 매핑을 중앙 집중화할 수 있으므로 알림을 쉽게 표시하고 사용자가 신속하게 조사 및 분류할 수 있습니다.

1610475853559


  1. 전후 2시간을 볼 수 있는, 전후 7시간 등을 볼 수 있는 시계열 데이터 윈도우로 추정 ↩︎

스케일링을 위한 도구들

DRUI는 우리 팀이 Netflix 생태계에서 계속 증가하는 장치의 양과 다양성을 관리하는 데 도움이 됩니다. 이를 통해 Netflix의 다른 팀에서 제공하는 도구를 활용하여 특정 요구 사항에 맞게 워크 플로를 조정하여 광범위한 경고 및 메트릭 입력과 통합 할 수 있습니다. 우리는 최근 Angular에서 React로 DRUI를 대대적으로 재작성했으며 Netflix가 2억 구독자 이상으로 늘어나더라도, 계속 사용하기를 희망합니다.

번역을 마치며
이 글은 Netflix의 How Netflix Monitors Millions of Devices 를 번역한 것입니다. 의역을 하다 보니 부족한 부분이 있을 수 있습니다. 추가하거나 고쳐야 되는 부분은 support@imqa.io로 보내주시면 수정하겠습니다.

조만간 IMQA의 솔루션으로 해결했던 여러 장애 사례들을 공유하도록 하겠습니다.
모바일 앱 (안드로이드, iOS)의 장애 및 성능 분석은 IMQA를 찾아주세요.

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.