카오스 공학 [견고한 시스템을 만드는 카오스 공학의 이론과 실제]
- 원서명Learning Chaos Engineering: Discovering and Overcoming System Weaknesses Through Experimentation (ISBN 9781492051008)
- 지은이러스 마일스(Russ Miles)
- 옮긴이권병섭
- ISBN : 9791161754949
- 20,000원
- 2021년 02월 26일 펴냄
- 페이퍼백 | 228쪽 | 188*235mm
- 시리즈 : 소프트웨어 테스팅
책 소개
요약
카오스 공학의 기본 개념부터 카오스 실험을 구성하고 자동화하는 방법, 나아가 협업을 통해 지속적인 카오스 공학을 실현하는 방식까지 종합적인 내용을 다루는 실무서다. 가장 먼저, 카오스 공학을 쉽게 이해하기 위한 핵심 원칙을 제시한다. 배경 이론을 갖춘 다음에는 카오스 실험을 계획하고 이를 실행하는 과정에서 필요한 실질적인 고려사항을 사례 중심으로 설명한다. 마지막으로 지속적인 카오스를 통해 자동화와 운영, 협업 관점에서 카오스 공학의 진화 방향을 소개한다.
이 책에 쏟아진 찬사
러스 마일스는 따라 하기 쉬운 카오스 툴킷 지침서를 통해 카오스 공학의 이론과 실제를 설명한다. 이 책은 카오스 공학을 시작하려는 모든 사람에게 훌륭한 내용을 제공한다.
- 애런 블로호비악(Aaron Blohowiak)/ 넷플릭스의 엔지니어링 관리자 및 보고서 『Chaos Engineering』(O’Reilly, 2017) 공동 저자
분산 환경의 시스템적인 취약점을 탐색하는 것은 클라우드 네이티브, 마이크로서비스 스타일 아키텍처를 운영하는 모든 조직에 있어 중요한 관행이다. 이 책은 카오스 공학을 성공적으로 이해하고, 구현하고, 채택할 수 있도록 도와주는 종합적이고 실용적인 안내서다. 이 책을 적극 추천한다.
- 크리스티안 포스타(Christian Posta)/ Solo.io의 최고 현장기술 관리자(Field CTO)
운영환경을 담당하는 모든 사람에게 실용적인 입문서다. 오늘날 우리가 구축하는 점점 더 복잡한 시스템에서 신뢰를 높이고자 카오스 공학을 시작하는 방법을 담고 있다. 여러분이 게임 데이에 참여한 적이 없더라도 당장 시작하는 데 필요한 모든 프로세스와 도구를 배울 수 있다.
- 데니스 유(Denise Yu)/ 피보탈의 수석 소프트웨어 엔지니어
이 책에서 다루는 내용
■ 카오스 엔지니어처럼 생각하는 방법
■ 시스템에서 무엇이 잘못될 수 있는지 결정하기 위한 가설 백로그 작성
■ 가설을 발전시켜 게임 데이의 카오스 공학 실험으로 작성
■ 오픈소스 카오스 툴킷을 사용해 자동화된 카오스 실험 작성과 실행 및 학습
■ 카오스 실험을 테스트로 전환해 발견한 취약점을 극복했는지 확인
■ 실행 중인 자동화된 카오스 실험의 관찰과 제어
이 책의 대상 독자
운영환경에서 어떤 식으로든 자신의 코드를 책임지는 사람들을 위한 책이다. 즉, 개발자, 운영자, 데브옵스 담당자를 의미할 수 있다. ‘어떤 식으로든 책임지는’의 의미는 실행 중인 시스템의 가용성, 안정성, 전반적인 견고성을 책임진다는 말이다. 그리고 시스템이 중단됐을 때 만들어지는 협업 그룹의 일부가 될 수 있다는 의미다.
여러분은 담당하는 시스템의 안정성을 개선하려는 사이트 신뢰성 엔지니어일 수 있다. 또한 코드의 소유권을 갖지 못한 채 운영환경에서 데브옵스를 수행하는 팀에서 일할 수도 있다. 여러분의 책임 수준이 어느 정도든 간에 운영환경에서 코드가 실행되는 방식과 조직에서 운영환경을 잘 관리하는 큰 그림에 관심이 있다면 이 책이 그러한 과제를 해결하는 데 도움이 될 것이다.
이 책의 구성
무료 오픈소스 도구, 특히 카오스 툴킷(‘예제 설명’ 절 참고)을 사용해 카오스 공학을 수행하기 위한 실용적인 가이드다. 오픈소스 커뮤니티의 샘플을 통해 실무자에게 필요한 사고방식, 프로세스, 예제, 일부 도구를 소개한다. 실무자가 직접 작성했기 때문에 성공적인 카오스 공학 실험을 계획하고 실행하는 방법을 배울 수 있다(3장과 5장 참고).
카오스 공학은 과학적 방법을 따른다. 1부에서는 카오스 공학 과학자처럼 생각하는 방법(1장 참고), 카오스 실험을 위해 준비된 가설 백로그를 만드는 방법을 배운다(2장 참고). 마지막으로 소중한 가설을 완전한 카오스 공학 실험으로 발전시키는 방법, 게임 데이를 배운다(3장 참고). 2부에서는 카오스 공학 실험을 자동화하는 방법을 다루고, 카오스 공학을 어떻게 반복 학습하는지 구현하는 방법을 탐구한다. 3부에서는 카오스 공학에서의 협력 및 운영상의 문제를 다룬다(9장 참고).
위와 같은 학습 경로를 통해 이 책은 지금 바로 전체 조직에서 카오스 공학을 안전하고 신중하게 도입하고자 필요한 모든 것을 여러분과 동료에게 제공하는 것을 목표로 한다.
목차
목차
- 1부. 카오스 공학의 핵심
- 1장. 카오스 공학의 정수
- 카오스 공학의 정의
- 카오스 공학은 전체 사회공학 시스템을 해결한다
- 어두운 부채의 위치
- 카오스 공학 프로세스
- 카오스 공학 관행
- 샌드박스/스테이징 또는 운영환경?
- 카오스 공학과 관찰 가능성
- ‘카오스 엔지니어’가 있는가?
- 요약
- 2장. 가설 백로그 작성
- 실험으로 시작할 것인가?
- 가설 수집
- 사건 분석
- 시스템 스케치
- “무엇이 잘못될 수 있을까?” 포착
- 가능성과 영향 소개
- 가능성-영향 지도 작성
- 고려 항목 추가
- 가설 백로그 만들기
- 요약
- 3장. 수동 게임 데이 계획과 실행
- 게임 데이란?
- 게임 데이 계획
- 가설 선택
- 게임 데이 스타일 선택
- 참여자와 관찰자 결정
- 장소 선택
- 실행 시점과 지속 시간 결정
- 게임 데이 실험 설명
- 승인 받기
- 게임 데이 실행
- 안전 모니터 고려
- 요약
- 2부. 카오스 공학 자동화
- 4장. 자동화된 카오스 공학용 도구 확보
- 파이썬 3 설치
- 카오스 툴킷 커맨드라인 인터페이스 설치
- 요약
- 5장. 첫 번째 자동화된 카오스 실험 작성과 실행
- 샘플 대상 시스템 구축
- 샘플 시스템 둘러보기
- 취약점의 증거 탐색과 발견
- 실험 실행
- chaos run의 표면 아래
- ‘개선 기회’를 나타낼 수 있는 정상 상태 편차
- 시스템 개선
- 개선 검증
- 요약
- 6장. 카오스 공학의 시작부터 종료까지
- 대상 시스템
- 플랫폼: 세 개의 워커 노드로 구성된 쿠버네티스 클러스터
- 애플리케이션: 단일 서비스, 세 번 복제
- 사람: 애플리케이션 팀과 클러스터 관리자
- 취약점 사냥
- 실험 이름 지정
- 정상 상태에 대한 가설 정의
- 실험 방법에 혼란스런 상황 주입
- 카오스 툴킷 쿠버네티스 드라이버 설치
- 실험 방법에서 쿠버네티스 드라이버 사용
- 롤백과 함께 좋은 시민되기
- 모든 내용을 통합하고 실험 실행
- 취약점 극복: 중단 예산 적용
- 요약
- 7장. 카오스 협업
- 실험 정의 공유
- 구성 값 이동
- 구성 속성을 환경 변수로 지정
- 시크릿의 외부화
- 시크릿의 범위 지정
- 기여 모델 지정
- 사람이 읽을 수 있는 카오스 실험 보고서 생성과 공유
- 단일 실험의 실행 보고서 생성
- 다중 실험의 실행 보고서 생성과 공유
- 요약
- 8장. 사용자 정의 카오스 드라이버 생성
- 코드 수정 없이 사용자 정의 드라이버 생성
- HTTP 호출로 조사 항목과 동작 구현
- 프로세스 호출을 통한 조사 항목과 동작 구현
- 파이썬으로 자신만의 사용자 정의 카오스 드라이버 생성
- 카오스 툴킷 확장 프로젝트용 신규 파이썬 모듈 생성
- 조사 항목 추가
- 요약
- 3부. 카오스 공학 운영
- 9장. 카오스와 운영
- 실험 ‘제어’
- 컨트롤 활성화
- 실험에서 인라인으로 컨트롤 활성화
- 전역으로 컨트롤 활성화
- 요약
- 10장. 카오스 공학의 관찰 가능성 구현
- 카오스 실험에 로깅 추가
- 중앙 집중식 카오스 로깅 수행
- 카오스 실험 추적
- OpenTracing 소개
- OpenTracing 컨트롤 적용
- 요약
- 11장. 카오스 실험 자동화에서 사람의 개입
- 컨트롤을 위한 신규 카오스 툴킷 확장 생성
- 사람과 상호작용하는 (매우) 간단한 컨트롤 추가
- 실험 활동 건너뛰기 또는 실행
- 요약
- 12장. 지속적인 카오스
- 지속적인 카오스란 무엇인가?
- cron을 사용해 지속적인 카오스 계획
- 카오스 테스트 실행을 위한 스크립트 생성
- cron에 카오스 테스트 스크립트 추가
- 젠킨스로 지속적인 카오스 계획
- 젠킨스 복사본 가져오기
- 젠킨스 빌드에 카오스 테스트 추가
- 빌드 트리거를 사용해 젠킨스에서 카오스 테스트 계획
- 요약
- 부록A. 카오스 툴킷 참조
- 부록B. 카오스 툴킷 커뮤니티 플레이그라운드