서비스 레지스터리 &&디스커버리

Rudy·2024년 11월 1일

🚀 들어가며

MSA 사이드 프로젝트를 진행하면서 Eureka 사용하면서
레지스터리,디스커버리가 무엇인지 알아보겠습니다

1️⃣ 서비스 레지스터리 (Service Registry)

서비스 레지스터리는 각 서비스의 위치 정보를 유지하고 관리하는 중앙 데이터베이스입니다. 각 마이크로서비스는 네트워크를 통해 서로 통신하는데 서비스 인스턴스들은 동적으로 생성되고 사라지기 때문에 이들의 위치를 추적하는 시스템이 필요합니다.
서비스 레지스터리는 이러한 서비스의 주소 (IP 및 포트)를 중앙화하여 저장하고 이를 통해 다른 서비스가 접근할 수 있도록 합니다.

  • 동작 방식: 서비스 인스턴스가 생성될 때 서비스 레지스터리에 자신의 정보를 등록하고, 종료될 때는 이를 제거합니다.
  • 목적: 서비스의 가용성과 위치 정보를 관리하여 다른 서비스가 언제든지 올바른 주소로 접근할 수 있도록 합니다.
  • 대표적인 구현: Spring Cloud의 Eureka, Consul, Zookeeper 등이 있습니다.

2️⃣ 서비스 디스커버리 (Service Discovery)

서비스 디스커버리는 레지스터리에 등록된 서비스를 찾는 방법으로, 서비스가 자신의 위치나 주소를 동적으로 알지 못하는 환경에서 필요합니다. 서비스 디스커버리 기능을 통해 클라이언트는 직접 레지스터리로부터 위치 정보를 조회하거나, 로드 밸런서 또는 프록시 서버를 통해 필요한 서비스를 찾을 수 있습니다.

  • 동작 방식: 클라이언트 또는 서비스가 서비스 레지스터리에 요청하여 특정 서비스의 위치를 확인한 후, 이를 통해 호출할 수 있는 주소를 얻습니다.

종류

  • 클라이언트 사이드 디스커버리: 클라이언트가 직접 서비스 레지스터리와 통신해 위치를 확인한 후, 요청을 보냅니다.
  • 서버 사이드 디스커버리: 프록시 서버나 API Gateway가 중간에서 요청을 수신하고 서비스 레지스터리를 통해 위치를 확인한 후, 적절한 서비스로 요청을 전달합니다.
구분서비스 레지스터리서비스 디스커버리
역할서비스 위치 정보 관리위치 정보 조회 및 서비스 호출
작동 방식서비스가 자신을 등록하고 제거클라이언트 또는 서버가 위치를 확인하여 요청
종류중앙 집중형 데이터베이스 (Eureka, Consul 등)클라이언트/서버 사이드 디스커버리
예시Eureka, Consul, ZookeeperRibbon (클라이언트), API Gateway (서버)

🧀 정리

서비스 레지스터리가 없으면 서비스 위치를 관리하기 어렵고, 디스커버리가 없으면 동적 주소를 추적하여 서비스에 연결할 수 없습니다. 두 개념이 협력하여 안정적이고 동적으로 연결되는 마이크로서비스 환경을 지원합니다.

profile
주니어 개발자

0개의 댓글