본문 바로가기
카테고리 없음

[GKE 사용하기] 서비스 디스커버리(Service Discovery)(2)

by BTC_yljo 2022. 11. 14.

저번 시간에 이어 GKE를 잘 사용하기 위해 쿠버네티스 서비스 디스커버리에 대해 알아보도록 하겠습니다.

서비스 레지스트리

서비스 레지스트리는 각 서비스 인스턴스의 네트워크 위치 정보를 저장하는 데이터베이스로 항상 최신 정보를 유지해야 하며 고가용성이 필요하다. Netflix Eureka는 서비스 인스턴스를 등록하고 조회하는 API를 제공하는데, 각 서비스 인스턴스는 POST 요청으로 자신의 네트워크 위치를 등록하고 30초마다 PUT 요청으로 자신의 정보를 갱신한다. 등록된 서비스 정보는 DELETE 요청이나 타임 아웃으로 삭제된다. 그리고 등록된 서비스 정보는 GET 요청으로 조회 가능하다.

 

서비스 등록

서비스 레지스트리에 정보를 등록하고 해제하는 데에는 서비스 스스로 등록을 관리하는 셀프 등록 패턴(Self Registration Pattern)과 제3의 시스템에서 등록을 관리하는 써드 파티 등록 패턴(3rd Party Registration Pattern)이 있다.

 

셀프 등록 패턴

 

등록과 관리의 주체가 서비스인 방식으로, 각 서비스는 서비스 레지스트리에 자신의 정보를 등록하고 주기적으로 자신이 살아있다는 신호를 전송한다. 만약 이 정보가 일정 시간이 지나도 오지 않는다면 서비스에 문제가 발생한 것으로 보고 등록이 해제되며, 종료될 때에도 등록을 해제한다.

이 방식은 다른 컴포넌트 없이 간단하게 구성할 수 있다는 장점이 있지만, 각 서비스에서 서비스 등록 로직을 구현해야 한다는 단점이 있다.

 

써드 파티 등록 패턴

서비스 등록을 관리하는 서비스 레지스트라(Service Registrar)를 따로 외부에서 서비스 등록을 관리하는 방법이다.  서비스 레지스트라는 각 서비스 인스턴스의 변화를 폴링(polling)이나 이벤트 구독으로 감지해서 서비스 레지스트리에 계속 업데이트한다.

이런 방식의 서비스에서 서비스 등록 및 관리 로직을 분리할 수 있다는 점, 중앙에서 통제가 가능하다는 장점이 있다. 반대로 서비스 레지스트라가 멈추면 안되기 때문에 고가용성 등 더 많은 관리가 필요한 단점이 있다.




[출처]

https://futurecreator.github.io/2018/10/18/service-discovery-in-microservices/

 

마이크로서비스 Microservices (4) 서비스 디스커버리

서비스 디스커버리 REST API 를 이용해서 다른 서비스를 호출한다고 해봅시다. 요청을 보내기 위해서는 서비스 인스턴스가 있는 곳의 네트워크 정보를 알아야 합니다. IP 주소와 포트 정보가 되겠

futurecreator.github.io

https://bcho.tistory.com/1252

 

MSA에서 Service discovery 패턴

MSA에서 Service discovery 패턴의 이해 조대협 (http://bcho.tistory.com) MSA와 같은 분산 환경은 서비스 간의 원격 호출로 구성이 된다. 원격 서비스 호출은 IP 주소와 포트를 이용하는 방식이 되는다. 클라

bcho.tistory.com

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ithink3366&logNo=221368902485

 

[Service Discovery] Service Discovery 란?

MSA 아키텍처에서 왜 Service Discovery를 사용할까? Cloud 환경에서는 Auto-scaling, 업그레이드, ...

blog.naver.com

https://mangchhe.github.io/springcloud/2021/04/07/ServiceDiscoveryConcept/

 

댓글