본문 바로가기

삽질

Service Mesh

0. 개요

여느 신기술과 같이 Service Mesh는 여러 문제를 해결하기 위해 등장했습니다.

그 여러 문제 중 하나의 문제를 예시로 들어보겠습니다.

회원 기능을 담당하는 A서버와 게시판 기능을 담당하는 B서버가 서로 통신한다고 가정하겠습니다.

그러면 각 서버에는 통신을 하는 구체적인 방법을 구현해야 했습니다.

 

오토바이에 사이드카(Sidecar)를 붙이듯,

게시판과 댓글과 같은 핵심적 비지니스 로직과 통신과 같은 부가적인 부분을 분리하면 개발자는 비지니스 로직에 집중할 수 있습니다.

 

1. Service Mesh

MSA가 각광 받으면서 개발자 입장에서는 관리해야할 서버가 기존 Monolithic 방식에 비해 확연히 증가했습니다.

증가하는 서버가 내부에서 서로 통신을 하는 것이 마치 그물망(Mesh)처럼 엮이게 되었고,

복잡한 내부 통신을 관리할 수 있도록 하는 것이 Service Mesh입니다.

출처 : https://www.redhat.com/ko/topics/microservices/what-is-a-service-mesh

 

2. Service Mesh의 주요 기능

2.1 서비스 검색 (Service Discovery)

서버가 상호작용을 할 때, 통신에 적합한 인스턴스를 찾아야 합니다. Service Mesh는 준비된 인스턴스 목록을 유지하며 DNS 쿼리에 대한 인터페이스를 제공합니다.

 

2.2 로드 밸런싱 (Load Balancing)

OSI 7 계층 수준의 로드 밸런싱을 수행합니다. 또한, 키나리 배포와 같이 순차적 업데이터를 가능하도록 합니다.

 

2.3 관찰 가능성(Observability)

단순하 예상대로 동작하는지 확인하는 모니터링을 넘어서, 복잡한 환경에서 오류의 원인을 쉽게 찾을 수 있도록 합니다.

출처 : https://www.samsungsds.com/kr/insights/service_mesh.html

 

2.4 보안 (Security)

Service Mesh는 기본적으로 상호 TLS(mTLS, mutual TLS) 암호화, 인증 및 권한 부여와 같은 보안 통신 기능을 제공합니다. 트래픽을 암호화하여 데이터 기밀성과 무경성을 보장하도록 합니다.

 

2.5 회로 차단기 (Circuit Breaker)

비정상적인 인스턴스를 격리하고 정상이 될 경우 조금씩 정상 인스턴스 풀로 가져오도록 해 장애 격리를 지원합니다.

 

3. Servise Mesh와 API Gateway의 차이점

3.1 비교 표

 
Service Mesh
API Gateway
1. 적용되는 위치
복잡한 내부 통신 제어를 담당
외부에서 들어오는 트래픽 제어를 담당
2. 아키텍처
분산형 아키텍처
단일 실패 지점(SPOF, Single Point Of Failure)
3. 패턴
Sidecar proxy 패턴
Gateway Proxy 패턴
4. 대표 오픈소스 프로젝트
Istio
Nginx

3.2 Service Mesh의 역할은 API Gateway와 다르다.

Service Mesh와 API Gateway는 라우팅이라는 비슷한 역할을 하기 때문에 혼동하기 쉽습니다.

또, Service Mesh에서 Ingress Gateway와 같은 Gateway를 지원하기 때문에 더 그러는것 같습니다.

💡 Ingress란? 외부에서 내부로 들어오는 네트워크 트래픽

 

하지만,

Service Mesh의 핵심은 복잡한 내부 통신을 단순화 하여 관리할 수 있도록 하는 것이 목적이기 때문에 API Gateway와 다르다고 할 수 있습니다.

4. Service Mesh의 단점

4.1 리소스 소요 증가

K8s에서 각 Pod 마다 사이드카가 하나씩 붙기 때문에 리소스는 최소 2배를 사용합니다.

 

4.2 통신간 지연 시간

Service Mesh는 네트워크 레이어 추가와 mTLS를 사용으로 인해 지연 시간이 발생합니다.

 

4.3 러닝 커브

Service Mesh 자체가 쉬운 개념이 아닐뿐더러, 계속 발전하고 있는 기술이기 때문에 러닝 커브가 존재합니다.

 

5. 참고

https://www.redhat.com/ko/topics/microservices/what-is-a-service-mesh

https://aws.amazon.com/ko/what-is/service-mesh/

https://www.samsungsds.com/kr/insights/service_mesh.html

https://medium.com/twolinecode/30-서비스-메시-service-mesh-란-3d769f54cd9a

https://www.opsnow.com/서비스-메시service-mesh/

https://nginxstore.com/blog/kubernetes/service-mesh-란-무엇인가/

https://medium.com/dtevangelist/service-mesh-란-8dfafb56fc07