brunch

You can make anything
by writing

C.S.Lewis

by 손주식 Sep 09. 2019

Netflix의 데이터 기반 인프라 관리 방법

Tech Review of Netflix #1

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

https://medium.com/netflix-techblog/how-data-inspires-building-a-scalable-resilient-and-secure-cloud-infrastructure-at-netflix-c14ea9f2d00c



Netflix의 엔지니어링 문화는 모든 구성원과 팀이 목표 달성을 위해 저마다 핵심적인 책임을 가지고 자유롭게 운영될 수 있다는 "자유와 책임" 개념을 기본으로 가지고 있다. 이러한 자유는 팀들과 개인들이 빠르게 혁신을 향한 결과물을 빠르게 만들어내고 또 이런 결과물의 품질과 튼튼함에 대한 책임감을 느끼게 한다. 중앙 엔지니어링 팀에서는 인프라스트럭쳐의 보안, 규모 확장성과 탄력성에 대한 솔루션들을 제공하고, 이를 통해 혁신을 담당하는 팀들이 각자 고민해야 하는 부담을 줄임으로써 자유로운 운영 방식을 가능하게 만들고 있다.


Netflix 제품 기능들 중 대다수는 일부 혹은 전체가 수많은 micro-service들 중 하나이다. (예를 들어, Netflix 첫 화면에 타나는 목록의 순서, 플레이를 눌렀을 때 나타나는 콘텐츠 라이선스, 요청한 콘텐츠를 제공할 가장 가까운 Open Connect를 찾는 서비스 등등) 현재 이 모든 micro-service들은 AWS 클라우드 인프라에서 운영되고 있다.


Netflix 엔지니어는 하나의 micro-service의 담당자로서 그 서비스의 안정적이고, 효율적인 운영뿐만 아니라 혁신까지 책임진다. 이런 운영적인 요소는 종종 엔지니어들에게 큰 정신적인 부담이 되기도 하는데, 왜냐하면 원격 시스템 정보 수집과 경보 시스템, 용량 산정 프로세스, 보안과 신뢰성에 대한 best practice, 그리고 클라우드 인프라에 대한 방대한 지식 등등 다양한 분야에 대한 깊은 이해를 요구하기 때문이다.


우리의 엔지니어링 팀은 (가드레일 강화, 도구 개선 등등으로) 이러한 운영 부담을 낮춰주기 위한 노력을 많이 하고 있지만, 사실 데이터와 데이터 기반 제품들이 인프라를 이해하고 최적화하고 추상화하는 데 있어서 핵심적인 요소이다. 이것이 바로 데이터 팀(엔지니어링과 사이언스 포함)들이 들어오게 된 이유이다. 우리는 플랫폼과 micro-service들에서 생성된 엄청난 양의 데이터를 활용하여 클라우드 인프라의 많은 요소들이 안전하고 효율적으로, 그리고 신뢰성 있게 운영될 수 있도록 정보를 제공하고 의사 결정을 자동화한다.


다음 섹션에서는, 우리 인프라스트럭쳐의 각 측면에 대해서 중요한 핵심 요소들을 다뤄볼 것이다. 그리고 마지막 섹션에서는 Neflix의 다음 물결을 이끌어 갈 몇 가지 기회들을 제시하여 당신의 호기심을 자극할 것이다.


보안 영역에서, 우리의 데이터 팀들은 머신러닝과 통계적 모델들을 사용하여 수상하거나 이상한 행동을 탐지하는 데 모든 노력을 쏟고 있다. 과거에 이 활동은 잠재적으로 손상된 직원 계정에 집중하였지만, 요즘에는 에이전트가 사람이든 기계든 다 적용할 수 있는 조금 더 애그노스틱한 탐지 프레임워크(agnostic detection framework)를 만들기 위해 노력하고 있다. 또한 micro-service들과 내부 이해당사자들이 직면한 위협과 위험요소들을 줄여감으로써 보안과 개인정보를 둘러싼 투명성 구축에 많은 투자를 하고 있다.


신뢰성 영역에서는, 크게 두 가지 측면에 집중하고 있다. 첫 번째는 예방이다. 데이터 팀들은 독립적인 실험 환경(예를 들어, Canaries) 제공과 KPI 향상 탐지 등을 통해 가능하면 안전한 방식으로 변경 사항을 반영할 수 있도록 도와주고 있다. 두 번째는 진단이다. 데이터 팀에서는 장애의 영향을 측정하고 발생 패턴을 노출시키며, micro-service 수준에서의 가용성을 확인할 수 있게 연결 지어준다.


효율성 영역에서는, 투명성과 최적화에 집중하고 있다. Netflix의 자유와 책임 문화에서 효율성을 얻기 위한 최고의 방법은, 바로 모든 micro-service 담당자들에게 올바른 정보를 제공하여 스스로 효율성을 높일 수 있게 도와주는 것이라고 생각한다. 그리고 인프라스트럭쳐가 복잡하고 다중 사용자 환경이기 때문에, 데이터 기반으로 효율성을 높일 플랫폼 수준의 방법들이 다양하게 존재한다. 또한, 인프라스트럭쳐를 할당하는 작업도 점점 더 복잡해지기 때문에, 데이터 팀에서는 클라우드 용량 관리 자동화와 진단 도구 개발에 기여하고 있다.


성능 영역에서는, Netflix 사용이 가능한 모든 기기에서의 사용자 경험의 질에 집중하고 있다. 전체 성능에 있어서 기기 자체가 중요한 역할을 차지하기는 하지만, 우리의 네트워크와 클라우드 인프라스트럭쳐 역시 기기의 응답 성능에 무시할 수 없을 만한 영향을 주기 때문이다. 온갖 종류의 기기에서의 Netflix 애플리케이션 전체 성능에 대한 우리 인프라의 영향도를 제대로 이해하고 또 최소화하기 위해서 지속적으로 원격 성능 측정과 도구 개발에 힘쓰고 있다.


사람 영역에서는, 중앙 팀이 수행하는 전체 인력 계획 관리, 합병 비용 절감, 채용 절차 개선, 그리고 사용 사례와 관련된 사람 분석 등의 활동을 돕기 위해여 직원, 계약, 파트너, 그리고 인재 데이터를 통합 관리할 수 있는 시스템을 개발하고 있다.


인프라 데이터에서의 도전적인 과제들


이상 탐지를 위한 보안 이벤트 플랫폼

수 백개의 경로에서 반정형 데이터들을 수집하여, 분석 작업을 위해 적절한 정형 데이터 스트림으로 변환하는 복잡한 이벤트 처리 시스템을 어떻게 개발할 것인가?

개발 속도를 높이기 위해서는 (규칙 혹은 머신러닝 기반의) 템플릿화 된 탐지 모듈을 어떻게 개발해야 할 것인가?

보안 이벤트 플랫폼

StreamAlert과 siddhi와 같은 오픈 소스 프로젝트를 참조하면 더 많은 아이디어를 얻을 수 있다.


자산 관리

가용성, 유연성, 그리고 신속한 관리를 위해서 필요한, 애플리케이션과 클러스터, 지역과 AMI / 소프트웨어 스택을 포함한 메타데이터들 사이의 관계를 표현하는 다차원 데이터 모델을 어떻게 개발할 것인가?

애플리케이션의 취약성과 위험 요소 점수에 대한 메타데이터를 더 풍부하게 만드는 학습 모델은 어떻게 개발할 수 있을까?


신뢰성

소스 코드 변경이 실제 서비스 환경에 배포될 때 어떻게 안전을 보장할 수 있을까?

트래픽이 급증했을 때 가용성에 문제가 생기지 않으면서도 더 효율적인 방향으로 오토스케일링 정책을 조절할 수 있을까?


용량과 효율성

어떤 자원들(클러스터, 테이블 등)이 사용되지 않거나 적게 활용되고 있고 그 이유는 무엇인가?

AB테스트에서 승리한 배포를 전체 사용자에게 배포하면 비용이 얼마나 들 것인가?


사람 분석

채용에 대한 AB 테스트를 통해, 좋은 역량을 가진 사람들을 끌어들이면서도 지원자들에게 좋은 경험을 제공할 수 있을까?

포용성과 다양성 조약(Inclusion and Diversity initiatives)의 영향을 측정할 수 있을까?


사람과 보안

통합 참조 시스템과 추가 메타데이터를 입력할 수 있는 애플리케이션을 제공하기 위한 안전하고 제한된 사람 정보 금고(People Data Vault)를 만들 수 있을까?

접근 권한을 어떻게 자동으로 할당/해제할 수 있을까?


데이터 계보

Netflix 데이터 전반에 저장된 다양한 데이터 요소들 사이의 관계를 만들어줄 일반화된 계보 시스템을 개발할 수 있을까?

이 계보 시스템을 SLA 실패를 예측하거나 (작업 비용, 테이블 비용, 유지 기간 등의) 데이터 생애주기 관리 문제들을 해결하기 위해 활용할 수 있을까?


이것은 단지 우리의 인프라 데이터 엔지니어링과 사이언스 그리고 분석의 환상적인 세계를 잠깐 살펴본 것일 뿐이다. 우리는 세계 수준의 데이터 기반 인프라스트럭쳐를 확장 가능하게 만드는 임무를 수행 중이고, 이제 막 시작되었다.


관련 문서들

More infrastructure-related post from the Netflix Tech Blog

How Netflix Works?

Ten years on: How Netflix completed a historic cloud migration with AWS

Amazon Fleet Management: Meet the Man Who Keeps Amazon Servers Running, No Matter What | Amazon Web Services

ADS Framework at Palantir

Building a SOCless detection team

Lessons Learned in Detection Engineering

Engineering Trade-Offs and The Netflix API Re-Architecture

Evolving the Netflix Data Platform with Genie 3

Making No-distributed Database Distributed — Dynomite

Detecting Credential Compromises in AWS

Dredge Analysis

Dredge Case Study

Scaling Data Lineage at Netflix to Improve Data Infrastructure Reliability & Efficiency

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