MSA 환경에서 발생하는 문제


MSA에서는 애플리케이션을 여러 개의 독립적인 서비스로 나눈다. 이러한 서비스가 몇 개 없을 때는 서비스 코드를 수정해서 통신 방식을 쉽게 관리할 수 있지만 수십, 수백개로 늘어나게 되면 다음과 같은 문제가 발생한다.

  1. 복잡한 트래픽 관리
  2. 보안 관리 어려움
  3. 관측성(Observability) 부족

Service Mesh란


Service Mesh는 이러한 서비스 간 통신 관리를 별도의 계층에서 해결해주는 기술이다. 즉, 애플리케이션 서비스 코드를 건드리지 않고도, 네트워크 레벨에서 통신을 제어하고 보안, 정책, 모니터링 기능을 일관되게 적용할 수 있도록 해준다.

[핵심 포인트]

서비스들이 서로 통신할 때, 그 통신 경로 중간에 Proxy를 두어 모든 트래픽을 통제하고 관찰하는 구조를 만든다. 그리고 이 프록시들에게 어떤 정책을 적용할지 결정하고 전달하는 컨트롤 플레인을 둬서 중앙에서 설정을 관리한다.

Service Mesh 구성 요소


  1. 데이터 플레인(Data Plane)
  2. 컨트롤 플레인(Control Plane)

대표적인 Service Mesh 예시