3장. 원칙 개요
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
넷플릭스에서 카오스 엔지니어링을 도입한 초기에는 카오스 엔지니어링이 실제로 어떤 분야인지 명확하지 않았습니다. 전선을 뽑거나 물건을 부수거나 프로덕션에서 테스트하는 것에 대한 몇 가지 캐치프레이즈가 있었고, 서비스를 안정적으로 만드는 방법에 대한 오해가 많았으며 실제 도구의 예도 거의 없었습니다. 카오스 팀은 도구를 통해 선제적으로 안정성을 개선하는 의미 있는 분야를 만들기 위해 결성되었습니다. 카오스 엔지니어링의 정의와 다른 사람들도 카오스 엔지니어링에 참여할 수 있는 방법에 대한 청사진을 마련하기 위해 수개월 동안 회복탄력성 공학 및 기타 분야를 연구했습니다. 이 정의는 "원칙"이라는 일종의 선언문으로 온라인에 게시되었습니다. ( 소개를 참조하세요 : 카오스 엔지니어링이 어떻게 탄생했는지에 대한 이야기는 소개: 카오스의 탄생을 참조하세요.)
모든 새로운 개념이 그렇듯이 카오스 엔지니어링도 때때로 오해를 받기도 합니다. 다음 섹션에서는 카오스 엔지니어링이 무엇이고 무엇이 아닌지 살펴봅니다. 카오스 엔지니어링의 기본 원칙은 "고급 원칙" 섹션에 정리되어 있습니다. 마지막으로 앞으로 이 원칙을 변화시킬 수 있는 요인이 무엇인지 살펴봅니다.
카오스 엔지니어링이란?
"원칙"은 카오스 엔지니어링을 언제, 어떻게, 어떻게 하면 잘 할 수 있는지를 알 수 있도록 이 분야를 정의합니다. 오늘날 카오스 엔지니어링에 대한 일반적인 정의는 "시스템의 약점을 발견하기 위한 실험의 촉진"입니다. "원칙" 웹사이트에서는 실험의 단계에 대해 다음과 같이 설명합니다:
-
먼저 '정상 상태'를 정상적인 동작을 나타내는 시스템의 측정 가능한 출력으로 정의합니다.
-
이 정상 상태가 대조군과 실험군 모두에서 계속될 것이라고 가설합니다.
-
서버가 다운되거나 하드 드라이브가 오작동하거나 네트워크 연결이 끊어지는 등 실제 상황을 반영하는 변수를 도입하세요.
-
대조군과 실험군 사이의 정상 상태의 차이를 찾아 가설을 반증해 보세요.
이 실험은 카오스 엔지니어링의 기본 원리를 구성합니다. 설계상 이러한 실험을 구현하는 방법에는 큰 자유도가 있습니다.
실험과 테스트
넷플릭스에서 가장 먼저 구분해야 한다고 생각한 것 중 하나는 카오스 엔지니어링이 테스트가 아닌 실험의 한 형태라는 점입니다. 둘 다 '품질 보증'의 범주에 속하지만 소프트웨어 업계에서 이 문구는 종종 부정적인 의미를 내포하고 있습니다.
넷플릭스의 다른 팀들은 처음에 카오스 팀에게 "같은 것을 찾는 통합 테스트를 여러 개 작성하면 안 될까요?"라는 질문을 하곤 했습니다. 이러한 생각은 이론적으로는 실용적이지만 실제로는 통합 테스트에서 원하는 결과를 얻는 것이 불가능했습니다.
엄밀히 말하면 테스트는 새로운 지식을 창출하지 않습니다. 테스트를 하려면 테스트를 작성하는 엔지니어가 찾고자 하는 시스템에 대한 특정 속성을 알고 있어야 합니다. 이전 장에서 설명한 것처럼 ...