Netflix에서 제공한 OSS이다. Client Side Load Balancer 이다.
우리가 일반적으로 사용하는 LoadBalancer는 서버사이드 로드밸런싱을 처리하는 L4 Switch와 같은 하드웨어 장비였습니다. 하지만 MSA에서는 이런 장비보다는 소프트웨어적으로 구현된 클라이언트사이드 로드밸런싱을 주로 이용합니다. 이들의 차이를 한번 알아보도록 하겠습니다.

server-side load balancing
위는 일반적인 L4 switch 기반의 로드 밸런서입니다. Client는 L4의 주소만 알고 있으면되며 모든 로드 밸런싱은 L4에서 처리해 주고 있습니다.
이런 하드웨어 기반의 서버 사이드 로드 밸런서의 단점은 기본적으로 별도의 스위치 장비가 필요하기 때문에 상대적으로 비용이 많이 소모되게 되며 유연성도 떨어지게 됩니다. 또한 서버 목록의 추가는 수동으로 보통 이루어집니다. 이러한 단점 때문에 클라이이언트 사이드 로드밸런서가 MSA에서는 주로 사용됩니다. 클라이언트 사이드 로드밸런서를 사용하게 되면 아래와 같이 아키텍처가 형성됩니다.

client-side load balancing
Spring Cloud에서는 위와 같은 클라이언트 사이드 로드밸런서로 Ribbon을 이용하고 있습니다. Ribbon에 대해서 알아보도록 하겠습니다.
Ribbon의 구성요소로는 Rule, Ping, ServerList가 있습니다. 각각은 아래와 같습니다.
그리고 개인적으로 Ribbon의 가장 중요하다고 생각하는 기능중 하나는 Retry입니다. Retry는 말 그대로 만약 server에게 응답을 받지 못하였을 경우 동일한 서버로 재시도 하거나 다른 서버로 재시도하는 기능입니다.