카오스 몽키는 무엇입니까? 카오스 엔지니어링 설명

DVD 배포에서 스트리밍 비디오를위한 분산 클라우드 시스템 구축으로 전환하는 동안 Netflix 홀에서 개척 된 Chaos Monkey는 모든 형태와 규모의 소프트웨어 개발 조직에서 채택한 엔지니어링 원칙을 도입했습니다. 더 탄력적으로 만드는 법을 배울 수 있습니다.

당시 클라우드 및 시스템 인프라 책임자 인 Yury Izrailevsky와 스트리밍 회사의 클라우드 솔루션 책임자 인 Ariel Tseitlin이 2011 년 7 월에 게시 한이 주제에 대한 원래 Netflix 블로그 게시물에 따르면 Chaos Monkey는에서 프로덕션 인스턴스를 무작위로 비활성화하도록 설계되었습니다. 따라서 Netflix 엔지니어가 더 나은 자동 복구 메커니즘을 구축하여 제거 할 수있는 약점을 드러냅니다.

눈에 띄는 이름은 "데이터 센터 (또는 클라우드 지역)에서 무기로 야생 원숭이를 풀어 인스턴스를 무작위로 격추하고 케이블을 씹는 아이디어에서 비롯된 것입니다.이 모든 동안 중단없이 고객에게 서비스를 계속 제공합니다." 상태.

실제로 이것은“각 클러스터에서 무작위로 인스턴스를 선택하고 업무 시간 중 어느 시점에 경고없이 끄는 간단한 애플리케이션을 포함합니다. 전직 Netflix 엔지니어 Nora Jones와 Casey Rosenthal 이 O'Reilly Media에서 발행 한 Chaos Engineering 주제에 대한 포괄적 인 책에서 자세히 설명했습니다 .

아이디어는 가장 취약한 지점이 어디에 있는지 파악함으로써 엔지니어가 문제를 해결하기 위해 자동화 된 트리거를 설정하여 문제가 발생할 경우 한밤중에 전화를받을 수 있다는 것입니다. 카오스 몽키는 이후 카오스 엔지니어링의 기치 아래 모든 범위의 카오스 원칙으로 진화했습니다.

Netflix의 Chaos Monkey

Chaos Monkey는 현재 Microsoft 소유의 GitHub에서 근무하는 Greg Orzell이 회사의 새로운 클라우드 기반 아키텍처에 복원력을 구축하는 임무를 맡은 2010 년경 Netflix의 엔지니어링 노력에서 성장했습니다.

“내가 카오스 몽키에 대해 생각하는 방식은 엔지니어링의 주요 업적이 아닙니다.”라고 Orzell은 말했습니다. "이것이 가져다주는 가치는 우리가 DVD 배송에서 인터넷을 통한 스트리밍으로 전환 할 때 중요한 사고 방식의 변화입니다."

초기에 Netflix 엔지니어는 Chaos Monkey가 AWS 클러스터를 제거하는 것부터 시작하여 각각 특정 유형의 오류를 설명하는 오픈 소스 도구의 "Simian Army"를 사용하여 시스템에 모든 중단 및 문제를 도입했습니다.

원래 군대 (현재 대부분은 새로운 도구를 선호하여 은퇴)에는 RESTful 클라이언트-서버 통신 계층에 인위적인 지연을 유발하는 Latency Monkey와 각 인스턴스에서 실행되는 상태 확인을 활용하는 Doctor Monkey 등이 포함되었습니다. 뿐만 아니라 다른 외부 상태 징후 (예 : CPU로드)를 모니터링하여 비정상 인스턴스를 감지하고 필요한 경우 서비스에서 제거합니다.

Chaos Kong은 전체 AWS 가용 영역에 대한 중단을 시뮬레이션하여 Chaos Monkey를 다음 단계로 끌어 올렸습니다. 2015 년 Netflix 블로그 게시물은 "AWS 리전을 사용할 수 없게되는 경우는 매우 드물지만 실제로 발생합니다."라고 설명합니다. 

"지역 중단을 시뮬레이션하는 실험을 정기적으로 실행함으로써 우리는 시스템의 약점을 조기에 식별하고 수정할 수있었습니다."라고 게시물은 계속합니다. "US-EAST-1이 실제로 사용할 수 없게되었을 때 우리 시스템은 이미 트래픽 장애 조치를 처리 할 수있을만큼 강력했습니다."

Jones와 Rosenthal이 저서에서 설명했듯이 Chaos Kong이 인프라에서 느슨해지게하는 것은 "스트리밍 서비스의 모든 측면을 모니터링하기 위해 모인 '전쟁 실'과의 화이트 너클 사건이었으며 몇 시간 동안 지속되었습니다."

2 년 후인 2017 년 7 월 Netflix는 Chaos Automation Platform 인 ChAP를 도입했습니다.이 플랫폼은 "사용자 지정 서비스에 대한 배포 파이프 라인을 조사합니다. 그런 다음 해당 서비스의 실험 및 제어 클러스터를 시작하고 소량의 트래픽을 각각에 라우팅합니다.”라고 블로그 게시물은 말합니다.

혼돈 공학 원리

기본 카오스 몽키 관행은 카오스 콩을 통한 더 크고 더 큰 배포와 함께 나중에 카오스 엔지니어링으로 공식화 된 것으로 빠르게 발전했습니다. Netflix는 2015 년까지 공식적인 혼돈 엔지니어링 팀을 구축하지 않았습니다.이 팀은 현재 Stitch Fix의 엔지니어링 이사 인 Bruce Wong이 이끌었습니다.

혼돈 공학의 원리는 Chaos Monkey의 원저자 중 일부에 의해 공식적으로 대조되어 관행을 다음과 같이 정의했습니다.

실제로 이것은 4 단계 프로세스의 형태를 취합니다.

  1. 정상적인 동작의 기준을 설정하기 위해 시스템의 "정상 상태"를 정의합니다.
  2. 이 정상 상태가 대조군과 실험군 모두에서 계속 될 것이라고 가정하십시오.
  3. 충돌하는 서버, 오작동하는 하드 드라이브 또는 끊어진 네트워크 연결과 같은 실제 이벤트를 반영하는 변수를 소개합니다.
  4. 대조군과 실험군의 차이를 찾아서 가설을 반증하십시오.

정상 상태를 방해하기 어려운 경우 강력한 시스템이 있습니다. 약점이 있으면 해결해야 할 것이 있습니다.

Jones와 Rosenthal은“ 'The Principles'가 출판 된 후 5 년 동안 새로운 산업의 새로운 도전에 맞서기 위해 카오스 엔지니어링이 진화하는 것을 목격했습니다. "소프트웨어 산업과 새로운 수직 영역으로 채택이 확대됨에 따라 관행의 원칙과 토대는 계속해서 발전 할 것입니다."

카오스 몽키와 카오스 엔지니어링

Chaos Monkey의 오픈 소스 버전을 실행하려면 시스템이 GitHub에 설명 된 특정 전제 조건을 충족해야합니다.

Chaos Monkey는 서비스로 실행되지 않으므로 GitHub 페이지에 설명 된대로 크론 작업을 설정해야합니다. 그런 다음 평일에 한 번 Chaos Monkey를 호출하여 종료 일정을 만듭니다.

이 버전의 Chaos Monkey를 사용하려면 Netflix의 자체 오픈 소스 지속적 전달 플랫폼 인 Spinnaker를 사용해야합니다.이 플랫폼은 특정 조직이 방법을 채택하는 능력을 제한 할 수 있습니다. Chaos Monkey에는 MySQL 호환 데이터베이스 버전 5.6 이상도 필요합니다.

서비스 소유자는 Spinnaker를 통해 Chaos Monkey 구성을 설정합니다. Chaos Monkey는 Spinnaker를 통해 서비스가 배포되는 방식에 대한 정보를 얻고 지정한 빈도와 일정에 따라 인스턴스 (가상 머신 또는 컨테이너)를 임의로 종료합니다.

물론 Chaos Monkey를 구현하는 것은 시스템 복원력 문제를 해결하는 어렵고 복잡한 작업의 시작에 불과합니다. 카오스 몽키는 시스템의 약점을 발견 할뿐입니다. 그런 다음 원인을 파악하고 해결책을 찾는 것은 devops 또는 시스템 엔지니어링 팀의 몫입니다.

Orzell은 "툴링 자체는 비싸지 않지만 툴링에 반응하기 위해 투자해야하는 투자는 바로"라고 말합니다. 카오스 엔지니어링에 전념하려면 새로운 기능 구축에서 탄력성 강화로 리소스를 전환해야합니다. "모든 비즈니스는 해당 스펙트럼에서 서로 다른 지점에 있으며 각 기업은 해당 공간에서 얼마나 많이 전화를 걸거나 줄 일지 결정해야합니다."라고 그는 덧붙입니다.

Jones와 Rosenthal은 초기에 Netflix 엔지니어가 "특히 금융 기관으로부터 많은 반발을 받았다"고 말합니다.

은행에 대한 지분이 더 높음에도 불구하고 여전히 가동 중단을 겪었습니다. 따라서 "크고 통제되지 않은 결과를 방지하기 위해 위험을 이해하는 카오스 엔지니어링과 같은 사전 예방 적 전략"을 신중하게 구현함으로써 이러한 조직 중 다수는 Capital One이 초기에 사고 방식을 바 꾸었습니다. 책에 자세히 설명 된대로 채택 자.

카오스 엔지니어링 리소스

다시, 주제에 대한 최신 결정적인 책은 혼돈 엔지니어링 2017 책에서 컴파일 전 넷플릭스 엔지니어 작업의 많은에 그 저자를 구축 년 4 월 2020 년 출판 노라 존스와 케이시 로젠탈,,, 그리고 다른 사람에 의해 혼돈 엔지니어링 . 보다 실용적인 개요는 Russ Miles의 Learning Chaos Engineering을 참조하십시오 .

Netflix는 자습서, 많은 문서, 오류 카운터, 중단 검사기 및 암호 해독 도구를 포함하여 GitHub의 주제에 대한 풍부한 리소스를 제공합니다.

카오스 엔지니어링 실험을 실행하기위한 상용 도구 제공 업체 인 Gremlin은 무료 온라인 및 PDF 형식으로 제공되는 포괄적 인 자체 리소스 세트를 제공합니다. 이 회사는 또한 Chaos Conf 및 Slack 채널을 포함한 다양한 커뮤니티 활동을 지원합니다.

O'Reilly는 또한 주제에 대한 책과 비디오의 편리한 재생 목록을 포함하여 풍부한 리소스를 가지고 있습니다.