효율적인 통신을 위한 핵심 서비스 디스커버리

KUKJIN LEE's profile picture

KUKJIN LEE4일 전 작성

서비스 디스커버리는 마이크로서비스 아키텍처에서 각 서비스들이 서로를 쉽게 찾고 통신할 수 있도록 지원하는 중요한 개념입니다. 마이크로서비스 환경에서는 여러 서비스가 독립적으로 배포되고 확장되기 때문에, 각 서비스의 위치(IP 주소, 포트 등) 동적으로 변화할 수 있습니다. Spring Cloud는 문제 해결을 위해 서비스 디스커버리 도구를 제공합니다.

 

Eureka: Spring Cloud 서비스 디스커버리 도구

Eureka는 Spring Cloud에서 널리 사용되는 서비스 디스커버리 도구로, 서비스 레지스트리 역할을 합니다. Eureka는 모든 마이크로서비스가 자신의 위치를 등록하고 다른 서비스의 위치를 동적으로 조회할 수 있도록 합니다. 이를 통해 각 서비스는 네트워크의 변화에 유연하게 대응할 수 있으며, 마이크로서비스 간의 통신이 원활하게 이루어질 수 있습니다.

 

Eureka 서버와 클라이언트

Eureka 서버와 Eureka 클라이언트로 구성됩니다. Eureka 서버는 중앙 집중식 레지스트리 역할을 하며, 모든 서비스가 자신의 위치를 이 서버에 등록합니다. 반면 Eureka 클라이언트는 각 마이크로서비스에 내장되어 Eureka 서버와 통신하며, 다른 서비스의 위치를 조회하고 동적으로 호출할 수 있습니다.

  • Eureka 서버: 모든 서비스가 등록되는 중앙 레지스트리

  • Eureka 클라이언트: 각 마이크로서비스에 포함되어, Eureka 서버와 통신하여 다른 서비스의 위치 정보 확인

(Eureka 서버와 연결 된 서버1, 서버2, 서버3이 Eureka 클라이언트 생각하면 됩니다.)

 

서비스 디스커버리 장점

  • 동적 스케일링: 새로운 인스턴스가 추가되거나 제거될 때 자동으로 Eureka 서버에 반영됩니다. 클라우드 환경에서 동적 스케일링에 유리합니다.

  • 탄력성: 서비스의 위치가 변경되더라도 클라이언트는 Eureka 서버를 통해 항상 최신 위치 정보를 얻을 수 있어, 네트워크 변화에 탄력적으로 대응할 수 있습니다.

  • 부하 분산: 여러 인스턴스 중 하나를 선택하여 요청을 보낼 수 있도록 지원함으로써 부하 분산 기능을 제공합니다.

New Tech Posts