넷플릭스는 1억 3,000만 명에서 비디오 스트리밍을 제공하기까지 인프라를 어떻게 구축해왔을까? 넷플릭스의 선임 엔지니어 데이브 한이 설명한다.
지난 20여년 동안 넷플릭스는 직원 수 30명 남짓의 DVD 렌탈 웹사이트에서, 5,000여 편의 쇼를 상영하고 1억 3,000만 명의 회원 수를 보유한 글로벌 스트리밍 서비스 기업으로 거듭났다. 매출 또한 연 110억 달러 정도로 성장했다. 그 동안 넷플릭스는 엔터테인먼트 산업을 혁신적으로 바꿔 왔다.
지난해 CES, Consumer Electronics Show)에서 넷플릭스 CEO 리드 헤이스팅스는 전 세계 130여 국가에 넷플릭스 서비스를 출범시킨다고 밝히며, “오늘 여기 계신 여러분들은 글로벌 TV 네트워크의 탄생을 지켜 본 목격자들이다”라고 말했다.
넷플릭스 클라우드 오퍼레이션 및 안정성 팀의 시니어 엔지니어 데이브 한은 최근 런던의 IT 서포트 쇼(IT Support Show)에서, 이 모든 것은 넷플릭스가 기존의 IT 오퍼레이션을 근본적으로 혁신했기에 가능했던 일이라고 전했다.
“우리는 추가적으로 130여개 국가에서 서비스를 제공하기 시작했다. 이는 수백 만 명의 새로운 고객들에게 서비스를 제공하게 되었음을 뜻한다”라고 그는 말했다.
그는 이어 “이처럼 130여 국가, 수백 만 명의 고객들을 새로 받아들이기 위해 우리가 어느 정도의 고민과 준비, 그리고 아키텍처 설계를 했어야 했는지 쉽게 짐작할 수 있을 것이다. 기술적 아키텍처, 연구, 비용 청구 시스템, 이 모든 것을 가능케 하기 위해 필요한 인력들, 그리고 이것을 현실로 만들기 위해 해야 했던 고민들은 결코 만만치 않았다”라고 덧붙였다.
한에 따르면 이 모든 여정은 넷플릭스가 자사 데이터센터에서 퍼블릭 클라우드로 이전하기로 결정하면서부터 시작되었다.
마이크로서비스를 이용한 이전
2008년, 자사 데이터센터에 관계형 데이터베이스를 구동 중이던 넷플릭스는 재앙 같은 일을 경험했다. 데이터센터 문제로 전체 서비스가 다운되고 3일 동안이나 DVD 배송이 중단됐던 것이다.
넷플릭스에 주어진 선택지는 2가지였다. 넷플릭스를 월드 클래스 데이터센터 오퍼레이션 기업으로 혁신하거나, 아니면 퍼블릭 클라우드로 서비스를 이전하는 것이다.
당시 넷플릭스는 무척 빠르게 성장하는 기업이었다. 그때 당시에도 수천 편의 영상과, 수백 만 명의 고객들이 어마어마한 양의 데이터를 생성해 내고 있었다. 자체적인 데이터센터를 통해 이처럼 하늘 높은 줄 모르고 증가하는 볼륨을 감당하기에는 무리라는 판단이 들었다. 클라우드로 이전할 경우 수천 개 이상의 가상 서버를 추가하고, 수 분 이내로 페타바이트 단위의 스토리지를 담을 수 있었다.
누가 봐도 클라우드로의 이전이 합리적인 선택이었다. 얼마 지나지 않아 넷플릭스는 아마존 웹 서비스의 대표 고객이 되었다. AWS를 선택한 이유는 확장성과 다양한 서비스 및 기능을 제공했기 때문이었다.
하지만 클라우드로의 이전을 위해 기존 인프라스트럭처를 완전히 새롭게 설계해야 했다. 일체형으로 된 기업 시스템을 완전히 드러내어 그대로 AWS 클라우드로 이전할 수도 있겠지만, 그렇게 해 봐야 데이터센터에 존재하던 문제점들을 그대로 클라우드로 가져가는 것 에 불과했다.
결국 넷플릭스는 대신 넷플릭스 테크놀로지를 AWS에서 재구현 하는 쪽을 선택했다. 넷플릭스의 오퍼레이션 방식을 근본적으로 바꾸기로 한 것이다.
“소프트웨어도 다른 모든 것들과 마찬가지다. 주변 환경에 맞게 설계를 잘 할수록 더 자주, 그리고 더 규칙적으로 당신이 명령하는 일을 잘 수행한다. 이것이 우리가 마이크로서비스로 이전하기로 결정한 이유이다”라고 한은 설명했다.
서비스의 다양한 측면을 다수의 소규모 서비스로 쪼개는 마이크로서비스는 인프라스트럭처를 더욱 민첩하게 만든다. 각각의 마이크로서비스는 서비스의 작동 기전을 잘 이해하고, 시스템과 상호작용 할 수 있는 소규모 팀들이 운영하게 된다. 이러한 방식은 당시만 해도 상당히 획기적인 접근이었다.
마이크로서비스는 보다 명확하고 구체적인 통찰력을 제공하여 서비스를 변경하기가 더 쉬우며, 결국 더 간결하고 빠른 배치를 가능케 한다. 또한 각 서비스를 고립시켜 퍼포먼스 프로파일 및 패턴, 그리고 마이크로서비스의 보안을 보다 명확하게 파악할 수 있어 문제를 야기하는 서비스만 골라서 제거할 수 있다.
“단일한 배치를 위해 다른 팀에서 관리하는 서비스를 굳이 모아서 조립할 필요는 없다. 넷플릭스의 모든 서비스 팀은 언제라도 자신이 관리하는 서비스를 배치할 수 있다. 어떤 협력이나 사전 일정 조율, 생산 단계로 가기까지의 잡음도 필요 없다”고 한은 말했다.
클라우드의 장점
넷플릭스가 클라우드로의 이전을 완전히 끝내기까지는 7년이란 시간이 걸렸다. 2016년에는 마지막 데이터센터까지도 문을 닫았다. 기존 데이터센터를 대신하여 이제는 클라우드 인프라스트럭처가 고객 정보에서 추천 알고리즘에 이르기까지, 넷플릭스의 모든 컴퓨팅 및 스토리지 니즈를 담당하고 있다.
클라우드로의 이전은 넷플릭스의 확장성과 서비스 가용성, 그리고 무엇보다 새로운 콘텐츠, 기능, 인터페이스 및 인터랙션을 출시하는 속도를 증가시켰다. 또한 엔지니어들을 해방시켜 다른 업무에 보다 자유롭게 시간을 쓸 수 있게 했다. 또 스트리밍의 비용을 줄이고 가용성을 비약적으로 증가하였으며, AWS의 경험과 전문성을 더했다.
“또 하나의 장점은 비용 모형이 무척 훌륭하다는 것이다. 사용한 것에 대해서만 비용을 지불하면 된다. 덕분에 우리는 많은 실험을 해 볼 수 있다”고 한은 말했다.
이처럼 유연한 비용 모형 덕분에 넷플릭스는 여러 새로운 기능들을 자유롭게 테스트 해보고, 기존의 기능을 변화, 개선시키려는 시도도 부담 없이 할 수 있게 됐다. 예컨대 개별화 된 콘텐츠 추천 기능도 그 중 하나이다.
“이러한 추천 알고리즘은 규모가 매우 크고, 많은 컴퓨팅 작업을 필요로 한다. 그런데 새 알고리즘이 나왔을 때 이를 테스트해보기 위해 기존 알고리즘을 비활성화 시키지 않아도 돼서 편리하다”고 그는 설명했다.
한은 이어 “이제는 새로운 기계를 수십, 수백, 아니 수천 대를 구동하고, 데이터를 분석하여 개선된 부분을 확인하려 할 때에도 실제로 사용한 부분에 대해서만 비용을 지불하면 된다. 클라우드는 여러 가지 기능을 시도함에 있어 믿기 어려울 정도의 자유를 선사한다”라고 덧붙였다.
콘텐츠 딜리버리
하지만 넷플릭스의 사용자 경험에 있어 클라우드는 오직 한 축을 담당할 뿐이다. 물론 시청자가 ‘재생’ 버튼을 누르기 전까지 일어나는 모든 일은 AWS에서 발생하지만, 그 때 방영되는 영상 콘텐츠 자체는 전혀 다른 시스템에서 만들어진다. 바로 넷플릭스의 사설 콘텐츠 딜리버리 네트워크(CDN, Contents Delivery Network)인 오픈커넥트(OpenConnect)이다. 오픈커넥트는 영상 콘텐츠를 저장하고 이를 클라이언트 기기로 전송한다.
CDN은 인터넷 기반 콘텐츠를 시청자들에게 전달하는 기능을 한다. 넷플릭스는 원래 스트리밍 영상 딜리버리 서비스를 서드파티 CDN 업체에 아웃소싱 했었지만, 기업 규모가 커지면서 서드 파티 벤더들로는 트래픽을 감당하기 어려워 졌다. 넷플릭스로서도 딜리버리 서비스 및 사용자 경험에 대한 보다 강력한 통제권을 행사할 필요가 있었다. 넷플릭스는 결국 자사의 니즈에 맞춘 CDN을 맞춤 제작하기로 결정했다.
넷플릭스의 오픈커넥트 어플라이언스는 로컬 ISP(internet service provider) 데이터센터 내부에 콘텐츠를 저장 및 전달한다. ISP 데이터센터에서는 넷플릭스 서비스를 나머지 인터넷으로부터 분리, 고립시킨다. 대중성 알고리즘(popularity algorithm)과 스토리지 테크닉이 오프로드 효율성을 극대화 하는 쪽으로 콘텐츠를 분산시킨다. 이러한 시스템은 업스트림 네트워크 용적에 대한 부담을 줄이고 트래픽을 호스팅 하는 ISP네트워크와 보다 긴밀하게 협력할 수 있게 한다.
한은 “우리는 콘텐츠를 보관하기 위해 오픈커넥트 캐싱 박스를 설계했으며, 인터넷 서비스 공급자의 네트워크 내에 어디에나 설치할 수 있도록 하여 이러한 비디오 비트가 실제로 오퍼레이터의 네트워크에서 전송되지 않도록 했다”라고 말했다.
새로운 시스템은 모두가 증오해 마지 않는 버퍼링도 획기적으로 줄였다. 또한 넷플릭스는 CDN 소프트웨어를 더욱 지능적으로 만들 수 있게 되었다. 이제, 고객이 재생 버튼을 누를 때마다 인터넷 상의 여러 위치에서 콘텐츠를 가져올 수 있게 된 것이다.
이러한 투자는 브라질에 있는 ISP 데이터센터에 화재가 발생해 넷플릭스의 모든 컴퓨터 스택을 태워버렸을 때 비로소 빛을 발했다. ISP에서 스트리밍한 고객 중 누구도 사용자 경험에 어떤 변화나 지장도 느끼지 않았다.
“고객의 디바이스는 이미 이런 경우 데이터를 얻기 위해 어디로 가야 할 지를 알고 있었다. 데이터센터에 화재가 발생한 상황에서도, 단 한 프레임의 스트리밍도 방해 받지 않고 유려하게 서비스를 제공했다”고 한은 말했다.
카오스 엔지니어링과 기업 문화
넷플릭스 개발자들은 엔지니어링에 대한 독특한 접근으로 잘 알려져 있다. 넷플릭스에서는 카오스 자동 플랫폼(Chaos Automation Platform)이라는, 셀프 서비스 엔지니어링 도구를 개발하여 운영 환경의 문제를 테스트하고 장애 발생 시 소프트웨어가 원하는 대로 작동하도록 하고 있다. 한은 다음과 같이 설명했다.
“사람들은 1초에도 수천 번씩 넷플릭스의 재생 버튼을 누른다. 시스템이 자동으로 복구되지 않고 곤란한 상황을 처리할 수 없다면, 자가 수리가 불가능하고, 인력이 개입할 즈음에는 이미 수 분이나 시간이 흐른 후일 것이다.”
“적절한 인력을 적재 적소에 투입하기 위해 걸리는 그 3~5분의 시간 동안 얼마나 많은 고객들이 실망하고 돌아섰을지, 상상하기 어렵지 않을 것이다. 카오스 엔지니어링은 실패에 대한 훌륭한 예방책이 되어 준다.”
회사의 개발자들은 넷플릭스가 사용하는 3가지 AWS 영역 중 하나에서 실패가 발생해도 이를 문제 없이 넘길 수 있도록 하기 위해 카오스 엔지니어링을 채택했다. 넷플릭스에서는 매달 한 영역을 비활성화하고 6분 안에 비활성화 된 영역의 모든 고객을 다른 영역들 중 하나로 이동할 수 있는지 테스트하고 있다.
혼돈스러운 상황을 큰 피해 없이 수습하기 위해 넷플릭스는 그러한 아이디어를 수용할 수 있는 기업 문화를 배양해내야만 했다.
핵심 원칙들은 127장의 슬라이드로 구성된 넷플릭스 컬쳐 덱(Netflix Culture Deck)에 공시됐다. 페이스북의 COO 셰릴 샌드버그는 넷플릭스 컬쳐 덱이 “실리콘밸리 역사상 가장 중요한 문서라고 말해도 과장이 아닐 것”이라고 자평했던 바 있다.
넷플릭스 정책의 핵심은 ‘자유와 책임의 균형’이라 할 수 있다. 각 팀에게 자신이 맡은 마이크로서비스의 소유권을 주고 독립적으로 이를 관리할 수 있도록 하면서도 무모하거나 무책임은 행동을 하지 못하도록 한다는 것이다.
“넷플릭스에서는 매니저가 해야 할 일을 정해서 지시하거나, 프로젝트를 설계해 주지 않는다. 매니저의 역할은 직원들에게 적합한 문맥을 제공하여 스스로 결정을 내리게 하고, 함께 일할 잘 맞고 똑똑한 인재를 직접 채용하게 하며, 무엇보다 직원들의 자율성을 침해하지 않는 것이다”라고 한은 말했다.
넷플릭스는 고객 데이터에 손 대지 않는다는 것과 같은 기본적 원칙들을 제외하고는 불필요한 규칙을 많이 세우지 않는 편이다. 한은 이러한 접근 방식을 가리켜 ‘가드레일 설치’라고 표현했다. 또, 엔지니어에게 직접적으로 뭘 어떻게 하라고 지시해야 했던 적은 한 손에 꼽을 정도라고도 강조했다.
“업무의 맥락을 널리, 그리고 주기적으로 공유함으로써 청구시스템을 설계하는 사람, 알고리즘 시스템을 관리하는 사람, 안정성 팀의 SRE, 고객 서비스를 담당하는 사람 등, 직원들 각자가 자신이 맡은 일에 열중하면서도 동일한 맥락과 상황을 이해하고 같은 목표 달성을 위해 노력할 수 있다”고 그는 말했다.
한은 이어 “이러한 자율성은 각 팀의 독립을 보장한다. 넷플릭스에는 엄격한 구조도, 통제도 없지만 모두가 발 맞춰 행진할 줄 안다”라고 말했다. dl-ciokorea@foundryco.com