인프런의 "더 자바, 애플리케이션을 테스트하는 다양한 방법”을 보고 정리한 것임

1. 소개

  • 카오스 엔지니어링(http://channy.creation.net/blog/1173) 툴

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

    • 네트워크 지연
    • 서버 장애
    • 디스크 오작동
    • 메모리 누수
    • 등등
  • Chaos Monkey 스프링 부트 (https://codecentric.github.io/chaos-monkey-spring-boot/latest/)

    • 스프링 부트 애플리케이션에 카오스 멍키를 손쉽게 적용해 볼 수 있는 툴
    • 즉, 스프링 부트 애플리케이션을 망가트릴 수 있는 툴
  • 카오스 멍키 스프링 부트 주요 개념

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

2. 설치 (CM4SB)

의존성 추가

    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'de.codecentric:chaos-monkey-spring-boot:2.5.4'
  • de.codecentric:chaos-monkey-spring-boot
  • Spring-boot-starter-actuator
    • 스프링 부트 운영 툴로, 런타임 중에 카오스 멍키 설정을 변경할 수 있다.
    • 그밖에도 헬스 체크, 로그 레벨 변경, 매트릭스 데이터 조회 등 다양한 운영 툴로 사용 가능.
    • /actuator

application.properties에 추가

# profile이 chaos-monkey로 되어 있어야 테스트 가능
spring.profiles.active=chaos-monkey

# chaosmonkey endpoints 활성화
management.endpoint.chaosmonkey.enabled=true
management.endpoints.web.exposure.include=health,info,chaosmonkey

3. 테스트

테스트를 위한 사용 툴

  • HTTPies
    • 카오스 멍키 설정 변경
  • JMeter
    • 카오스 멍키 설정 변경 후 Assault 확인

응답 지연 테스트

  • https://codecentric.github.io/chaos-monkey-spring-boot/latest/#_latency_assault
  • Repository Watcher 활성화
    • chaos.monkey.watcher.repository=true
  • 카오스 멍키 활성화
    • http post localhost:8080/actuator/chaosmonkey/enable
  • 카오스 멍키 활성화 확인
    • http localhost:8080/actuator/chaosmonkey/status
  • 카오스 멍키 와처 확인
    • http localhost:8080/actuator/chaosmonkey/watchers
  • 카오스 멍키 지연 공격 설정
    • http POST localhost:8080/actuator/chaosmonkey/assaults level=3 latencyRangeStart=2000 latencyRangeEnd=5000 latencyActive=true
  • 테스트
    • JMeter 확인

에러 테스트

  • https://codecentric.github.io/chaos-monkey-spring-boot/latest/#_exception_assault
  • 카오스 멍키 활성화
    • http post localhost:8080/actuator/chaosmonkey/enable
  • 카오스 멍키 활성화 확인
    • http localhost:8080/actuator/chaosmonkey/status
  • 카오스 멍키 와처 확인
    • http localhost:8080/actuator/chaosmonkey/watchers
  • 카오스 멍키 지연 공격 설정
    • http POST localhost:8080/actuator/chaosmonkey/assaults level=3 latencyActive=false exceptionsActive=true exception.type=java.lang.RuntimeException
profile
고우고우~

0개의 댓글