[연결성 및 조합 패턴] 서비스 레지스트리/디스커버리 패턴

hi·2023년 1월 29일
0

CNA 패턴

목록 보기
7/12

서비스 레지스트리/디스커버리 패턴이란 무엇입니까?

마이크로서비스 환경에선 프론트엔드 클라이언트가 여러 개의 백엔드 마이크로서비스를 호출하고, 스케일 아웃된 인스턴스에 부하를 분산시킬 필요가 있습니다. 따라서 각 마이크로서비스는 서비스 레지스트리에 자신의 메타데이터를 등록하고 (서비스 레지스트리), 레지스트리에서 각 마이크로서비스에 대한 메타데이터들을 검색할 수 있어야 합니다. (서비스 디스커버리) 이를 서비스 레지스트리/디스커버리 패턴이라고 합니다. 이를 위한 솔루션으론 Netflix Eureka, 쿠버네티스 DNS, 쿠버네티스 서비스 등이 있습니다.

서비스 레지스트리/디스커버리 패턴의 예시 (Netflix OSS)

라우팅 기능을 수행하기 위한 줄 (Zuul)과 로드 밸런싱 기능을 수행하기 위핸 리본 (Ribbon)이 있다고 가정합시다.

라우터는 최적 경로를 탐색하기 위해 마이크로서비스의 명칭에 해당하는 IP주소를 알아야 합니다. 그러나 이러한 라우팅 정보를 클라이언트가 가지고 있을 시 클라우드 환경에서 동적으로 변경되는 백엔드의 유동 IP 정보를 매번 전송받고 변경해야 합니다. 따라서 제 3의 공간에서 백엔드 마이크로서비스의 명칭과 유동적인 IP 정보를 매핑해서 보관할 저장소가 필요합니다. 넷플릭스 OSS의 경우 유레카 (Eureka)가 해당 기능을 담당하고 이러한 패턴을 서비스 레지스트리 패턴이라고 합니다.

  • 각 마이크로서비스의 인스턴스는 로딩될 때 이름, IP, Port 정보 등을 레지스트리 서비스에 등록
  • 클라이언트가 해당 서비스명을 호출(추상화 패턴)할 때 라우터는 레지스트리 서비스를 검색해 해당 서비스의 이름, 매핑된 IP 정보 등을 확인한 후 호출함
  • 레지스트리 서비스는 모든 마이크로서비스 인스턴스의 주소를 알고 있는 서비스 매핑 저장소로, 모든 마이크로서비스는 처음 기동될 때 자신의 위치 정보를 레지스트리에 등록하고 종료될 때 레지스트리에서 삭제함.

0개의 댓글