Load Balancing

Jisu_M·2024년 11월 28일

로드 밸런싱 (Load Balancing)이란?

로드 밸런싱은 네트워크 트래픽이나 작업 부하를 여러 서버 또는 리소스에 고르게 분배하는 기술로, 이를 통해 시스템의 성능, 가용성, 확장성을 향상시키고, 특정 서버에 부하가 집중되는 것을 방지할 수 있다.

그렇다면 로드 밸런싱을 구현할 수 있는 도구 중 Feign Client와 Ribbon은 무엇일까?

Feign Client 란?

Feign Client는 Spring Cloud에서 제공하는 선언형 HTTP 클라이언트로, 서비스 간 통신을 간단하고 효율적으로 처리할 수 있도록 도와준다.

주요 특징

  • 인터페이스와 어노테이션 기반 통신
    REST API 호출을 위해 복잡한 코드를 작성할 필요 없이 인터페이스와 어노테이션만으로 설정할 수 있다.

  • 서비스 이름으로 요청 가능
    Feign Client는 서비스 이름으로 요청을 보낼 수 있어, 간결하고 직관적인 코드 작성을 지원한다.

사용 예시

@FeignClient(name = "product-service")
public interface ProductServiceClient {

    @GetMapping("/product/{id}")
    ProductResponse getProductById(@PathVariable("id") Long id);
}

위 코드에서 product-service라는 이름으로 서비스를 호출하며, 로드 밸런싱 설정에 따라 적절한 서버 인스턴스로 요청이 전송된다.

Ribbon 이란?

Ribbon은 Spring Cloud에서 제공하는 클라이언트 사이드 로드 밸런싱 라이브러리다.
클라이언트 요청을 여러 서버 인스턴스에 분산시키며, 다양한 알고리즘을 지원한다.

주요 특징

  • 다양한 로드 밸런싱 알고리즘
    라운드 로빈(Round Robin): 순차적으로 서버에 요청 분배
    최소 연결(Minimum Connections): 현재 연결 수가 가장 적은 서버에 요청

  • 서버 목록 관리
    Ribbon은 Eureka와 같은 서비스 디스커버리 도구와 통합하여 동적으로 서버 목록을 업데이트할 수 있다.

로드 밸런싱은 분산 시스템의 핵심 요소로, Spring Cloud에서는 Feign Client와 Ribbon을 통해 이를 간편하게 구현할 수 있다.

특히 Ribbon은 다양한 알고리즘을 제공하며, 동적으로 서버 목록을 관리하는 데 유용하지만, 현재는 더 가벼운 Spring Cloud LoadBalancer로 전환되고 있다는 점도 염두에 두어야 할 것 같다.

profile
개발 여정을 기록하며 성장하는 매일

0개의 댓글