마이크로서비스 관리/운영 패턴

마이크로서비스 구축 시 발생하는 문제는 주로 시스템을 여러 개의 서비스로 구성하기 때문에 발생하는 문제다. 이를 해결하는데 넷플릭스 OSS가 기여했다. 넷플릭스 OSS는 마이크로서비스를 개발하고 운영하면서 생긴 노하우를 공유한 오픈소스이다. 이는 마이크로서비스 관리와 운영을 지원하는 전형적인 마이크로서비스 패턴으로 자리잡았다.

또한 넷플릭스 OSS를 더 쉽게 쓸 수 있도록 스프링 진영의 피보탈(현 사명: Vmware Tanzu)에서는 스프링 부트 프레임워크에서 잘 돌아갈 수 있도록 넷플릭스 OSS 모듈들을 스프링 프레임워크로 감싸서 스프링 클라우드(Spring Cloud)라는 명칭으로 발표했다. 스프링 부트와 스프링 클라우드를 이용하면 마이크로서비스 애플리케이션의 운영 환경을 쉽게 구축할 수 있다.

스프링 클라우드: 스프링부트 + 넷플릭스 OSS

msa pattern1

다음 예시로 스프링 클라우드 서비스의 연계 흐름을 살펴본다.

  1. 모든 마이크로서비스는 인프라에 종속되지 않도록 DB, 파일 등에 저장된 환경 설정 정보를 형상관리 시스템에 연계된 ‘config’ 서비스에서 가져와 설정 정보를 주입한 후 클라우드 인프라의 개별 인스턴스로 등록된다.
  2. 로딩과 동시에 서비스 레지스트리에 자신의 서비스명과 클라우드 인프라부터 할당받은 물리 주소를 매핑해 등록한다.
  3. 클라이언트가 API 게이트웨이를 통해 마이크로 서비스에 접근하고 API 게이트웨이는 적절한 라우팅 및 부하 관리를 위한 로드밸런싱을 수행한다.
  4. API 게이트웨이에서 클라이언트가 마이크로서비스에 접근하기 위한 주소를 알기 위해 ‘서비스 레지스트리’ 검색을 통해 서비스의 위치를 가져온다.
  5. 동시에 API 게이트는 클라이언트가 각 서비스에 접근할 수 있는 권한이 있는지 ‘권한 서비스’와 연계해 인증/인가 처리를 수행한다.
  6. 이러한 모든 마이크로서비스 간의 호출 흐름은 ‘모니터링 서비스’와 ‘추적 서비스’에 의해 모니터링되고 추적된다.

이러한 처리 흐름은 마이크로서비스 시스템을 개발하며 발생한 문제를 해결하기 위한 MSA 주요 아키텍처 패턴으로 자리 잡았기 때문에 스프링 클라우드 외에 각 클라우드 제공 업체의 플랫폼에도 유사한 형태의 서비스로 각기 존재한다.

출처

도메인 주도 설계로 시작하는 마이크로서비스 개발 - YES24