2022년 5월 18일 수요일

Service Mesh 기반 Architecture 의 필요성 과 구성시 Tool 기반 관리 방법

하나의 시스템에 대해 각각의 기능을 여러 작은 서비스로 구성하는 Microservice Architecture 는 전체 서비스에 영향을 미치지 않고 서비스들을 독립적으로 개발 및 배포할 수 있을 뿐만 아니라 서비스 별로 리소스를 유연하게 운영 할 수 있어 클라우드, 컨테이너 환경에 잘 어울리는 아키텍처로 관심을 받고 있다. 1

우리가 일상에서 쉽게 접할 수 있는 Microservice Architecture의 예를 들면 인터넷 쇼핑몰인 아마존과 비디오 스트리밍 서비스 넷플릭스를 볼 수 있다. 아래 그림은 회원가입, 구독 관리, 신규 시리즈, 추천 아이템, 카테고리별 아이템 등 수백, 수천 개의 개별 서비스로 구성되어 있으며 API를 통해 서비스 간의 통신을 수행하는 모습을 도식화 한 모습이다. 접속자 수가 폭등할 때 접속자를 관리하는 서비스에 대해 리소스 확장을 수행하거나, 추천 아이템 서비스에 장애로 인한 업데이트가 필요하더라도 전체 시스템이 모두 중단되거나 하지 않는 것을 경험할 수 있다.

2

하지만 이러한 Architecture 는 시스템 규모가 커지면 커질 수록 시스템 내 구성 서비스 수가 증가하게 되고 서비스 간 호출, 각 서비스 모니터링, 로그 작성, 장애 발생 가능 지점 관리 등에 대한 복잡도와 부담이 커질 위험이 있다. 예를 들어 특정 서비스 A의 장애가 발생한 줄도 모르고 A 서비스를 필요로 하는 B 서비스, E 서비스가 필요한 응답을 받지 못하고 기약 없이 대기해야 하는 장애전파 현상이 발생하게 되면 어디서 부터 어떻게 조치를 취해야 할까?  이러한 overhead 를 줄이기 위해 나온 Architecture가 바로 Service Mesh 이다. 3

Service Mesh 는 서비스 간 통신을 위해 추가로 구성되는 전용 Infrastructure Layer 로도 표현할 수 있다.

기존의 MSA에서 서비스 간 직접 호출을 통해 상호 작용 했었다면, Service Mesh 는 서비스 간 호출를 전담하는 Proxy 를 구성해서 수행하게 된다. 각 서비스의 Proxy가 해당 서비스의 설정 정보를 중앙 집중형 Control Plane에 전달함으로써 서비스 간 통신을 하게 되는 것이다. 이러한 Proxy는 서비스 내부가 아니라 각 서비스와 함께 실행되기 때문에 이를 ‘Sidecar’ 라고 칭하기도 한다. 4

Service Mesh Architecture는 MSA가 구조적으로 갖는 문제점들을 보완하는 개념이다. Service Mesh를 활용하면 간단하게는 Cloud 에서는 Broadcast, Multicast 등의 Network Traffic 이 지원되지 않아 어려웠던 각 리소스의 Health Check Monitoring 을 수행해서 서비스 장애를 대비할 수 있다. 더 나아가 각 서비스 별 발생되는 다양한 Metric 을 수집하여 이를 기반으로한 Traffic Volume Metric 에 따른 Service Routing Policy 설정 등 Data-driven Operation이 가능해진다. 5

다음 포스팅에서는 Service Mesh Framework 의 한 종류인 Hashicorp 의 Consul 에 대해 살펴보고 기본적인 설치 및 구성 해보는 것에 대해 다룰 예정이다.

  1. Microservices
  2. What is a Service Mesh and Why Should you Care About It
  3. To go or not to go micro: the pros and cons of microservices
  4. What’s a service mesh? And why do I need one?
  5. Real-time Service Configuration으로 Consul을 신주소 서비스에 적용한 사례

    Related Posts

    상향식 기술 구현과 현실의 모방
    시대가 원하는 IT 환경의 모습
    클라우드 환경에서의 데이터베이스 가용성

    1 Response

    Leave a Reply