발표영상 다시보기: https://youtu.be/wF7du63Ld4U
카오스 엔지니어링은 프로덕션 서비스에서 각종 장애 조건을 견딜 수 있는 안정적인 시스템을 구축하기 위해서 분산 시스템을 대상으로 실험하고 배우는 분야입니다. 복잡도가 높은 비즈니스 운영에 필수적인 마이크로서비스를 대상으로 카오스 엔지니어링 도구를 적용해보고, AWS 클라우드, Amazon EKS, Service Mesh 등을 활용해서 마이크로서비스의 안정성을 개선하는 방법을 알아봅니다.
5. • 목표: Amazon.com 시스템 안정성
• 정기적인 테스트 및 훈련 이벤트
• 컴퓨팅 용량 계획 및 준비를 검증
• 필요한 모든 운영 방식에 대한 동작 확인
• 의도적인 장애 주입
• 반복적인 문제 식별 및 해결
• 복원력 개선 효과
Jesse Robbins, “Master of Disaster”
자원봉사 소방관
Chef and Velocity 설립자
GameDay 운영 (2004년~)
6. “Simian Army to keep our cloud safe, secure, and highly available.”
- 2011 Netflix blog
목적별 에이전트 기반:
• 무작위로 서비스 종료
• 성능 저하
• 적합성 점검
• 특정 가용영역 또는 리전 전체를 공격
• Spinnaker (CI/CD)와 통합
Chaos Monkey 도입 (2011년)
7. 카오스 엔지니어링은
프로덕션 서비스에서
각종 장애 조건을 견딜 수 있는
안정적인 시스템을 구축하기 위해서
분산 시스템을 대상으로
실험하고 배우는 분야입니다.
Principles of Chaos Engineering
http://principlesofchaos.org/
8. 카오스 엔지니어링은
목적성 없이 시스템을 파괴하는 것이 아닙니다
카오스 엔지니어링은
통제된 환경에서 의도적으로 구성된 실험을 통해
잠재적인 문제를 선제적으로 발견하는데 도움을 줍니다.
13. 정상상태 란?
• 시스템의 “정상” 동작
• 시스템 내부 속성이 아님 (CPU, memory, etc.)
• 비즈니스 및 고객 경험과 연계된 운영 매트릭스가 정상상태가 될 수 있음
• Amazon : 페이지 로딩 100ms ↑ 주문 수 1% ↓
• Netflix : 초당 시작 횟수, SPS (Starts-per-second), The Pulse of Netflix
15. 만약…?
“Load Balancer가 고장 난다면?”
“Kubernetes 노드 중 하나가 내려간다면?”
“Redis가 느려 진다면?”
”Latency time이 300ms 증가 한다면?”
”Database가 갑자기 정지 한다면?”
장애 이력, 서비스 의존 관계 참조
다양한 역할 담당자들의 의견 수렴
25. 실패 주입 방법
• 리소스 레벨
• Exhausting CPU, memory, and I/O : stress-ng
• Exhausting the disk space on hard drives : dd
• Exhausting application APIs : wrk
• 네트워크 및 의존성 레벨
• Injecting latency, loss and corrupting the network : tc, /etc/hosts, Blackholing
• 애플리케이션, 프로세스, 서비스 레벨
• Killing Java processes, Python processes
• Database failure injection, Failures in the serverless world
• 인프라 레벨
• Randomly stopping an EC2 instance in an availability zone
26. 카오스 엔지니어링 도구
• Chaos Monkey from Netflix (https://netflix.github.io/chaosmonkey/)
• Simian Army
• Chaos Gorilla, Chaos Kong
• Latency Monkey, Doctor Monkey, Conformity Monkey
• Kube Monkey
• Chaos Toolkit, ChaosIQ (https://chaostoolkit.org/)
• Litmus (https://litmuschaos.io/)
• PowerfulSeal (https://github.com/bloomberg/powerfulseal)
• Istio (https://istio.io/)
• Gremlin Inc. (https://www.gremlin.com/)
27. Failure as a service
Easy to use API and UI
타겟 유형
• Hosts, Containers, Kubernetes
공격 유형
• Resource : CPU, Memory, Disk
• State : Process Killer, Shutdown
• Network : Latency, Packet Loss
https://app.gremlin.com/