Top

카오스 공학 [견고한 시스템을 만드는 카오스 공학의 이론과 실제]

  • 원서명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장 참고).
위와 같은 학습 경로를 통해 이 책은 지금 바로 전체 조직에서 카오스 공학을 안전하고 신중하게 도입하고자 필요한 모든 것을 여러분과 동료에게 제공하는 것을 목표로 한다.

저자/역자 소개

지은이의 말

카오스 공학의 과학적 원칙을 다루는 실무자를 위한 책이다. 카오스 공학은 전반적인 복원 공학의 접근 방식 중 하나로, 시스템 중단 같은 위기를 초래하기 전에 시스템 취약점의 증거를 찾아내는 특정한 목적을 제공한다. 독자 여러분과 동료뿐만 아니라 전체 사회공학 시스템이 신뢰성에 대한 위협을 연습하고 대응하는 방법에 관심 있다면 카오스 공학이 적합하다.

지은이 소개

러스 마일스(Russ Miles)

무료 오픈소스 카오스 툴킷의 공동 창립자이자 ChaosIQ 프로젝트를 담당하는 회사의 최고 경영자다. 지난 3년 동안 스타트업과 기업을 도와서 취약점을 발견하고 학습하는 활동을 통해 그들이 가진 시스템의 복원력을 향상시켜왔다.

옮긴이의 말

언제 어디서 튀어나올지 모르는 시스템 에러 때문에 걱정이 많았을 것이다. 뛰어난 센스로 복잡한 에러를 해결하더라도 더 큰 산이 연이어 버티고 있다. 클라우드 전환의 소용돌이 속에서 점점 작아지고 분리되는 소프트웨어 모듈, 그에 반해 시스템의 취약점은 더욱 깊이 숨어들고 그에 따른 영향력은 커져만 간다. 또한 이러한 문제는 시스템에 국한되지 않는다. 소프트웨어에서 시작해 플랫폼, 인프라, 프로세스, 나아가 사람과 조직에 이르기까지 취약점의 종류와 내용도 매우 다양해지고 있다.
그렇다면 과학과 응용 공학이 결합된 체계적인 접근 방식으로 이 모든 취약점을 완벽하게 해결할 수 없을까? 그리고 가능하다면 취약점을 미리 파악하고, 조치를 신속하게 취하고, 철저하게 검증하는 방식으로 실패의 위험을 사전에 차단할 수 없을까? 이미 눈치챘겠지만 100% 완벽한 사전 준비란 결코 존재하지 않는다. 다만 완벽에 가까이 다가가려는 노력이 있을 뿐이다. 카오스 공학은 그러한 노력 중 단연 최고라 할 수 있다.
꾸준한 연습과 실전 경험이 최고를 만드는 것처럼 카오스 공학은 카오스 실험을 체계적으로 계획하고, 이를 반복적으로 운영환경의 시스템에 적용하는 과정에서 취약점을 찾아 개선함으로써 최고의 시스템과 엔지니어를 만들어낸다. 이 책은 카오스 공학이 왜 필요한지 구체적으로 설명하며, 카오스 실험을 어떻게 계획하고, 자동화를 통해 반복하는 방법과 효과 등을 상세히 기술한다. 이론에 이어 카오스 실험을 정의하고 수행하는 예제와 코드 설명으로 곧바로 실전에 나설 수 있도록 돕는다. 따라서 최고의 카오스 엔지니어가 되기 위한 입문서로 안성맞춤이다.
사실 카오스 공학은 국내 소프트웨어 환경에서 도입이 쉽지 않다. 기능 요건의 우선순위에 밀려 소프트웨어 품질 개선 및 코드/시스템의 유지 보수 활동이 등한시되고 있기 때문이다. 소프트웨어 외주 제작 문화와 소프트웨어 공학 성숙도의 저하는 이런 문제를 더욱 키워왔다. 하지만 소프트웨어 세상의 패러다임이 급격히 변화하고 있다. 클라우드와 빅데이터, 인공지능으로 대표되는 디지털 트랜스포메이션에 의해 기존 방식은 점점 존재 가치를 잃어가고 있다. 누구나 클라우드 전환을 통해 인공지능 기술을 접목하는 지금 이 순간부터 카오스 공학은 적정 기술을 넘어 필수 기술로 자리매김할 수 있을 것이다.

옮긴이 소개

권병섭

지난 2005년, 개발자로 소프트웨어 세상에 첫 발을 내딛은 이후 프로덕트 매니저와 컨설턴트를 거쳐 클라우드 아키텍트로 디지털 세상에 참여하고 있다. 15년 동안 코드 수준의 디버깅과 문제 해결, 소프트웨어 제품의 전체 수명주기 관리, 디지털 솔루션의 컨설팅과 딜리버리를 경험하며 소프트웨어 신뢰성 및 카오스 공학에 깊은 관심을 갖게 됐다.

목차

목차
  • 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. 카오스 툴킷 커뮤니티 플레이그라운드

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안