운영 이슈 테스트

이연중·2021년 2월 8일
0

JAVA

목록 보기
19/20

운영 환경에서 발생하는 문제들을 미리 제한된 환경에서 확인

Chaos Monkey 소개

카오스 엔지니어링 툴

  • 프로덕션 환경, 특히 분산 시스템 환경에서 불확실성을 파악하고 해결 방안을 모색하는 데 사용하는 툴

운영 환경 불확실성의 예

  • 네트워크 지연
  • 서버 장애
  • 디스크 오작동
  • 메모리 누수 등

Chaos Monkey Spring Boot

  • 스프링 부트 어플리케이션에 카오스 멍키를 손쉽게 적용해 볼 수 있는 툴
  • 스프링 부트 어플리케이션을 망가뜨릴 수 있는 툴

Chaos Monkey Spring Boot 주요 개념

공격 대상(Watcher)공격 유형(Assaults)
- @RestController
- @Controller
- @Service
- @Repository
- @Component
- 응답 지연(Latency Assault)
- 예외 발생(Exception Assault)
- 어플리케이션 종료(AppKiller Assault)
- 메모리 누수(Memory Assault)

Chaos Monkey 설치

의존성 추가

<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

카오스 멍키 활성화

  • spring.profiles.active=chaos-monkey

스프링 부트 Actuator 엔드 포인트 활성화

management.endpoint.chaosmonkey.enabled=true
management.endpoints.web.exposure.include=health,info,chaosmonkey

CM4SB 응답 지연

응답 지연 이슈 재현 방법

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 확인

CM4SB 에러 발생

에러 발생 재현 방법

1/3 확률로 에러 발생

http POST localhost:8080/actuator/chaosmonkey/assaults level=3 latencyActive=false exceptionsActive=true exception.type=java.lang.RuntimeException

참고

https://www.inflearn.com/course/the-java-application-test

profile
Always's Archives

0개의 댓글