본문 바로가기
컴퓨터 지식/클라우드 & AWS

[MSA] 마이크로서비스(MSA) 의 다양한 패턴들 🍀 / 1️⃣ - Servcie Registry / Service Discovery 패

by 서상혁 2021. 7. 22.

MSA?

마이크로서비스는 이제는 사실상 어떤 특별한 패러다임이 아니다. 설계를 함에 있어서 가능하다면 최대한 잘게 쪼개서 독립적으로 각각의 기능을 담당하게끔 하는 것이 권장된다. 클라우딩 시스템이 나날이 발전해가고, 서버를 구축하는 데에 비용이 점점 줄어들게 되면서, 잘게잘게 쪼개서 아키텍쳐를 구성하는 것은 예전만큼 코스트가 큰 상황이 아니다.

이 글은 마이크로서비스에서 주로 사용되는 여러 패턴들에 대해 간략하게 정리하기 위해 쓰는 글이므로, MSA가 무엇인지에 대해서는 생략하겠다! 이에 대해서는 구글링을 통해 좋은 레퍼런스들을 쉽게 접할 수 있으니 참고 바란다.
https://wooaoe.tistory.com/57

[MSA] MSA란 무엇인가? 개념 이해하기

MSA가 무엇인지 자세하게 알고싶어 개인적으로 정리하는 포스팅입니다. MSA? MicroService Architecture의 줄임말 👉🏻 마이크로서비스 아키텍처에 대한 정확한 정의는 없다. 하지만 마이크로서비스란

wooaoe.tistory.com


Servcie Registry / Service Discovery 패턴


클라이언트가 백엔드 서버로 요청을 할 때, 분산된 여러 인스턴스 중 적절한 대상을 찾기 위해, 라우팅 기능이 필요하다. MSA 가 도입되면서 클라이언트는 여러 개의 백엔드 마이크로 서비스를 호출하게 됨에 따라, 유동적인 (비 정적인) IP 주소 매핑이 자주 사용된다. 이렇게 최적의 경로를 찾아내는 데에 쓰이는 기능이 바로 Service Discovery 이다.

(전자 : client side, 후자: server side)

만약 서비스 클라이언트쪽에서 바로 레지스트리를 이용해서 목적지 ip를 매핑한다면 client side 이다. 하지만 이렇게 라우팅 정보를 클라이언트가 가지고 있으면, 클라우드 환경에서 동적으로 변경되는 백엔드 유동 IP 정보를 매번 갱신해야 하는 부담이 있다. 따라서 따로 로드밸런싱 혹은 라우팅 역할을 하는 제 3의 프록시 서버를 두고, 이 서버는 서비스 레지스트리를 바탕으로 로드밸런싱 및 ip 매핑을 수행한다. 이런 방식을 sever side 방식이라 한다.


서비스 레지스트리?


서비스 레지스트리는 주로 DNS 레코드에 호스트 명 하나 당 여러개의 IP를 등록하는 방식으로 구현이 된다. 하지만 DNS는 구식의 방법으로, 아파치 주키퍼나, etcd 와 같은 분산 코디네이터 솔루션을 이용하는 방법이 있다. 혹은 넷플릭스 OSS의 유레카, Hashcorp의 Consul 과 같은 솔루션 자체를 이용하는 방법 또한 있다.

참조

- https://bcho.tistory.com/1252
- 책 도메인 주도 설계로 시작하는 마이크로 서비스 개발 (한정헌, 유해식, 최은정, 이주영 저)

728x90

댓글