Circuit Breaker

sojw·2024년 8월 21일
0

What is Circuit Breaker?

서킷 브레이커(Circuit Breaker) 설정은 시스템의 안정성을 높이기 위해 장애를 감지하고 시스템의 과부하를 방지하는 패턴입니다.

서킷 브레이커 설정 항목

  1. registerHealthIndicator

    • 설명: 서킷 브레이커의 상태를 애플리케이션의 헬스 체크에 포함할지 여부를 설정합니다.
    • : true 또는 false
    • 설명: true로 설정하면 애플리케이션의 헬스 체크에서 서킷 브레이커의 상태를 모니터링할 수 있습니다. 이는 운영 중에 서킷 브레이커의 상태를 실시간으로 확인할 수 있게 해줍니다.
  2. failureRateThreshold

    • 설명: 서킷 브레이커가 열리기 위한 실패율의 임계값을 설정합니다. 실패율은 실패한 호출의 비율입니다.
    • : 0에서 100 사이의 백분율
    • 설명: 이 값 이상으로 실패율이 증가하면 서킷 브레이커가 열리게 됩니다. 예를 들어, 50으로 설정하면 실패율이 50%를 초과할 때 서킷 브레이커가 열립니다.
  3. waitDurationInOpenState

    • 설명: 서킷 브레이커가 열린 상태로 유지되는 시간입니다. 이 시간이 경과한 후에 서킷 브레이커가 반열림 상태로 전환됩니다.
    • : 밀리초 단위
    • 설명: 서킷 브레이커가 열린 상태로 유지될 시간(예: 10000 밀리초 = 10초)입니다. 이 시간이 지나야 서킷 브레이커가 반열림 상태로 돌아갑니다.
  4. permittedNumberOfCallsInHalfOpenState

    • 설명: 서킷 브레이커가 반열림 상태일 때 허용되는 호출 수를 설정합니다.
    • : 정수
    • 설명: 반열림 상태에서 허용되는 호출 수입니다. 이 호출 수만큼 요청이 성공하면 서킷 브레이커가 닫히게 됩니다. 예를 들어, 10으로 설정하면 10개의 호출이 성공해야 서킷 브레이커가 닫힙니다.
  5. slidingWindowSize

    • 설명: 서킷 브레이커가 실패율을 계산하기 위해 사용하는 슬라이딩 윈도우의 크기입니다.
    • : 정수
    • 설명: 슬라이딩 윈도우의 크기를 설정하여 실패율을 계산합니다. 예를 들어, 100으로 설정하면 최근 100개의 호출을 기준으로 실패율을 계산합니다.

서킷 브레이커 동작 방식

  1. Closed State (닫힘 상태)

    • 설명: 서킷 브레이커가 정상적으로 동작 중인 상태입니다. 모든 호출이 통과하며, 실패율이 임계값 이하일 때 유지됩니다.
    • 동작: 호출이 실패하면 실패율이 증가하고, 실패율이 임계값을 초과하면 서킷 브레이커가 열립니다.
  2. Open State (열림 상태)

    • 설명: 서킷 브레이커가 열려서 모든 호출을 차단하는 상태입니다. 호출이 실패할 경우 서킷 브레이커가 열리고, 설정된 시간 동안 열린 상태를 유지합니다.
    • 동작: 서킷 브레이커가 열린 상태에서는 모든 호출이 차단되고, 실패율을 모니터링하지 않습니다. 설정된 대기 시간이 지나면 반열림 상태로 전환됩니다.
  3. Half-Open State (반열림 상태)

    • 설명: 서킷 브레이커가 열린 후 설정된 시간이 경과한 후, 일부 호출을 허용하여 시스템의 복구 여부를 평가하는 상태입니다.
    • 동작: 허용된 호출 수만큼 호출이 성공하면 서킷 브레이커가 닫히고 정상 상태로 돌아갑니다. 실패하면 서킷 브레이커가 다시 열리게 됩니다.

예제

spring:
  cloud:
    circuitbreaker:
      resilience4j:
        instances:
          slackService:
            circuitBreaker:
              registerHealthIndicator: true
              failureRateThreshold: 50
              waitDurationInOpenState: 10000
              permittedNumberOfCallsInHalfOpenState: 10
              slidingWindowSize: 100

위 예제에서:

  • failureRateThreshold: 50은 실패율이 50%를 초과하면 서킷 브레이커가 열리게 설정합니다.
  • waitDurationInOpenState: 10000은 서킷 브레이커가 열린 상태로 10초 동안 유지되도록 설정합니다.
  • permittedNumberOfCallsInHalfOpenState: 10은 반열림 상태에서 10개의 호출이 성공해야 서킷 브레이커가 닫히도록 설정합니다.
  • slidingWindowSize: 100은 최근 100개의 호출을 기준으로 실패율을 계산하도록 설정합니다.

이러한 설정을 통해 시스템의 장애를 감지하고 회복할 수 있도록 하여 시스템의 안정성을 유지할 수 있습니다.

0개의 댓글