아이티랩 - 넷플릭스가 말하는 ‘클라우드 이전 시 고려사항 5가지’

2006년 아마존닷컴이 아마존웹서비스(AWS)라는 자회사를 세우고 클라우드 서비스를 제공한다고 나섰을 때, 이 서비스가 성공할 것이라 예측한 이는 드물었다. 10년이 지난 지금, 이젠 클라우드를 빼놓고 IT를 얘기하기란 어렵다. AWS 외에도 구글, 마이크로소프트, IBM, 오라클, HPE 등 많은 기업이 클라우드 서비스 시장에 뛰어들었다.

기업 반응도 비슷하다. 5년 전만 해도 클라우드를 도입해 효과를 보는 곳을 찾기 쉽지 않았다. 찾았다 하더라도 사내 일부 시스템 또는 일부 부서에만 클라우드를 도입했다. 지금은 다르다.

IT시장 분석 및 컨설팅 업체 IDC가 지난 2월 발표한 ‘전세계 상반기 퍼블릭 클라우드 서비스 지출 가이드’ 보고서는 전세계 퍼블릭 클라우드 서비스 시장 규모가 2015년 700억달러에서 2019년 1410억달러를 넘어서는 등 2배 이상 커질 것으로 보았다. 이 보고서에 따르면 퍼블릭 클라우드에 대한 관심은 2019년이 되면 대기업이 퍼블릭 클라우드 서비스 분야에 800억달러 이상을 지출할 것으로 나타났다. 과거와 달리 이젠 많은 기업이 클라우드 도입을 검토하고 있다.

최대 동영상 스트리밍 업체로 알려진 넷플릭스도 마찬가지다. 넷플릭스는 AWS로 자사 모든 서비스를 옮겼다. 현재 넷플릭스는 노드가 수백개에서 수천개 이르는 마이크로서비스 형태로 운영되고 있으며, 클라우드에서 모든 데이터를 처리한다.

“넷플릭스는 스트리밍 서비스에 사용하던 데이터센터 운영을 공식적으로 종료했습니다. 그러나 DVD 비즈니스는 여전히 데이터센터를 이용합니다. 하지만, 넷플릭스는 해당 데이터센터의 시설과 운영을 소유하지 않습니다.”

Yury Izrailevsky

유리 이즈라일예브스키, 클라우드 & 플랫폼 엔지니어링 부문 부사장

유리 이즈라일예브스키 넷플릭스 클라우드&플랫폼 엔지니어링 부문 부사장과 진행한 서면 인터뷰에서 넷플릭스는 AWS 운영 시스템에 US-East-1, US-West-2 및 EU-West-2 리전을 이용하고 있다고 밝혔다. 전세계 회원에게 최상의 넷플릭스 경험을 제공하기 위해 사용 중인 3개의 리전 중 한 곳에서 문제가 발생했을 때를 대비한 완전한 장애 극복 기능(failover) 도입도 빼놓지 않았다.

유리 부사장 설명에 따르면, 넷플릭스는 클라우드 자사 서비스를 모두 옮기면서 많은 혜택을 누렸다. 2008년 대비 스트리밍 서비스 이용 회원 수가 8배 증가했고, 지난 8년 간 월간 스트리밍 시간이 무려 1천배 가량 증가하는 등 회원들의 서비스 이용이 활발해졌지만, 이 모든 걸 탄력적인 클라우드 인프라로 해결했다.

netflix cloud

“이제 수천개의 가상 서버와 페타바이트급 스토리지를 불과 몇 분 내에 추가할 수 있게 되었습니다. 또한 더 이상 데이터센터 용량 계획을 할 필요가 없고, 이에 따라 엔지니어 팀은 넷플릭스 핵심 제품에 더욱 집중할 수 있게 되었지요.”

넷플릭스는 AWS로 마이그레이션을 통해 데이터센터에서 실행된 단일의 거대 애플리케이션을 환경 변화에 따라 수백개의 마이크로 서비스로 분할하고, 마이크로 서비스를 중심으로 엔지니어팀을 조직했다. 한 서비스에 모든 기능을 담아 시스템을 운영하기보다는, 서비스 기능마다 세부적으로 쪼개 운영했다. 그 결과 넷플릭스 소속 엔지니어는 아키텍처와 설계부터 운영에 이르기까지 완전한 소유권(full-ownership)을 갖는 데브옵스(DevOps) 모델을 구축할 수 있게 됐다.

물론 클라우드로 옮기는 모든 과정이 순조롭게만 흐른 건 아니다. 클라우드로 서비스를 옮기기 전 넷플릭스는 많은 점을 고려했다. 모든 데이터센터의 애플리케이션을 있는 그대로 AWS에 옮기기보다 마이그레이션을 통해 넷플릭스 전체 시스템을 클라우드 네이티브 방식으로 재설계했다.

“거대한 단일 애플리케이션을 마이크로 서비스로 전환, 데이터 모델 비정규화(denormalization), NoSQL 데이터베이스로 이전, DevOps 운영 모델과 지속적인 딜리버리 채택 등을 수행했습니다.”

넷플릭스 역시 많은 사용자처럼 클라우드로 시스템을 옮길 때 보안을 걱정했다. 유리 부사장이 클라우드 마이그레이션 작업을 할 때, 가장 중요하게 생각하고 수용한 보안 개념은 바로 ‘책임 분담’이다.

“AWS와 같이 제3자가 상당 부분의 인프라, 네트워크, 컴퓨터 자원을 관리하는 클라우드의 성격을 고려해 AWS는 클라우드 환경에 대한 일정 부분의 보안을 책임지고, 넷플릭스는 다른 부분에 대한 책임을 지는 형태입니다.”

그 외에도 유리 부사장 설명에 따르면, 넷플릭스는 클라우드로 가기 전 다음 5가지를 우선 고려했다.

Yury Izrailevsky netflix

1. 클라우드 장애 가능성이 걱정돼 데이터센터를 유지하지 말라. 장애 발생을 인지하고, 시스템 아키텍처를 구성하라.

AWS에서 일어나는 인스턴스 장애는 일반적인 데이터센터 하드웨어 시스템과 아주 유사합니다. 그럼에도 불구하고 넷플릭스는 장애를 감안하더라도 기존 데이터센터에서 클라우드로 옮겼습니다. 특히 넷플릭스급의 큰 규모에서 장애는 빈번하게 발생한다는 점을 잘 알고 있었지요.

그래서 우린 클라우드에서 기본 인스턴스에 장애가 발생할 경우에는 기본 하드웨어 가용성에 의존하는 대신 자체 회복력(Resilient)을 가질 수 있도록 시스템 아키텍처를 설계했습니다. 클라우드 환경에서 회복력을 가질 수 있도록 시스템 아키텍처를 구축하고 거듭해서 테스트를 진행하죠. 그 결과 넷플릭스는 이중화와 점진적 축소 운영 원칙 하에 불안정한 컴포넌트 상에서도 안정적으로 운영되는 시스템을 구축했습니다.

2. 한번에, 동시에, 완벽하게 마이그레이션 할 수 있다는 생각을 버려라.

우리도 마이그레이션에 상당한 시간을 들였습니다. 완벽한 계획과 사전 테스트로 마이그레이션이 진행되기 보다는 매번 계획을 짜고 테스트를 반복하는 형태로 시스템을 이전했습니다. 그 과정에서 먼저 중요도가 낮은 애플리케이션부터 마이그레이션 작업을 시작했지요. 그 다음 부족한 부분(필요한 자체 도구와 시스템 개발)을 파악했습니다.

애플리케이션을 하나씩 이전하면서 그 과정에서 얻은 경험을 토대로 플랫폼의 완성도를 높였습니다. 예를 들어, 시스템을 데이터센터와 AWS에서 동시에 운영하는 기간 동안 사용자 데이터의 동기화를 유지하기 위해 양방향 데이터 복제 방법을 개발했습니다.

3. 클라우드 운영시 필요한 도구와 서비스를 개발할 수 있어야 한다.

AWS가 당시 제공하지 않았지만 넷플릭스는 자사가 필요했던 도구와 서비스를 개발하거나 오픈소스를 이용해 개발했습니다. ‘카오스 몽키'(Chaos Monkey)와 같은 도구는 장애 발생 시 넷플릭스 애플리케이션이 일관된 성능을 유지할 수 있도록 도와줬지요. 아스가르드(Asgard), 현재 스피니커(Spinnaker)도 빼놓을 수 없습니다. 이 도구는 모든 넷플릭스 개발자가 운영 또는 테스트 환경에서 애플리케이션을 구축하거나 구성할 때 생산성을 높여줍니다.

넷플릭스 개발 철학은 이미 존재하는 도구를 복제하는 게 아니라 필요한 부분에 부합하는 도구를 개발하는 데 있습니다. 그 과정에서 개발한 각 도구를 오픈소스로 공개합니다. 오픈소스는 넷플릭스가 클라우드에서 학습한 도구와 모범사례를 폭넓은 커뮤니티와 공유할 수 있는 좋은 방법입니다. 우리 역시 개발한 도구를 오픈소스로 공개한 덕에 우리가 개발한 도구가 다른 기업에 어떤 영향을 주는지, 더 나은 외부 서비스가 있는지 등에 대한 커뮤니티 피드백을 받는 식으로 도움을 얻고 있습니다. 다른 많은 기업이 비슷한 도전 과제에 마주하고 있기 때문에, 오픈소스는 다양한 기업과 협업할 수 있는 좋은 통로가 된다고 생각합니다.

4. 장애 발생은 불가피하다. 탄력적으로 인프라를 설계하라.

대규모 분산시스템이라면 장애 발생은 불가피합니다. 또한 장애의 빈도는 규모와 변화의 속도에 따라 매우 다르게 나타나지요. 넷플릭스는 아주 빠른 속도와 큰 규모로 움직입니다. 사용자와 인터랙션이 있는 모든 시스템은 개별 인스턴스 장애, 기능적 시스템 장애, 네트워크 파티셔닝이나 지연 문제 등과 같은 다양한 장애 발생시에 대비해 탄력적 대응할 수 있도록 설계했습니다.

실제로 넷플릭스는 ‘카오스 콩'(Chaos Kong)이라는 시스템을 이용해 전체 AWS 리전장애에 대비한 시스템 복원력을 테스트하고 있습니다. 이러한 테스트를 진행하는 동안에는 한 AWS 리전에 있는 모든 시스템을 사실상 종료하고 사용자 트래픽을 나머지 2곳의 리전으로 우회합니다. 넷플릭스는 리전 단위, 존(zone) 단위, 개별 인스턴스 단위로 다단계 이중화를 구성하고 있으며, 전체 서비스는 이중화와 더불어 폴백과 서킷 브레이커를 갖추고 있습니다.

5. 자신이 없으면 클라우드와 데이터센터를 모두 운영하려는 욕심을 버려라.

최근 성공한 기술 기업들과 경쟁하는 동시에 협업하는 좋은 사례가 많아졌습니다. 넷플릭스는 AWS와 아주 좋은 파트너 관계를 맺고 있습니다. 데이터센터와 클라우드를 모두 운영하는 것은 복잡성과 취약성만 더할 뿐이라고 생각합니다. 호환이 되지 않는 아키텍처로 완전히 다른 두 환경을 지원하려면 이 두 환경을 모두 지원하는 코드와 운영이 필요한 반면, 실질적인 혜택은 없습니다. 또한 클라우드와 데이터센터 간 데이터를 공유하는 것은 본질적으로 신뢰할 수 없고, 더 큰 보안 위험을 초래한다고 생각합니다.

의견 0 신규등록      목록