[스프링] 스프링 클라우드 게이트웨이와 서킷 브레이커

이 블로그 포스트에서는 스프링 클라우드 게이트웨이(Spring Cloud Gateway)서킷 브레이커(Circuit Breaker) 의 개념과 사용법에 대해 알아보겠습니다.

스프링 클라우드 게이트웨이

스프링 클라우드 게이트웨이는 로드 밸런싱, 라우팅, 인증 및 인가, 그리고 필터를 지원하는 서버사이드 애플리케이션입니다. 주요 목적은 마이크로서비스 기반의 애플리케이션에서 API 요청을 처리하는 것으로, Zuul과 비슷한 역할을 수행하지만 동기식 및 비동기식 라우팅과 필터링이 가능하다는 장점을 갖고 있습니다.

스프링 클라우드 게이트웨이 설정 예제

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
        .route("api_route", r -> r.path("/api/**")
            .filters(f -> f.rewritePath("/api/(?<segment>.*)", "/${segment}"))
            .uri("http://localhost:8080"))
        .build();
}

서킷 브레이커

서킷 브레이커는 마이크로서비스 아키텍처에서의 장애 처리 메커니즘으로, 일부 서비스의 장애로 전체 시스템이 마비되는 것을 방지합니다. 서킷 브레이커는 주어진 시간 동안 실패율이 일정 수준 이상이 되면 회로를 닫아 해당 서비스로의 요청을 차단하고 대체 로직이 실행되도록 합니다.

스프링 클라우드 서킷 브레이커 설정 예제

@Bean
public CircuitBreakerFactory customCircuitBreakerFactory() {
    return new CustomCircuitBreakerFactory();
}

결론

스프링 클라우드 게이트웨이와 서킷 브레이커는 마이크로서비스 아키텍처에서 중요한 역할을 수행합니다. 게이트웨이를 통해 API 요청을 라우팅하고 필터링하는 것과 동시에 서킷 브레이커를 통해 장애 상황을 관리하는 것은 안정적인 서비스 운영에 필수적입니다.

더 많은 정보를 원하시면 스프링 클라우드 공식 문서를 참고하시기 바랍니다.