해당 블로그는 KT UCloud 의 지원을 받고 있습니다.
해당 글은 http://techblog.netflix.com/2012/06/asgard-web-based-cloud-management-and.html 의 글을 발 번역 한 것입니다. 아마존 AWS 상에서의 관리에 관심이 있는 분들은 꼭 읽어보시길 강추합니다. Netflix에서 공개하는 툴들을 보면 상당히 좋은 것들이 많습니다.
과거 몇년 동안, Netflix 개발팀은 자체 개발한 툴을 이용하여 아마존 클라우드로 수 백개의 애플리케이션과 서비스를 배포하고 구축했습니다. 이런 툴 중에 하나가 Asgard 이고 Netflix 개발자들이 클라우드를 관리하기 위해서 사용합니다. Asgard를 github에 오픈소스로 공개하고, 아무나 다운로드 받아서 사용할 수 있게 된 것이 매우 기쁩니다. AWS 계정만 있으면 됩니다. Netflix의 다른 오픈소스들과 마찬가지로 asgard 역시 Apache License Version 2.0으로 공개되었습니다. 자유롭게 해당 프로젝트를 포크하고 개선해주길 바랍니다.
해당 블로그의 몇가지 정보들은 아래의 프리젠테이션에서 이미 공개가 되었습니다. Asgard는 Netflix Application Console 또는 NAC의 오리지널 이름입니다.
- Asgard, the Grails App that Deploys Netflix to the Cloud (Slides 2012)
- Building Cloud Tools for Netflix (Slides 2011)
- Building Cloud Tools for Netflix (Video 2011)
Visual Language for the Cloud
Cloud Model
Application
해당 클라우드 오브젝트들에 대해서 간단하게 요약하면 다음과 같습니다.
- 하나의 Auto Scaling Group(ASG)는 0개나 그 이상의 Elastic Load Balancers(ELBs) 를 새로운 장비에 추가할 수 있습니다.
- 하나의 ELB는 user traffic을 장비로 보낼 수 있습니다.(Route)
- 하나의 ASG는 새로운 장비를 시작하거나 종료할 수 있습니다.(Launches and Terminates)
- 개별 장비의 시작을 위해서 ASG는 Launch Configuration(실행 설정)을 이용합니다.
- Lunch Configuration은 아마존 머신 이미지(AMI) 를 구체적으로 명시하고, 새로운 장비를 시작할 때, 어떤 Security 그룹을 이용할 것인지 명시합니다.
- AMI는 각 장비에서 사용할 OS 등과, 사용할 특정 어플리케이션들의 특정 버전들을 포함하고 있습니다.
- Security Groups 은 traffic 을 보내는 source 나 port 등을 차단할 수 있습니다.
하나의 어플리케이션을 배포하기 위해서 수 많은 일들에 대해서 파악해야 합니다.
Service-Oricent 설계(Netflix가 가진)에 수 많은 클라우드 객체가 있고, 그들이 사용하는 특정 서비스와 연관된 객체를 모두 찾아내는 것은 매우 중요합니다. Asgrad는 여러 개의 클라우드 객체와 하나의 어플리케이션을 연관시키는 것에 대한 네이밍 규칙과 SimpleDB 안에 어플리케이션 레지스트리를 사용합니다. 각 어플리케이션은 소유주와 이메일 주소를 어플리케이션과 연관된 클라우드 객체의 상태와 존재에 대해 책임이 있는 사람에게 전달하기 위해서 가지고 있습니다.
Cluster
이전 ASG는 “동작 안함” 상태로 트래픽을 더 이상 받지 않고 있지만, 새로운 ASG에 장애가 발생한 경우에 이용가능하도록 남아있습니다. 복구시에 트래픽은 ELB로 부터 받게 되고, 이를 위한 Netflix 내부 서비스는 아직 오픈 소스가 아닙니다.
Deployment Methods
Fast Rollback
- 새로운 ASG obiwan-v064 생성
- obiwan-v064 로 트래픽 전달
- obiwan-v063 로의 트래픽 정지
- 모니터링 결과 점점 상황이 안좋아지는 것을 발견
- obiwan-v063 로 다시 트래픽 전달
- obiwan-v064 로의 트래픽 정지
- 로그를 분석해서 잘못된 서버의 문제점을 진단합니다.
- obiwan-v064 를 제거합니다.
Rolling Push
- 해당 ASG 장비들이 다른 장비들과 중복되지 않아야 하는 분명한 목적으로 서비스되고 있을 경우
- 특정 어플리케이션의 클러스터링 메카니즘이(예를들어, 카산드라) 클러스터 내의 급속한 증가에 대한 지원이 없을 경우(역자 주: 카산드라의 경우, 장비를 너무 많이 추가하면, 데이터 교환으로 인해서 부하가 발생하게 됩니다.)
- 배포하는 것에 오랜 시간이 걸릴 수 있습니다.
- 배포가 잘못되었을 경우에, 복구에도 오랜 시간이 걸릴 수 있습니다.
Task Automation
Auto Scaling
Why not the AWS Management Console?
-
아마존 Keys를 숨기자.
Netflix에서는 현재 시스템의 발전과 수정을 포함한 직원 각자의 자유와 책임을 인정합니다. 대부분의 시스템은 아마존 클라우드에서 운영중입니다. 수 백명의 직원들이 각자의 클라우드 어플리케이션을 관리하고 싶기를 원하지만, 직원 모두에게 아마존 계정에 바로 접근할 수 있는 secret key를 바로 주는 것은 선호하지 않습니다. 내부 콘솔을 제공함으로써, 너무 많은 직원들에게 클라우드 패스워드를 알려주지 않고도 아마존 계정에 Asgard 유저가 접근할 수 있도록 허용했습니다. 해당 전략은 개발자를 위해서 수 백개의 IAM( Identity and Access Management ) 을 필요로 하는 상황에서 벗어나게 해주었습니다.
-
Auto Scaling Groups
Auto Scaling Groups(ASGs) 에 대한 AWS Management Console 지원이 부족했다고 쓴 것처럼, Netflix는 배포의 기본 단위나 어플리케이션 장비의 관리 단위로 써 ASG에 에 크게 의존하고 있습니다. 오픈 소스로 푼 Asgard의 주요 목적중에 하나는 다른 아마존 고객들이 아마존의 Auto Scaling 을 쉽게 사용하도록 돕는 것입니다. ASG는 Netflix에서 신뢰성, 안전성, 비용 절감, 클러스터링, 배포의 간단함, 빠른 롤백을 위해서 큰 부분을 차지하고 있습니다.
-
Enforce Conventions
성장하는 다른 시스템들 처럼 생성하는 것을 사용자에게 허용해주면, 클라우드는 쉽게 비싸고, 이름이 정해지지 않은, 혼동되는 장소가 되어 버립니다.Netflix Cloud 아키텍처의 일부는 네이밍 규칙을 통해서 서비스에 연관된 클라우드 오브젝트를 등록하고 있습니다. Asgard는 클라우드를 온전한 상태(감사가 가능하고, 정기적으로 더럽고, 잊어버린 것들을 정리해서)로 유지하기 위해서 이러한 네이밍 규칙을 강제하고 있습니다.
-
Logging
예전부터, AWS Console 은 계정 사용자의 최근 액션 로그를 보여주지 않았습니다. 이는 문제가 발생했을 때, 누구에게 물어야 할지 결정하는 것을 어렵게 만들었고, 문제와 어떤 작업이 연관이 있는지를 아는 것도 어려게 만들었습니다. 로깅의 부족은 합법적으로 감사가 필요한 중요한 시스템에게는 치명적입니다.
-
Integrate Systems
자체 콘솔을 가지는 것은 다른 엔지니어링 시스템인 Jekins나 internal Discovery service 등과 통합이 필요할 때, 통합 포인트를 결정하는 것에 자율권을 주었습니다.
Costs
Feature Films
Conclusion
Related Resources
Asgard
Netflix Cloud Platform
- Netflix Open Source Projects
- Auto Scaling in the Amazon Cloud
- Servo (Publish application metrics for auto scaling)
- Netflix Cloud Architecture Slides
- Netflix Operations: Part I, Going Distributed
- @NetflixOSS Twitter Feed