서킷브레이커 구현 Dependencies

CosmoNumb·2024년 8월 3일

Spring

목록 보기
9/24

서킷브레이커의 실습 중, 추가하는 디펜던시의 목록입니다. 페일백 메서드 등을 테스트 하기 위해 추가하는 것으로 보이는데, 기존의 spring boot 프로젝트에서 추가하지 않았던 디펜던시가 있어, 각각의 기능을 정리해 두려고 합니다.


1. Spring Boot Actuator (OPS)

역할:
Spring Boot Actuator는 애플리케이션의 모니터링과 관리를 지원하는 내장 (또는 사용자 정의) 엔드포인트를 제공합니다. 애플리케이션의 상태, 메트릭, 세션 등을 모니터링하고 관리할 수 있습니다.

주요 기능:

  • 애플리케이션의 상태 체크 (Health endpoints).
  • 다양한 메트릭 (예: CPU 사용량, 메모리 사용량) 제공.
  • 환경 정보 노출.
  • HTTP 트래픽 및 데이터베이스 통계 제공.

2. Prometheus (OBSERVABILITY)

역할:
Prometheus는 인메모리 시계열 데이터베이스로, Micrometer 메트릭을 Prometheus 포맷으로 노출시킵니다. Prometheus는 간단한 내장 UI, 사용자 정의 쿼리 언어, 수학 연산 기능을 제공하여 메트릭 데이터를 효과적으로 수집하고 분석할 수 있습니다.

주요 기능:

  • 애플리케이션 메트릭 수집 및 저장.
  • Prometheus 쿼리 언어 (PromQL) 사용.
  • 알람 설정 및 모니터링.
  • 시계열 데이터 시각화.

3. Resilience4j

역할:
Resilience4j는 서킷 브레이커 패턴을 포함하여 다양한 회복 탄력성 패턴(Circuit Breaker, Rate Limiter, Retry, Bulkhead 등)을 구현하기 위한 라이브러리입니다.

이미지의 starter에서는 resilience4j 디펜던시를 추가하지 않았습니다. 스프링 이니셜라이저(스타터)에서 추가하면 org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j가 추가됩니다. 이는 추상화 계층을 통해 Resilience4j를 사용하는데 우리는 직접 resilience4j를 사용하기 위해 build.gradleio.github.resilience4j:resilience4j-spring-boot3:2.2.0를 추가하겠습니다.

build.gradle의 dependencies에 다음을 추가합니다.

implementation 'io.github.resilience4j:resilience4j-spring-boot3:2.2.0'

서킷 브레이커와의 관계

서킷 브레이커 패턴은 마이크로서비스 아키텍처에서 장애 복구 메커니즘으로 사용됩니다. 위의 디펜던시들은 서킷 브레이커 패턴을 구현하고 모니터링하는 데 도움이 되는 도구와 라이브러리를 제공합니다. 예를 들어:

  • Lombok: 서킷 브레이커 로직을 작성할 때 코드를 간결하게 유지하는 데 도움.
  • Spring Web: RESTful 엔드포인트를 제공하여 서킷 브레이커 상태를 노출.
  • Spring Boot Actuator: 서킷 브레이커 상태와 메트릭을 모니터링하는 엔드포인트 제공.
  • Prometheus: 서킷 브레이커 메트릭을 수집하고 시각화하여 장애를 모니터링하고 분석.
  • Resilience4j: 서킷 브레이커 패턴을 포함하여 다양한 회복 탄력성 패턴(Circuit Breaker, Rate Limiter, Retry, Bulkhead 등)을 구현하기 위한 라이브러리.

- 기존에 사용하던 의존성

Lombok (DEVELOPER TOOLS)

역할:
Lombok은 Java 애노테이션 라이브러리로, 보일러플레이트 코드를 줄이는 데 도움이 됩니다. 예를 들어, Getter, Setter, Constructor, Equals, HashCode 등의 메서드를 자동으로 생성해줍니다.

주요 애노테이션:

  • @Getter / @Setter: 자동으로 getter와 setter 메서드를 생성.
  • @ToString: 자동으로 toString 메서드를 생성.
  • @EqualsAndHashCode: 자동으로 equals와 hashCode 메서드를 생성.
  • @NoArgsConstructor / @AllArgsConstructor: 자동으로 생성자를 생성.

Spring Web (WEB)

역할:
Spring Web은 웹 애플리케이션, 특히 RESTful 애플리케이션을 개발하기 위해 사용됩니다. Spring MVC (Model-View-Controller) 프레임워크를 기반으로 하고 있으며, Apache Tomcat을 기본 임베디드 컨테이너로 사용합니다.

주요 기능:

  • RESTful 웹 서비스 개발.
  • 웹 요청 및 응답 처리.
  • 컨트롤러와 라우팅 설정.
  • HTML, JSON, XML 등의 포맷으로 데이터 제공.

0개의 댓글