SlideShare a Scribd company logo
1 of 23
카오스
엔지니어링
Chaos
Engineering
@daebum-lee
우선 카오스 엔지니어링이란?
( 현실의 각종 장애를 견딜 수 있게 하는 서비스 또는 시스템을 만들어서 )
Production환경의 시스템에 대한
신뢰성을 확보하기 위한 테스트를 하는
방법론 또는 분야입니다.
https://techcrunch.com/2018/02/04/the-rise-of-chaos-engineering/
어떻게 해야 신뢰할 수 있는 소프트웨어를
개발/운영 할 수 있을까? (프로덕션환경에서)
https://techcrunch.com/2018/02/04/the-rise-of-chaos-engineering/
획기적으로 서비스의 품질과 신뢰성을
향상시킬수 있다???
의문1. 카오스 엔지니어링은 어떻게
서비스의 품질과 신뢰성을 획기적으로
향상시킬 수 있다는 것일까?
의문 2. 시스템의 안정성과 신뢰성을 확보하
기 위한 유닛 테스트나 통합테스트와
같은 방법들과는 어떻게 다른것인가?
http://principlesofchaos.org/
Principles Of Chaos Engineering
- Build a Hypothesis around Steady State Behavior
- Vary Real-world Events
- Run Experiments in Production
- Automate Experiments to Run Continuously
- Minimize Blast Radius
http://principlesofchaos.org/
CHAOS IN PRACTICE
1. Start by defining ‘steady state’ as some measurable output of a system that indicates normal behavior.
2. Hypothesize that this steady state will continue in both the control group and the experimental group.
3. Introduce variables that reflect real world events like servers that crash, hard drives that malfunction, network
connections that are severed, etc.
4. Try to disprove the hypothesis by looking for a difference in steady state between the control group and the
experimental group.
Chaos Test은 분산 시스템의 불확실성을 구체적으로 해결하기
위해 시스템의 약점을 밝히기 위한 실험을 손쉽게 해주는 방법
론입니다. 이러한 실험은 네 단계로 진행됩니다.
http://principlesofchaos.org/
CHAOS IN PRACTICE
1. Start by defining ‘steady state’ as some measurable output
of a system that indicates normal behavior.
1. 시스템의 정상적인 상태를 정의하기
- 시스템의 측정가능한 값을 이용해 정상적인 동작을 정의한다.
ex1) CPU load, memory utilization, network I/O 등
http://principlesofchaos.org/
CHAOS IN PRACTICE
2. Hypothesize that this steady state will continue in both the
control group and the experimental group.
2. 어떠한 일이 있어도 시험 그룹과 통제 그룹 시스템의
정상적인 상태가 지속될 것이라고 가설을 세운다.
ex) 서버40대로 운영중인 서비스에서 10대가 동시에 고장이 났
다.
그래도 고객은 (주요)서비스가 이용이 가능하다. http://principlesofchaos.org/
CHAOS IN PRACTICE
3. Introduce variables that reflect real world events like
servers that crash, hard drives that malfunction, network
connections that are severed, etc.
3. 현실에서 일어나는 변수(문제)들을 반영해서 실험 그룹에 도입
한다.
- 디비 서버 고장
- DDoS 공격
http://principlesofchaos.org/
CHAOS IN PRACTICE
4. Try to disprove the hypothesis by looking for a difference
in steady state between the control group and the
experimental group.
4. 실험그룹과 통제그룹을 비교해서 가설을 검증한다.
- 시스템의 정상적인 상태를 방해하는 것이 어려워질수록
시스템의 신뢰성은 높아진다.
- 취약점이 발견되었을 경우에는 개선한다.
http://principlesofchaos.org/
CHAOS IN PRACTICE
1.시스템의 정상적인 상태를 정의하기
2.어떠한 일이 있어도 시험 그룹과 통제 그룹 시스템의
정상적인 상태가 지속될 것이라고 가설을 세운다.
3.현실에서 일어나는 변수(문제)들을 반영해서 실험 그룹에 도입
한다.
4.실험그룹과 통제그룹을 비교해서 가설을 검증한다.
http://principlesofchaos.org/
의문1. 카오스 엔지니어링은 어떻게
서비스의 품질과 신뢰성을 획기적으로
향상시킬 수 있다는 것일까?
현실에서 일어나는 문제점까지
반영해서 테스트와 개선을 지속한다.
의문 2. 시스템의 안정성과 신뢰성을 확보하
기 위한 유닛 테스트나 통합테스트와
같은 방법들과는 어떻게 다른것인가?
현실에서 일어나는 문제점까지
반영해서 테스트와 개선을 지속한다.
Chaos Monkey - AWS 인스턴스를 랜덤하게 종료 시킴.
Chaos Kong - AWS Zone을 랜덤하게 종료 시킴.
Chaos Gorilla - AWS 리전을 랜덤하게 종료 시킴.
감사합니다!
Reference
・http://principlesofchaos.org/
・https://arxiv.org/ftp/arxiv/papers/1702/1702.05843.pdf
See Also
Awesome Chaos Engineering
https://github.com/dastergon/awesome-chaos-engineering

More Related Content

Similar to Chaos engineering

SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...JungwooKim41
 
Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴 YoungSu Son
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance TuningJi-Woong Choi
 
Openstack Usecase(2018)
Openstack Usecase(2018)Openstack Usecase(2018)
Openstack Usecase(2018)Gasida Seo
 
웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우IMQA
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
Fault Tolerance 소프트웨어 패턴
Fault Tolerance 소프트웨어 패턴Fault Tolerance 소프트웨어 패턴
Fault Tolerance 소프트웨어 패턴IMQA
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱NAVER D2
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크InGuen Hwang
 
Information Assurance - Why (and How) We Should Move from Security to Dependa...
Information Assurance - Why (and How) We Should Move from Security to Dependa...Information Assurance - Why (and How) We Should Move from Security to Dependa...
Information Assurance - Why (and How) We Should Move from Security to Dependa...Seungjoo Kim
 
테스트 계획할 때에 필요한 질문들 (The inquiry method for test planning)
테스트 계획할 때에 필요한 질문들 (The inquiry method for test planning)테스트 계획할 때에 필요한 질문들 (The inquiry method for test planning)
테스트 계획할 때에 필요한 질문들 (The inquiry method for test planning)Joseph Yonggoo Yeo
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewTaewan Kim
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Jaehoon Oh
 
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트:: AWS Summit Online Kor...
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트::  AWS Summit Online Kor...카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트::  AWS Summit Online Kor...
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트:: AWS Summit Online Kor...Amazon Web Services Korea
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) YoungSu Son
 
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Jongwon Lee
 
ParameterizedTest 와 ContextCaching.pptx
ParameterizedTest 와 ContextCaching.pptxParameterizedTest 와 ContextCaching.pptx
ParameterizedTest 와 ContextCaching.pptxjunu6
 
실용주의 아키텍트
실용주의 아키텍트실용주의 아키텍트
실용주의 아키텍트Haeil Yi
 
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화InfraEngineer
 

Similar to Chaos engineering (20)

SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
 
Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
Openstack Usecase(2018)
Openstack Usecase(2018)Openstack Usecase(2018)
Openstack Usecase(2018)
 
웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
Fault Tolerance 소프트웨어 패턴
Fault Tolerance 소프트웨어 패턴Fault Tolerance 소프트웨어 패턴
Fault Tolerance 소프트웨어 패턴
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크
 
Information Assurance - Why (and How) We Should Move from Security to Dependa...
Information Assurance - Why (and How) We Should Move from Security to Dependa...Information Assurance - Why (and How) We Should Move from Security to Dependa...
Information Assurance - Why (and How) We Should Move from Security to Dependa...
 
테스트 계획할 때에 필요한 질문들 (The inquiry method for test planning)
테스트 계획할 때에 필요한 질문들 (The inquiry method for test planning)테스트 계획할 때에 필요한 질문들 (The inquiry method for test planning)
테스트 계획할 때에 필요한 질문들 (The inquiry method for test planning)
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트:: AWS Summit Online Kor...
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트::  AWS Summit Online Kor...카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트::  AWS Summit Online Kor...
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트:: AWS Summit Online Kor...
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
 
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015
 
ParameterizedTest 와 ContextCaching.pptx
ParameterizedTest 와 ContextCaching.pptxParameterizedTest 와 ContextCaching.pptx
ParameterizedTest 와 ContextCaching.pptx
 
실용주의 아키텍트
실용주의 아키텍트실용주의 아키텍트
실용주의 아키텍트
 
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
 

Chaos engineering

  • 4. ( 현실의 각종 장애를 견딜 수 있게 하는 서비스 또는 시스템을 만들어서 ) Production환경의 시스템에 대한 신뢰성을 확보하기 위한 테스트를 하는 방법론 또는 분야입니다.
  • 5. https://techcrunch.com/2018/02/04/the-rise-of-chaos-engineering/ 어떻게 해야 신뢰할 수 있는 소프트웨어를 개발/운영 할 수 있을까? (프로덕션환경에서)
  • 7. 의문1. 카오스 엔지니어링은 어떻게 서비스의 품질과 신뢰성을 획기적으로 향상시킬 수 있다는 것일까?
  • 8. 의문 2. 시스템의 안정성과 신뢰성을 확보하 기 위한 유닛 테스트나 통합테스트와 같은 방법들과는 어떻게 다른것인가?
  • 10. Principles Of Chaos Engineering - Build a Hypothesis around Steady State Behavior - Vary Real-world Events - Run Experiments in Production - Automate Experiments to Run Continuously - Minimize Blast Radius http://principlesofchaos.org/
  • 11. CHAOS IN PRACTICE 1. Start by defining ‘steady state’ as some measurable output of a system that indicates normal behavior. 2. Hypothesize that this steady state will continue in both the control group and the experimental group. 3. Introduce variables that reflect real world events like servers that crash, hard drives that malfunction, network connections that are severed, etc. 4. Try to disprove the hypothesis by looking for a difference in steady state between the control group and the experimental group. Chaos Test은 분산 시스템의 불확실성을 구체적으로 해결하기 위해 시스템의 약점을 밝히기 위한 실험을 손쉽게 해주는 방법 론입니다. 이러한 실험은 네 단계로 진행됩니다. http://principlesofchaos.org/
  • 12. CHAOS IN PRACTICE 1. Start by defining ‘steady state’ as some measurable output of a system that indicates normal behavior. 1. 시스템의 정상적인 상태를 정의하기 - 시스템의 측정가능한 값을 이용해 정상적인 동작을 정의한다. ex1) CPU load, memory utilization, network I/O 등 http://principlesofchaos.org/
  • 13. CHAOS IN PRACTICE 2. Hypothesize that this steady state will continue in both the control group and the experimental group. 2. 어떠한 일이 있어도 시험 그룹과 통제 그룹 시스템의 정상적인 상태가 지속될 것이라고 가설을 세운다. ex) 서버40대로 운영중인 서비스에서 10대가 동시에 고장이 났 다. 그래도 고객은 (주요)서비스가 이용이 가능하다. http://principlesofchaos.org/
  • 14. CHAOS IN PRACTICE 3. Introduce variables that reflect real world events like servers that crash, hard drives that malfunction, network connections that are severed, etc. 3. 현실에서 일어나는 변수(문제)들을 반영해서 실험 그룹에 도입 한다. - 디비 서버 고장 - DDoS 공격 http://principlesofchaos.org/
  • 15. CHAOS IN PRACTICE 4. Try to disprove the hypothesis by looking for a difference in steady state between the control group and the experimental group. 4. 실험그룹과 통제그룹을 비교해서 가설을 검증한다. - 시스템의 정상적인 상태를 방해하는 것이 어려워질수록 시스템의 신뢰성은 높아진다. - 취약점이 발견되었을 경우에는 개선한다. http://principlesofchaos.org/
  • 16. CHAOS IN PRACTICE 1.시스템의 정상적인 상태를 정의하기 2.어떠한 일이 있어도 시험 그룹과 통제 그룹 시스템의 정상적인 상태가 지속될 것이라고 가설을 세운다. 3.현실에서 일어나는 변수(문제)들을 반영해서 실험 그룹에 도입 한다. 4.실험그룹과 통제그룹을 비교해서 가설을 검증한다. http://principlesofchaos.org/
  • 17. 의문1. 카오스 엔지니어링은 어떻게 서비스의 품질과 신뢰성을 획기적으로 향상시킬 수 있다는 것일까?
  • 18. 현실에서 일어나는 문제점까지 반영해서 테스트와 개선을 지속한다.
  • 19. 의문 2. 시스템의 안정성과 신뢰성을 확보하 기 위한 유닛 테스트나 통합테스트와 같은 방법들과는 어떻게 다른것인가?
  • 20. 현실에서 일어나는 문제점까지 반영해서 테스트와 개선을 지속한다. Chaos Monkey - AWS 인스턴스를 랜덤하게 종료 시킴. Chaos Kong - AWS Zone을 랜덤하게 종료 시킴. Chaos Gorilla - AWS 리전을 랜덤하게 종료 시킴.
  • 23. See Also Awesome Chaos Engineering https://github.com/dastergon/awesome-chaos-engineering

Editor's Notes

  1. 현재 시스템에서는 서비스 운영의 안정성에 대해 페일오버, 셀프힐링 등의 방법을 통하고 있으나 데이터 센터가 지진으로 인해 무너져버렸다 라던가 등의 현실세계의 문제점까지는 반영이 되어 있지 않다 복잡하게 결합되어 있는 시스템의 경우 일부 서비스의 트러블이 전체서비스의 문제가 될수도있다.
  2. 현실세계에 일어나는 트러블에 대한 대응도 생각하고 대응하는게 카오스 엔지니어링
  3. 현재 시스템에서는 서비스 운영의 안정성에 대해 페일오버, 셀프힐링 등의 방법을 통하고 있으나 데이터 센터가 지진으로 인해 무너져버렸다 라던가 등의 현실세계의 문제점까지는 반영이 되어 있지 않다 복잡하게 결합되어 있는 시스템의 경우 일부 서비스의 트러블이 전체서비스의 문제가 될수도있다.
  4. 현재 시스템에서는 서비스 운영의 안정성에 대해 페일오버, 셀프힐링 등의 방법을 통하고 있으나 데이터 센터가 지진으로 인해 무너져버렸다 라던가 등의 현실세계의 문제점까지는 반영이 되어 있지 않다 복잡하게 결합되어 있는 시스템의 경우 일부 서비스의 트러블이 전체서비스의 문제가 될수도있다.
  5. 현실세계에 일어나는 트러블에 대한 대응도 생각하고 대응하는게 카오스 엔지니어링
  6. 현재 시스템에서는 서비스 운영의 안정성에 대해 페일오버, 셀프힐링 등의 방법을 통하고 있으나 데이터 센터가 지진으로 인해 무너져버렸다 라던가 등의 현실세계의 문제점까지는 반영이 되어 있지 않다 복잡하게 결합되어 있는 시스템의 경우 일부 서비스의 트러블이 전체서비스의 문제가 될수도있다.