ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 운영 이슈 테스트. Chaos Monkey
    BackEnd/Tests 2022. 2. 19. 09:20
    반응형

      Chaos Monkey란 Netflix에서 만든 카오스 엔지니어링 툴입니다. 카오스 엔지니어링 툴은 운영 환경, 특히 분산 시스템 환경에서 네트워크 지연, 서버 장애, 디스크 오작동, 메모리 누수 등의 불확실성을 파악하고 해결 방안을 모색하는데 사용합니다. 

     

    Chaos Monkey for Spring Boot

      Spring Boot 애플리케이션에 카오스 멍키를 적용해 볼 수 있는 툴입니다. 즉, Spring Boot 애플리케이션을 망가트릴 수 있는 툴입니다.

     

    Chaos Monkey for Spring Boot 주요 개념

      AOP를 이용해 공격 대상이 호출된 경우, 대상 Watcher 활성화 여부를 판단하고 활성화된 Assaults들 중 랜덤하게 하나씩 골라 공격합니다.

    공격 대상 (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>

      spring-boot-starter-actuator란 Spring Boot 운영 툴로 런타임 중에 카오스 멍키 설정을 변경할 수 있습니다. 그밖에도 헬스 체크, 로그 레벨 변경, 매트릭스 데이터 조회 등 다양한 운영 툴로 사용이 가능합니다. (/actuator)

     

    Chaos Monkey 활성화

      application.properties

    management.endpoint.chaosmonkey.enabled=true
    management.endpoint.chaosmonkeyjmx.enabled=true
    
    # include all endpoints
    management.endpoints.web.exposure.include=*
    
    # include specific endpoints
    management.endpoints.web.exposure.include=health,info,chaosmonkey

      application.yml

    management:
      endpoint:
        chaosmonkey:
          enabled: true
        chaosmonkeyjmx:
          enabled: true
    
      endpoints:
        web:
          exposure:
            # include all endpoints
            include: "*"
            # include specific endpoints
            include:
              - health
              - info
              - chaosmonkey

     

      Chaos Monkey for Spring Boot는 JMX or HTTP를 통해 노출되는 일부 내장 엔드포인트를 제공합니다. 이를 통해 런타임에 구성을 변경할 수 있습니다. 설정 옵션들은 https://codecentric.github.io/chaos-monkey-spring-boot/latest/#_http_endpoint를 참고하시면 됩니다.

    # 카오스 멍키 활성화
    http post localhost:8080/actuator/chaosmonkey/enable
    
    # 카오스 멍키 활성화 확인
    http localhost:8080/actuator/chaosmonkey/status
    
    # 카오스 멍키 와처 확인
    http localhost:8080/actuator/chaosmonkey/watchers
    
    # 지연 공격 설정 (level=3: 호출 3번에 1번씩 지연 발생)
    http POST localhost:8080/actuator/chaosmonkey/assaults level=3 latencyRangeStart=2000 latencyRangeEnd=5000 latencyActive=true
    
    # 에러 발생
    http POST localhost:8080/actuator/chaosmonkey/assaults level=3 latencyActive=false exceptionsActive=true exception.type=java.lang.RuntimeException

     

    [참고정보]

    Chaos Monkey for Spring Boot Reference Guide

    반응형

    'BackEnd > Tests' 카테고리의 다른 글

    기타 테스트. ETC  (0) 2022.02.19
    아키텍처 테스트. ArchUnit  (0) 2022.02.19
    성능 테스트. nGrinder  (0) 2022.02.15
    성능 테스트. JMeter  (0) 2022.02.14

    댓글

Designed by Tistory.