Seongsiks

Being A DevOpser. Powered by
Obtvse, highlight.js, theme toc Creative Commons License
Seongsiks Twitter Github Email
DevOps Ruby On Rails Chef Projects Misc Movies & Drama ME

Netflix의 DevOps == NoOps?

2012 . 03. 19. [Adrian Cockroft's blog]

No Ops?!

NoOps라는 말이 트위터나 페이스 북에서 뜨겁게 달구고 있는데요. 운영할 필요가 없는 꿈의 인프라라고 오해할 여지가 많은 이 용어는 시스템 관리자들의 분노를 이끌어내고 있습니다. 우리가 필요없다고? 그게 말이 돼 하면서 말이죠. 최근 Netflix의 클라우드 아킥텍쳐 팀의 디렉터인 Adrian Cockcroft가 넷플릭스가 실현한 NoOps에 대한 블로깅이 화제를 끌었습니다. 넷플릭스는 미국에서 Blockbuster라는 거대한 오프라인 영화 렌탈 체인을 함몰시킨 VOD서비스 회사입니다. NoOps NoOps 시스템 운영자가 없다? 그러나 실제로 넷플릭스에는 전통적인 인프라 운영만 담당하는 팀이 존재하고 Devops팀 역시 존재한답니다.

초창기 Netflix 인프라

약 5년전 넷플릭스가 처음 VOD서비스를 시작한 초창기에는 가상 Storage Area Network가 달린 고성능 가상머신인 IBM P시리즈을 사용하고 있었답니다. 이렇게 한개의 데이터 센터만을 운영하고 있었는데요. 이렇게 비싼 돈주고 최고성능의 머신을 쓰니까, 당연히 연산속도도 빠르고, 시스템 다운도 잘 안될테니 개발자들은 개발에만 전념할 수 있겠지? 하고 생각에 이렇게 사용한거지요. 근데 웬걸, 가상머신인데도 서버 증설은 정말 오래걸리고, 웹서버끼리 코드의 무결성은 맨날 깨지고, 오라클은 왜 자꾸 그렇게 죽는지.. 거기다 더해서 SAN이랑 네트워크까지 말썽을 일으키니, 정말 자주 자주 사이트가 다운 되었었다고 합니다.

인프라 운영 전문가의 사명

이런식으로 계속 사업을 덜그럭 거리면서 운영하고 있었는데도, 사업은 날로 번창하게 됩니다. 결국 데이터 센터를 하나 더 확장하기로 결정하고 실행에 옮기게 됩니다.. 헐.. 데이터 센터 하나 똑같이 만들자하고 가볍게 시작한 일이 예상보다 훨씬 큰 우여곡절을 겪게됩니다. 원인은 "우리가 인프라를 새로 구성 해본적이 없어서 그럴거야" 그래서 새로 인프라 운영 메니져도 새로 들이고, 전문 운영자(ops)를 들여서 데이터 센터를 구축했는데.. 그러나 이 사람들이 생각하는 자신의 사명은 현재 시스템을 죽이지 않고, 어떤 일이 있어서 다운되서 404를 떨구지 않겠다는 거였습니다.

CEO의 결단, 클라우드 + NoSQL:)

넷플릭스는 개발자 중심의 회사입니다 CEO Reed Hastings자신도 C++개발자출신이었답니다. 몇년전 Reed는 넷플리스는 NoSQL과 클라우드로 가야한다고 경영방침을 정합니다. 그 이유는 데이터센터 확장때 겪은 어려움 들은 클라우드에서 그 답을 찾을 수 있을거라고 판단했기 때문입니다. 그리고 AWS의 관리에 따른 책임과 자금을 모두 개발 조직에게 맡겨버립니다. 그리고 3년 후 운영측은 거의 대부분 넷플릭스를 떠나서, 작은 팀이 되어 버렸습니다. 그러나 아직도 운영팀은 넷플릭스 핵심 기능인 DVD 전송기능과 데이터 센터 운영과 같은 핵심기능을 수행하고 있습니다. 그러나 2009년 이후로 그 구조와 기능은 거의 바꾸지 않고, 기술을 업그레이드하고 그 물리적 크기만 수천배 커지는 방향으로만 운영되고 있습니다.

Automated Infrastructure

반면에 개발측은 운영쪽에서 몇명의 우수한 운영 스페셜 리스트를 영입하고 DevOps기능의 핵심을 이룰 팀을 구성하여 AWS 환경에 특화된 넷플릭스 인프라를 연구합니다. 긴 토의 끝에 넷플릭스는 리눅스 베이스의 [AMI](Amazone Machine Image)을 만들어 사용하기로 합니다. 그리고, 버전관리를 위해서는 Perforce, 디펜던시를 위해서는 Ivy, 배포과정을 자동화 하기위해서는 Jenkins, 바이너리 리파지토리로 Artifactory를 사용하여 "bakery"라는 것을 구축합니다. bakery는 AMI를 빵처럼 구워내는 기능을 가지고 있는데, 특이한것은 이 AMI가 이미 서비스에 필요한 모든 코드를 포함하고 있다는 겁니다.

AWS powered infra

여기에다가 AWS Autoscale Group과 더해서 완벽하게 똑같은 인스턴스를 복제해서 서비스에 물릴 수 있게 됩니다. 그리고 chef나 puppet과 같은 전형적인 DevOps툴을 사용하지 않은 이유는 순전히 개발 팀장들이 항상 똑같은 설정되어 있다고 믿었던 os가 서로 달라서 고생했던 경험을 가진 개발자 출신이었기 때문이었답니다. 여기서 엄청난 넷플릭스의 규모가 공개되는데.. AWS에 현재 서비스 중인 인스턴스가 10,000개라고 하네요.. 이 인스턴스 들은 기존 데이터 센터의 규모에 10배 정도 되는 규모이며, AWS 9개 zone에 효율적으로 분산되어 있습니다. 이 거대한 인프라를 관리하는 인원은 10명 남짓의 DevOps팀입니다. 실은 이 팀에서 하는 일은 인프라 전체를 관리한다기 보다는 bakery의 베이스 AMI를 종종 업데이트 하거나 빌드 툴들을 관리하는 것 뿐이죠.

Light weighted Deployment

이 시스템을 수백명의 개발자가 사용하고 있습니다. 개발자는 이 툴을 이용해서 자신의 코드를 베이스 AMI에 반영해 보고 AWS 개발 계정에 올려보고 이상이 없는지 테스트하고 실 서비스에 배포하는 작업을 자기들 맘대로 합니다. 누구에게 결제를 받거나 컨펌을 받거나, 허락을 받지 않습니다. 자신의 코드는 자신이 책임 지는 것이 상식입니다. 서버 한대 더 달라고 인프라에게 기안을 올리고 서버 증설을 문의하거나 반납을 독촉받거나 하는 일따위는 없습니다.

넷플릭스의 배포 프로세스

  • 웹 베이스의 bakery관리 툴에 접속
  • 새로운 코드가 반영되어 있는 AMI를 인스턴스를 생성
  • 이 카나리아(라고 표현) 한마리를 서비스에 날려보냅니다.
  • 이상이 발생하면 그냥 트레픽을 이전 버전으로 다시 돌립니다. (수초 정도 소요)
  • 이상없으면 모든 트레픽으로 새 버전으로 돌립니다.
  • 기존 트레픽이 없는 인스턴스들은 자동으로 삭제됨.

여기서 중요한것은 이런 일련의 과정이 클릭 몇번 만으로 이루어진다는 겁니다. 하루에도 여러번 이런 방식으로 배포가 가능하고, 실제로 이렇게 이루어지고 있습니다.

Cloud 운영 전담팀

이런 방식으로 넷플릭스의 동영상 스트리밍 기능이 클라우드로 옮겨가게 되면서 클라우드 전담팀이 필요하게 되었습니다. 그래서 CORE(Cloud Operation Reliability Engineering) 팀을 구성하게 됩니다. 그리고 이 팀은 넷플릭스 DevOps 조직의 두번째 팀이 됩니다.

Database?

이렇게 데이터 센터가 클라우드로 넘어가게 되면서 DB에서도 변화가 일어납니다. 기존에 사용하던 Oracle에서 AWS의 SimpleDB로 사용하다가 최근에는 Apache Cassandra를 사용합니다. 그리고 이 DB만 전담하는 팀이 신설되었습니다. 그리고 몇몇 Oracle DBA들은 Ops쪽으로 넘어가서 기존의 RDB에서의 노하우로 새로운 Cassandra key와 코드 베이스 환경에 적합한 데이터 스키마를 설계하는데 도움을 주고 있습니다. 결국엔 3명의 DevOps 엔지니어가 660개 정도의 인스턴스들로 구성된 55개의 Cassandra Cluster를 관리할 수 있게 되었습니다. 거기에 Cassandra의 약점을 보완하기 위해, 자동 업그레이드, 압축, 복구 기능을 추가 개발했고, Priam을 이용해서 개발자가 원할때 클러스터를 추가 할 수도 있답니다.

넷플릭스의 DevOps조직

넷플릭스는 아직 DVD사업을 위한 데이터 센터를 운영하는 운영인력을 운용하고 있고, 적은 수의 DevOps 엔지니어들이 개발조직 측에서 일하고 있으며, 개발자들은 자신이 만든 코드를 알아서 배포 운영하고 있고, 자신이 만든 코드에 문제가 생길 경우 노티를 받고 자신이 책임지고 처리하게 됩니다. 이들은 많은 부분의 서버 운용작업을 자동화하여 개발자가 쉽게 인프라를 자신에게 맞게 조정할 수 있도록 해주는 툴을 개발하였습니다. 운영 조직은 클라우드를 운영에는 관여하지 않는다고 합니다.

Adrian의 마지막 일격

가장 어려운것이 이런 문화를 만드는 것인데, 어떻게 이런 문화를 정착 시켰냐는 물음에

처음 채용할때부터 이런 문화에 어울리는 사람만 채용했으며, 만약 이에 어울리지 못하고 있다고 판단되면 넷플리스에 머무르지 못한다!!

comments powered by Disqus
Back to DevOps