[스프링] Hystrix와 생성자 기반 설정

스프링은 다양한 라이브러리와 기능을 제공하여 분산 시스템의 안정성과 견고성을 높일 수 있습니다. 그 중 하나가 “스프링 히스트릭스”입니다. 히스트릭스는 분산 시스템에서의 장애와 지연을 처리하기 위한 라이브러리로, 이를 통해 서비스 간의 결합을 덜어주고 시스템 전반의 안정성을 높일 수 있습니다.

이번 글에서는 스프링 부트를 사용하여 히스트릭스를 생성자 기반으로 설정하는 방법에 대해 알아보겠습니다.

1. Hystrix 의존성 추가

먼저, pom.xml 파일에 다음과 같이 히스트릭스 의존성을 추가합니다.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

2. Hystrix 설정 생성자 추가

다음으로, 히스트릭스 커맨드를 생성자 기반으로 설정합니다. 이를 위해 @HystrixCommand 어노테이션을 생성자에 추가하고, 기본 및 실패 시 동작을 정의합니다.

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

public class MyService {
    
    private final RestTemplate restTemplate;
    
    public MyService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }
    
    @HystrixCommand(fallbackMethod = "fallbackMethod")
    public String myRemoteServiceCall() {
        // 원격 서비스 호출 로직
    }
    
    public String fallbackMethod() {
        // 실패 시 대체 동작 로직
    }
}

3. Hystrix 설정 확인

이제 application.properties 파일에 다음 설정을 추가하여 히스트릭스가 적절히 동작하는지 확인합니다.

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000

위와 같이 설정함으로써 히스트릭스를 적용한 서비스의 타임아웃을 3000밀리초로 정의할 수 있습니다.

마치며

이렇게 스프링 부트와 히스트릭스를 생성자 기반으로 설정하는 방법에 대해 알아보았습니다. 히스트릭스를 사용하면 원격 서비스 호출 시 발생하는 장애에 대처할 수 있는 강력한 도구를 얻을 수 있습니다.

더 많은 내용을 학습하고 싶다면 공식 스프링 문서를 참고해보세요!