시간나는대로 틈틈히 정리 합시다~~!!!

[마이크로서비스 디자인 패턴] 서비스 검색 (Service discovery) 본문

IT

[마이크로서비스 디자인 패턴] 서비스 검색 (Service discovery)

열심히 정리하자!! 2021. 3. 26. 01:14
반응형

1. 문제점

클라이언트가 마이크로서비스와 그 인스턴스를 찾을 수 있어야 한다.
일반적으로 컨테이너 등에서 실행되는 마이크로서비스 인스턴스는 시작하면서 동적 IP 를 할당 받는다.
그러다 보니 클라이언트에서는 마이크로서비스가 노출하는 HTTP 기반의 REST API를 호출하기 쉽지 않다.

 

 

2. 해결책

현재 사용 가능한 마이크로서비스와 그 인스턴스를 추적하는 새 컴포넌트(서비스검색 서비스)를 시스템 환경에 추가한다.
- 마이크로서비스와 마이크로서비스 인스턴스를 자동으로 등록 및 해지한다.
- 클라이언트는 마이크로서비스의 논리 엔드포인트에 요청을 보낼 수 있어야 한다.
- 요청은 사용 가능한 마이크로서비스 인스턴스 중 하나로 라우팅된다.
- 마이크로서비스에 대한 요청은 가용 인스턴스로 로드밸런싱 되어야 한다.
- 요청을 라우팅 하지 않기 위해 상태가 비정상인 인스턴스를 감지할 수 있어야 한다.

 

3. 구현 참고

- 클라이언트 측 라우팅 : 클라이언트는 서비스 검색 서비스와의 통신을 지원하는 라이브러리를 사용해 
                    요청을 보낼 만한 인스턴스를 찾는다.
- 서버 측 라우팅 : 
    > 서비스 검색 서비스의 인프라는 모든 요청을 전달하는 리버스 프록시(reverse proxy)를 노출한다.
    > 리버스 프록시는 클라이언트를 대신해 적절한 마이크로서비스 인스턴스로 요청을 전달한다.

 

4. 구현된 오픈소스 도구

- 스프링 클라우드 : 넷플릭스 유레카(Eureka), 넷플릭스 리본(Ribbon)
- 쿠버네티스 : kube-proxy, 서비스(Service) 리소스

반응형
Comments