서비스 메시 (Service Mesh)
목차
서비스 메시란
서비스 메시(Service Mesh) 는 마이크로서비스 환경에서 서비스 간 네트워크 통신을 제어하고 관찰하기 위한 인프라 계층입니다. 애플리케이션 코드 안에 재시도, 타임아웃, mTLS, 트래픽 분할 같은 공통 네트워크 로직을 직접 넣기보다, 프록시와 제어 계층으로 분리해 관리하는 방식입니다.12
핵심은 “서비스를 연결하는 코드”를 각 서비스에 흩뿌리지 않고, 통신 정책을 플랫폼 차원에서 일관되게 적용하는 것입니다.
이 문서는 그 정책을 어디에 올려둘지에 집중합니다. timeout, retry, circuit breaker 자체의 일반 원칙은 복원력 패턴 (Timeout, Retry, Circuit Breaker) 문서가 더 직접적인 기준 문서입니다.
왜 서비스 메시를 쓰는가
마이크로서비스 수가 늘어나면 다음 문제가 반복해서 등장합니다.
- 통신 정책 중복: 서비스마다 재시도, 타임아웃, 인증 로직을 따로 구현하게 됩니다.
- 관측성 부족: 어느 서비스 호출이 느린지, 어디서 에러가 나는지 추적이 어려워집니다.
- 보안 설정 분산: 서비스 간 TLS, 인증서 관리, 권한 정책이 제각각이 되기 쉽습니다.
- 배포 제어 필요: 카나리 배포, 점진적 롤아웃, 버전별 트래픽 분할이 필요해집니다.
서비스 메시는 이런 공통 문제를 네트워크 계층에서 표준화하는 데 강점이 있습니다.
핵심 구성 요소
데이터 플레인 (Data Plane)
- 설명: 실제 요청과 응답이 흐르는 경로입니다.
- 구성: 보통 각 서비스 옆에 붙는 프록시가 트래픽을 처리합니다.
- 예시: Envoy가 대표적인 데이터 플레인 프록시로 자주 쓰입니다.3
컨트롤 플레인 (Control Plane)
- 설명: 데이터 플레인에 정책과 구성을 배포하는 제어 계층입니다.
- 역할: 라우팅 규칙, 보안 정책, 인증서, 텔레메트리 설정을 관리합니다.
- 예시: Istio control plane, Linkerd control plane 같은 구성이 여기에 해당합니다.12
서비스 메시를 설명할 때는 보통 다음 흐름으로 답하면 정리가 쉽습니다.
- 애플리케이션은 비즈니스 로직에 집중
- 프록시는 서비스 간 통신 처리
- 컨트롤 플레인은 정책을 중앙에서 관리
주요 기능
- 트래픽 관리: 카나리 배포, 블루-그린 배포, A/B 테스트, 버전별 라우팅
- 복원력 강화: 재시도, 타임아웃, 서킷 브레이커, 장애 격리
- 보안: 서비스 간 mTLS, 서비스 아이덴티티, 인증/인가 정책
- 관측성: 메트릭, 로그, 분산 트레이싱 수집
- 정책 일관성: 서비스별로 흩어지던 네트워크 설정을 플랫폼 수준에서 통합
서비스 메시의 포인트는 기능이 “새롭다”기보다, 이 기능들을 서비스 코드 바깥으로 빼서 공통 운영 기능으로 다루게 해준다는 점입니다.
장점
- 공통 네트워크 로직 분리: 애플리케이션 코드가 단순해집니다.
- 운영 정책 일관성: 타임아웃, 재시도, 보안 정책을 중앙에서 맞출 수 있습니다.
- 가시성 향상: 서비스 간 호출 경로와 지연 구간을 더 쉽게 볼 수 있습니다.
- 배포 유연성: 트래픽 분할과 점진 배포를 세밀하게 제어할 수 있습니다.
- 보안 강화: mTLS와 서비스 아이덴티티 관리를 체계화하기 좋습니다.
한계와 주의점
- 운영 복잡도 증가: 프록시와 컨트롤 플레인까지 함께 운영해야 합니다.
- 리소스 오버헤드: 프록시가 추가되므로 CPU, 메모리, 네트워크 비용이 늘어납니다.
- 디버깅 난이도: 애플리케이션 문제인지 네트워크 정책 문제인지 분리해서 봐야 합니다.
- 과한 도입 가능성: 서비스 수가 적거나 운영 요구가 단순하면 이점보다 비용이 클 수 있습니다.
- 기본기 대체 불가: 서비스 메시가 있다고 해서 API 설계, 장애 처리, 모니터링 설계가 자동으로 해결되지는 않습니다.
즉, 서비스 메시는 도입만으로 운영 문제가 사라지는 도구가 아니라, 운영 복잡성을 다른 층으로 옮겨 관리하는 방식에 가깝습니다.
대표 구현 비교
| 항목 | Istio | Linkerd |
|---|---|---|
| 특징 | 기능이 풍부하고 정책 제어 범위가 넓음 | 비교적 단순하고 경량화된 운영 경험 지향 |
| 강점 | 트래픽 관리, 보안, 확장성 측면에서 선택지가 많음 | 설치와 운영 부담을 낮추기 쉬움 |
| 고려점 | 기능이 많은 만큼 학습과 운영 복잡도도 큼 | 고급 기능 요구가 많으면 선택 폭이 좁을 수 있음 |
| 적합한 경우 | 복잡한 정책 제어가 필요한 대규모 환경 | 단순하고 빠른 도입이 중요한 환경 |
면접에서는 도구 기능을 세세히 외우기보다, 왜 서비스 메시가 필요한지와 어떤 운영 비용이 따라오는지를 설명하는 편이 더 중요합니다.
면접 포인트
- 서비스 메시는 서비스 간 통신을 관리하는 인프라 계층입니다.
- 핵심 가치는 재시도, 타임아웃, mTLS, 트래픽 정책을 서비스 코드 밖으로 분리하는 것입니다.
- 데이터 플레인과 컨트롤 플레인을 구분해 설명할 수 있으면 답변이 정리됩니다.
- 장점은 운영 정책 일관성과 가시성 향상이고, 비용은 복잡도와 리소스 오버헤드입니다.
- 서비스 수와 운영 요구가 충분히 커졌을 때 도입 효과가 커진다는 점까지 같이 말하면 좋습니다.