brunch

You can make anything
by writing

C.S.Lewis

by 손주식 Sep 15. 2019

Netflix가 성능 이상을 탐지하는 방법

Tech Review of Netflix #2

아래 원문을 번역하였습니다. 이해를 위해 의역한 부분도 포함되어 있습니다. 

https://medium.com/netflix-techblog/detecting-performance-anomalies-in-external-firmware-deployments-ed41b1bfcf46



Netflix는 약 1억 3천9백만 명의 회원이 사용하는 수 백개의 브랜드에서 출시된 약 1,700 종류의 기기 5억 개에 스트리밍을 제공하고 있다. 이렇게 다양한 기기 생태계는 복잡한 다차원 기능 데이터 공간과 희소한 데이터를 만들어 내고, 이 때문에 기기에서 발생하는 성능 문제를 알아차리기 힘들어진다. 그리고 이 생태계의 다양성과 규모가 점점 커질수록, 이 문제를 알아내는 것의 중요성 또한 더 커지게 된다. 스트리밍 기기들은 사용자 경험에 직접적으로 영향을 미치는 다양한 네트워크 환경에서 사용된다. 연결이 뚝뚝 끊어지는 무선 환경과 메모리 용량도 제한적인 모바일 폰에서의 영상 품질과 앱 성능은 고속의 유선 인터넷에 연결된 셋톱박스의 상황과는 꽤 많이 다르다. 기기의 특성과 네트워크 동작 방식을 이해하는 것은 잠재적인 기기 성능 이슈를 파악하는 데 있어서 복잡도 계층을 하나 더 얹어주는 것과 다름없다.


우리는 사용자들이 Netflix 앱을 열고 재생 버튼을 눌렀을 때 모든 단계에서 높은 품질의 경험을 할 수 있도록 노력하고 있다. 에러 페이지를 만나거나, 영상이 시작되기까지 긴 시간을 기다리게 하거나, 재생 중 일시정지가 되는 등의 경험은 좋지 않기 때문에 이를 최소화하기 위해 애쓰고 있다. 지난 블로그 포스트들(part 1part 2)은 문제를 찾아내고 해결하기 위한 기기 신뢰성 팀(Device Reliability Team)의 노력을 자세히 소개하였고, 스트리밍 품질을 향상하기 위해 머신러닝을 사용한 예제도 보여주었다.


기기와 관련된 이슈들은 대부분 다음 두 가지 시나리오 중 하나에 속한다. (1) Netflix의 앱이나 백엔드 서버에 변경이 발생하였는데 몇몇 기기에서 제대로 동작하지 않는 경우 (2) 가전제품 제조사나, 브라우저 개발자, 혹은 운영체제 개발자들이 변경 사항을 배포하였는데 (예를 들어 펌웨어 변경이나 브라우저/OS 변경) Netflix 앱과 잘 호환되지 않는 경우. 첫 번째 시나리오를 해결하기 위한 도구들(예를 들면, Kayenta를 활용한 자동 카나리 분석)은 잘 갖춰진 반면, 두 번째 시나리오의 경우 핵심 성능 지표에 문제가 생길 만큼 업데이트가 많은 기기에 배포된 시기가 되어서야 발견되곤 했었다. 사용자 경험을 나쁘게 만드는 펌웨어 업데이트를 빠른 시기에 발견하는 것은 이런 문제가 발생했을 때의 영향을 최소화하면서 근본 원인 파악을 수월하게 해 준다.


그림 1 - Netflix 스트리밍이 가능한 가전제품들의 월간 펌웨어 릴리즈 횟수


그림 1은 우리의 가전제품 파트너들이 새로운 펌웨어를 만들어내는 속도가 점점 빨라지고 있다는 것을 보여준다. 2018년에 우리의 파트너들은 한 달에 500개가 넘는 펌웨어 업데이트를 수행했다. 이 추세라면 2020년에는 한 달에 1,000번이 넘는 펌웨어 업데이트가 일어나게 될 것이다. 펌웨어 배포는 경우에 따라 일부 기기에만 천천히 배포하기 시작하여 전체 기기에 다 배포되기까지 며칠씩 걸리기도 한다. 이런 방식의 배포는 무작위로 진행하는 것은 아니고 특정 기기들을 대상으로 하거나, 아니면 특정 지역의 기기들만 대상으로 하는 식이다. 이런 배포 방식에 때문에 새로운 펌웨어와 기존 펌웨어의 지표를 단순히 비교만 하는 분석은 오히려 혼란을 가중시킬 수 있고, 그래서 새로운 펌웨어가 Netflix 사용자 경험에 안 좋은 영향을 줬는지 확인할 때는 실험 대상을 잘 통제하는 것이 중요하다.


조각들을 하나로 모아서 보기


아래 그림 2에서 회색 영역으로 분포된 지표(평균값이 약 4,570)를 보자. 새로운 펌웨어 배포 시 평균이 5,600보다 높은 정규분포 모양(붉은색 영역)이 형성되는 것을 확인할 수 있는데, 이는 새로운 펌웨어를 사용하는 기기들이 전체 기기들에 비해 평균적으로 더 나쁜 경험을 제공하고 있다는 뜻이다. 이런 결과를 보고 우리는 새로운 펌웨어가 기존 버전에 비해 더 안 좋은 성능을 가지고 있다고 결론 내릴 수 있을까?


그림 2 - 왼쪽: 통제군과 실험군의 성능 지표 분포 / 오른쪽: 지역에 따라 분류한 통제군의 성능 지표 분포


만약 새로운 펌웨어를 실행하는 기기들이 통제군에서 무작위로 샘플링된 것이라면 위 분석 내용이 정확하다고 생각할 수 있다. 하지만 불행하게도, 우리의 고객사 파트너들의 펌웨어 배포 방식에 의해서 이런 가정은 무너지게 된다. 이 예제에서, 통제군을 지역에 따라 더 작은 분류로 구분해보면(그림 2의 오른쪽 패널) 통제군의 지표는 제각각인 여러 지역들의 분포를 합친 것이라는 점을 알 수 있다. 만약 우리의 파트너들이 새로운 펌웨어를 특정 지역에만 우선적으로 배포했다면, 우리는 새로운 펌웨어에 의한 성능 지표 변화를 수치화하기 전에 이러한 영향을 반드시 고려해야 한다.


그림 3 - 아래 글에서 설명된 방법으로 만들어진 지표 분포 비교


우리는 Jigsaw라는 프레임워크를 개발하여, Netflix의 데이터 과학자들과 엔지니어링 팀들이 편향된 실험군에서 발생한 지표 변화에 대해 더 잘 이해할 수 있도록 하였다. 각 실험군 샘플에 대하여, 대조군에서도 Monte Carlo "짝꿍" 샘플(Matched Control Sample)을 하나 만들어주었다. 이 짝꿍 샘플은 사용자 정의 설정 목록을 활용하여 실험군 샘플과 동일한 설정값 분포를 가지도록 구성된다. 예를 들어, 위 예제에서는 실험군 샘플의 기기들과 같은 지역 분포를 가지는 대조군 짝꿍 샘플을 만들게 되는 것이다. 이 과정은 단지 하나의 차원에만 적용되는 것이 아니다. 우리는 보통 기기의 핵심적인 스펙(기기 모델, 출시 연도 등)과 지역까지 고려한다. 그러나 이렇게 고려하는 차원의 늘어날수록 데이터의 희소성 이슈가 생길 수 있다. 그래서 충분한 데이터를 확보하기 위해서 하나 혹은 둘 정도의 스펙만 포함시키고 있다. 이렇게 짝꿍 대조군 샘플과 실험군 샘플을 한번 비교하고 나면, Monte Carlo 과정을 몇 차례 더 반복하여 샘플링 무작위성을 고려했을 때 이러한 샘플이 추출될 확률을 구해낸다. 그림 3은 위에서 이야기했던 예제에서의 짝꿍 샘플 분포를 보여준다. 전체 비교에서는 실험군의 평균값이 더 높아 보였지만, 모집단 데이터에 숨겨져 있던 차이점들을 잘 제거하여 실제로는 실험군의 성능 지표가 더 좋고 사용자에게 더 나은 경험을 제공한다는 점을 알게 되었다.


더 큰 그림



그림 4 - Jigsaw 경보의 하루 일과를 표현한 작업 흐름도


Netflix 기기 신뢰성 팀의 업무에 Jigsaw를 도입하는 것은 금방 사용자들의 경험에 직접적인 영향을 주게 되었다. 2018년 여름, 단 두 건의 성능 저하가 탐지되었으며, 오류가 발생 가능한 새 펌웨어는 잠재적으로 영향받을 수 있는 기기 수백만 개 중 단지 0.5% 에 불과하였다. Jigsaw의 신속한 경보 덕분에, 기기 신뢰성 팀은 파트너 고객사와 곧바로 문제를 해결할 수 있었고 수백만의 사용자가 재생 중 겪을 수 있는 에러를 예방한 것이다. Jigsaw를 사용하여 펌웨어 업데이트뿐만 아니라 더 상황을 이해하기 위한 작업도 진행 중이다. 웹브라우저 혹은 운영체제의 버전끼리 지표를 비교하는 일은 Netflix 엔지니어링 팀에서 만들어내는 소프트웨어 변경이 성능 지표에 어떤 영향을 주는지 더 쉽게 이해할 수 있도록 도와준다.


Netflix 사용자들은, 엔터테인먼트를 즐기기 위한 수많은 선택지들을 가지고 있다. 우리는 사용자가 어떤 환경에서 어떤 방식으로 Netflix를 실행하더라도 가능한 최고의 경험을 할 수 있도록 도와주기 위해 노력하고 있다. 자동 이상 탐지로 기기 성능 모니터링 방식을 좀 더 고도화함으로써, 기기 생태계가 계속 성장하고 발전할수록 우리의 노력도 더 빛을 발하게 될 것이다. 광범위한 영향도를 가진 이슈에 대해 수동적으로 반응하는 것이 아니라 선제적으로 대응해두는 방식을 통해, 우리는 사용자들을 나쁜 경험으로부터 보호하고, 즐거운 시간을 방해 없이 더 길게 보낼 수 있게 도와주게 된다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari