Chaos Monkey

Noah·2022년 8월 9일
1

Application Test Study

목록 보기
5/6

Chaos Monkey

  • 운영 이슈 테스트

    • 실제 로컬에서 발생하는 이슈보다는 운영 환경에서 가끔 발생할 수 있는 이슈들을 확인할 수 있는 테스트
    • 이를 카오스 엔지니어링 툴 이라고 한다
  • Chaos Monkey for Spring Boot

    • 스프링 부트 애플리케이션에 카오스 멍키를 적용하는 툴
    • 스프링 부트 애플리케이션에 문제를 일으켜서 망가트려서 운영 환경에서 발생할 수 있는 이슈들을 확인한다
  • Chaos Monkey의 관찰 대상 -> 공격 대상

    • 스프링에 등록 되어있는 빈들
      • @RestController
      • @Controller
      • @Service
      • @Repository
      • @Component
  • Choas Monkey의 공격

    • 위에서 보았던 관찰 대상들(스프링에 등록된 빈)의 public 메소드를 사용할 때 아래와 같은 상황이 발생하도록 공격한다
      • 응답 지연 (Latency Assault)
        • 응답에 대해 지연을 발생시킨 상황을 연출한다
        • 응답 지연이 발생했을 때 다른 방법을 사용하게 함으로써 (새로운 방법의 코드 작성) 애플리케이션을 더욱 견고하게 만들 수 있다
      • 예외 발생 (Exception Assault)
        • 예외를 발생시켜서 해당 예외 발생시 다른 로직을 수행할 수 있도록 만들 수 있다
      • 애플리케이션 종료 (AppKiller Assault)
      • 메모리 누수 (Memory Assault)

Chaos Monkey 설치

  • pom.xml에 의존성 추가

    <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에 chaos monkey 추가
    • spring-boot-starter-actuator
      • spring boot의 기능중 하나로 실제 운영에 필요한 기능을 제공하는 모듈
      • 런타임 중에 카오스 멍키 설정 변경 가능
      • 기능
        • 헬스 체크
        • 로그 레벨 변경
        • 매트릭스 데이터 조회
  • 카오스 멍키 활성화

    • 방법 1. application.properties에 작성

      spring.profiles.active=chaos-monkey
    • 방법 2. Run/Debug Configurations에서 profile 설정

      (그림 넣기)

  • Spring Boot Actuator 엔드 포인트 활성화

    • Actuator를 통해 Chaos Monkey를 사용하기 위해 설정이 필요함

      management.endpoint.chaosmonkey.enabled=true
      management.endpoints.web.exposure.include=health,info,chaosmonkey
  • 활성화 시키는거는 런타임 시 안됨

    • 빈을 만들때 proxy로 만들어야하기때문에 watcher 키는 설정은 properties에서 하기

Chaos Monkey 실습

지난 포스팅에서 JMeter를 가지고 Spring Boot Application에 부하 테스트를 진행해보았다

이번 실습에서는 두가지의 결과를 비교할 것이다

  1. 단순 JMeter 부하 테스트
  2. Chaos Monkey Exception 발생 설정 적용후 부하 테스트
  1. 단순 JMeter 부하 테스트

    • Thread Group 20 / Loop 20 설정

    • 결과 1

    • 결과 2

  1. Chaos Monkey Exception 발생 설정 적용후 부하 테스트

    • level=5 -> 5번의 요청마다 Exception 발생 하도록 설정

    • exception.type = RuntimeException -> 발생하는 Exception은 RuntimeException

    • 실행 순서

      1. 카오스 몽키 의존성 추가 및 실행

      2. 카오스 몽키 활성화

      3. 카오스 몽키 활성화 확인

      4. 카오스 몽키 왓처 확인 (repostiory를 와처에 추가)

      5. 결과

        • 5번 호출 시 마다 RuntimeException 발생 확인

        • 모든 요청에 대해서 Error 발생 비율 확인

이렇게 JMeter와 Chaos Monkey를 활용해서 Application Test를 진행해보았습니다. 두 기능을 이용해서 앞으로 더욱 견고한 애플리케이션을 만들도록 해보겠습니다.

profile
BackEnd 개발자가 되기 위해 공부중입니다!

0개의 댓글