운영 환경에서 발생하는 문제들을 미리 제한된 환경에서 확인
카오스 엔지니어링 툴
운영 환경 불확실성의 예
Chaos Monkey Spring Boot
Chaos Monkey Spring Boot 주요 개념
공격 대상(Watcher) | 공격 유형(Assaults) |
---|---|
- @RestController - @Controller - @Service - @Repository - @Component | - 응답 지연(Latency Assault) - 예외 발생(Exception Assault) - 어플리케이션 종료(AppKiller Assault) - 메모리 누수(Memory Assault) |
의존성 추가
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>chaos-monkey-spring-boot</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Chaos-monkey-spring-boot
Spring-boot-starter-actuator
카오스 멍키 활성화
스프링 부트 Actuator 엔드 포인트 활성화
management.endpoint.chaosmonkey.enabled=true
management.endpoints.web.exposure.include=health,info,chaosmonkey
응답 지연 이슈 재현 방법
1. Repository Watcher 활성화
공격 대상 빈은 런타임 중에 활성화 시킬 수 없음
chaos.monkey.watcher.repository=true
(add to application.properties)
2. 카오스 멍키 활성화
http post localhost:8080/actuator/chaosmonkey/enable
3. 카오스 멍키 활성화 확인
http localhost:8080/actuator/chaosmonkey/status
4. 카오스 멍키 와쳐 확인
http localhost:8080/actuator/chaosmonkey/watchers
5.카오스 멍키 지연 공격 설정
http POST localhost:8080/actuator/chaosmonkey/assaults level=3 latencyRangeStart=2000 latencyRangeEnd=5000 latencyActive=true
6. 테스트
JMeter 확인
에러 발생 재현 방법
1/3 확률로 에러 발생
http POST localhost:8080/actuator/chaosmonkey/assaults level=3 latencyActive=false exceptionsActive=true exception.type=java.lang.RuntimeException