기타

[Service Discovery]

파커초 2024. 2. 1. 21:56

개요

MSA 와 같은 분산 환경에서 트래픽의 흐름은 서비스 간의 원격 호출로 이루어짐 이 때 서비스 호출은 IP 주소와 포트를 이용하는 방식이 됨.

온프레미스가 아닌 클라우드 환경에서 서비스가 동적으로 생성되던가 업데이트로 인한 변화 또 오토 스케일링 등으로 인해 생성 될 경우 IP 주소가 달라 질 수 있음.

  • 서비스 클라이언트가 서비스를 호출할 때 서비스의 위치를 알아낼 수 있는 기능이 필요하게 됨
    • 이를 서비스 디스커버리라 함

종류

Client Side Discovery

 

서비스 클라이언트가 서비스 registry 에서 서비스의 위치를 찾아서 요청을 보냄

Server Side Discovery

 

호출이 되는 서비스 앞에 일종의 프록시 서버를 넣는 방식 프록시 서버가 Service registry 를 통해 등록된 서비스의 위치를 리턴하고 이를 기반으로 라우팅함

Service Registry

  • DNS 레코드에 존재하는 호스트명에 여러개의 IP 를 등록하는 방식으로 구현 가능
    • 하지만 DNS는 레코드 삭제시 업데이트 되는 시간이 소요됨
  • ZooKeeper나 etcd 와 같은 서비스를 이용할 수 있음