마이크로서비스 아키텍처 서비스 메쉬란?

마이크로서비스 아키텍처에서 각 서비스는 독립적으로 존재하며, 필요에 따라 서로 통신합니다. 이때 여러 서비스들이 통신해야 하는데, 이때 사용되는 게 서비스 메쉬 기술입니다. 서비스 메쉬는 서비스 간 통신, 장애 복구, 로드 밸런싱 등 네트워크 관련 기능을 제공합니다.

서비스 메쉬란?

서비스 메쉬(Service Mesh)는 마이크로서비스 아키텍처에서 네트워크 기반의 애플리케이션 문제를 해결하기 위한 인프라 계층입니다. 인프라 계층이라는 건 애플리케이션과 하드웨어 사이에서 동작하는 모든 기술과 서비스를 가리키는 넓은 의미입니다. 서비스 메쉬는 애플리케이션 로직에서 분리되어 동작하기 때문에 인프라 계층으로 보면 될 거 같습니다.

 

서비스 메쉬는 서비스 간의 통신, 장애 복구, 로드 밸런싱, 서비스 발견, 보안, 트레이싱 등과 같은 네트워크 통신 관련 기능들을 제공합니다. 때문에 개발자가 네트워크와 관련된 코드를 작성할 필요 없이 서비스 간의 통신을 관리하고 최적화할 수 있도록 돕습니다. 마이크로서비스 아키텍처의 복잡성을 다루는 데 효과적이고 개발자가 비즈니스 로직 구현에 집중할 수 있도록 돕습니다.

 

서비스 메쉬 구조
서비스 메쉬는 일반적으로 데이터 플레인(Data Plane)과 컨트롤 플레인(Control Plane) 두 개의 주요 컴포넌트로 이루어져 있다. 출처=tibco.com

 

예를 들어, 서비스 A가 서비스 B에 데이터를 요청하는 상황에서 서비스 A는 서비스 B의 위치, 데이터를 어떻게 요청해야 하는지, 네트워크 장애가 발생했을 때 어떻게 대처해야 하는지 등을 알아야 합니다. 하지만 서비스 메쉬를 사용하면 이런 세부 사항들을 신경 쓸 필요 없이 서비스 A는 "서비스 B에게 이 데이터를 요청하고 싶다"정도만 알려주면 되는 식입니다.

 

서비스 메쉬 기술들

대표적인 서비스 메쉬 기술들로는 Istio, Linkerd, Consul 등이 있습니다. 모두 오픈 소스 프로젝트이며 널리 사용되고 있습니다. 이러한 도구들은 서비스 간 통신을 추상화하여 개발자가 복잡한 네트워크 문제에 신경 쓰지 않고 비즈니스 로직에 집중할 수 있도록 돕습니다. 오픈 소스 프로젝트로서 많은 개발자들이 기여하며 지속적으로 발전 및 문제 해결을 하고 있습니다.

 

서비스 메쉬 예시

예를 들어, 온라인 쇼핑몰 애플리케이션이 마이크로서비스 아키텍처로 구성됐다고 가정합니다. 사용자 인터페이스, 재고 관리, 결제 처리, 배송 관리 등의 서비스가 통신하며 상호작용합니다.

 

고객이 특정 상품을 구매하려고 할 때 사용자 인터페이스 서비스는 재고 관리 서비스에게 해당 상품의 재고 정보를 요청하고, 결제 처리 서비스에게 결제를 요청하며, 배송 관리 서비스에게 배송을 요청해야 합니다. 이렇게 서비스 간에는 많은 통신이 발생합니다.

 

서비스 메쉬를 사용하면 각 서비스는 서비스 메쉬를 통해 다른 서비스와 통신하게 됩니다. 서비스 메쉬는 요청을 적절한 서비스로 라우팅 하고, 실패한 요청을 재시도하며, 서비스 간의 통신을 보안하고, 통신 성능을 모니터링합니다. 이를 통해 개발자는 서비스 간의 통신 문제에 신경 쓰지 않고 비즈니스 로직에 집중할 수 있게 됩니다.

반응형

댓글

Designed by JB FACTORY