서비스 메쉬란?
서비스 메쉬는 애플리케이션 내 서비스 간에 일관적인 데이터를 공유하며 서로 통신할 수 있도록 지원하는 애플리케이션 서비스입니다. 이는 서비스 간 커뮤니케이션을 관리하는 것이 아니라 애플리케이션에 구축된 인프라 계층을 말합니다. 이 인프라 계층은 애플리케이션 간에 어떻게 상호작용을 하는지 파악하고 이를 더 최적화하는 방법을 찾을 뿐 아니라 추가적인 애플리케이션 확장에 따른 다운타임을 방지하기도 하는 등 마이크로서비스를 관리하는 데 사용됩니다. 서비스 메쉬는 기업이 새로운 마이크로서비스를 쉽게 설정하고 배포하며, API로 관리할 수 있도록 돕습니다.
MSA(Micro Service Architecture)에서는 마이크로서비스가 몇 천개까지 운영 및 관리되기도 하기때문에 이러한 서비스들의 분산으로 인한 서비스 간 통신이 복잡해지게 됩니다. 현재 운영중인 마이크로서비스를 관리하고 각각의 통신 방식을 제어하기도 하며, 서비스 간 로깅, 모니터링, 트래픽 라우팅 등의 관리적인 기능도 필요하게 됩니다. 이러한 필요에 인프라적인 접근 방식으로 등장한 개념이 바로 서비스 메쉬입니다.
마이크로 서비스와 서비스 메쉬
마이크로서비스란 한 애플리케이션 내에서 독립적인 서비스들이 API를 통해 통신하는 애플리케이션 아키텍처의 하나입니다. 마이크로 서비스 아키텍처에서는 개별 마이크로서비스등리 독립적으로 구축 및 운영 되며, 장애가 발생해도 개별적으로 응대가 가능하기때문에 애플리케이션의 전체적인 중단으로 이어지지 않습니다. 개발을 함에 있어서도 서비스단위로 변경 및 관리가 가능하기때문에 애플리케이션 전체를 재배포할 필요가 없어집니다. 마이크로서비스의 핵심은 서비스 간의 커뮤니케이션이 각 서비스마다 코딩된 로직에 의해 작동된다는 것입니다. 이러한 아키텍처에서 서비스 메쉬가 없다면, 서비스 간의 커뮤니케이션이 복잡해질수록 이를 통제 및 관리하는 것이 어려워지며, 장애 발생 시 커뮤니케이션 로직이 서비스 안에 있기때문에 문제를 진단하는데 어려워집니다.
작동방식
서비스 메쉬는 애플리케이션이 아닌 인프라 계층에 라우팅과 보안 등의 기능이 삽입된 서비스입니다. 서비스 메쉬에서는 외부에서 요청이 들어오면 마이크로서비스 간의 프록시를 통해 라우팅됩니다. 개별 서비스마다의 프록시가 서비스와 함께 실행되므로 사이드카 프록시라고 불리기도 합니다.
사이드카와 사이드카 프록시
사이드카는 애플리케이션 컨테이너와 독립적으로 작동되는 별도의 컨테이너를 말합니다. 애플리케이션 컨테이너와 독립적으로 작동하기 때문에 사이드카 장애 시 애플리케이션이 영향을 받지 않고, 사이드카 변경/제거 시에도 애플리케이션을 수정할 필요가 없습니다. 사이드카 프록시는 마이크로서비스 옆에 각각 위치하며 요청을 받으면 다른 프록시로 요청을 라우팅합니다. 이러한 사이드카 프록시들이 모여서 그물망 네트워크, 즉 메시 네트워크의 형태를 만들게 됩니다.
서비스 메쉬의 장단점
서비스 메쉬는 애플리케이션의 외부에 구성되기 때문에 재사용이 가능하며, 기능을 공통화하여 제공함으로써 개발의 효율성을 높일 수 있습니다. 또한 프록시 간의 네트워크 형성으로 인프라의 복잡성이 줄어들고 분산된 기능들을 중앙에서 관리할 수 있게 됩니다. 단점으로는 서비스 간의 통신에 네으퉈크 레이어가 추가되기 때문에 이로 인해 시간이 지연되기도 하고 프록시 자체에 대한 관리 이슈가 발생하기도 합니다.
Istio
Istio는 대표적인 오픈소스 서비스 메쉬 플랫폼입니다. 이는 마이크로서비스 간 데이터를 공유할 수 있도록 하는 기반을 제공하며, 모든 로깅 플랫폼, 텔레메트리로 통합하도록 API를 지원하고 있습니다. Istio는 서비스 메쉬와 마이크로서비스에 대한 운영 제어 기능을 제공하며, 이를 통해 서비스 개발 및 배포의 복잡성이 줄어들고 개발자들의 업무부담을 줄일 수 있게 됩니다.
서비스 메쉬에 대한 전망
서비스 메쉬는 개발자들에게 이전보다 더 효율적으로 서비스를 개발, 배포할 수 있는 환경을 제공하고 있습니다. 또한 온프레미스 외에 클라우드 플랫폼과 쿠버네티스 컨테이너, 가상 머신 서비스 등 다양한 환경에서 지원되는 추세입니다. 이는 개발자들에게 더욱더 다양한 환경에서 서비스 메쉬를 활용하도록 할 것이며, 이는 최근의 애플리케이션 개발추세에서 핵심적인 기능으로 더욱 발전되고 확산될 것이라고 봅니다.
'IT트렌드개념정리' 카테고리의 다른 글
데이터 패브릭(Data Fabric) (0) | 2025.02.22 |
---|---|
애자일 방법론(Agile Software Development) (0) | 2025.02.22 |
생성형 AI(generative AI)란? 생성형 AI 종류, 장단점 및 사례 (1) | 2025.02.22 |
데이터 과학(Data Science) (0) | 2025.02.22 |
빅데이터 (0) | 2025.02.22 |