개발관련

MSA 에서 Service Mesh 란?

부발자 2020. 5. 19. 22:30

마이크로 아키텍처는 시스템을 운영할 때 많은 장점을 갖고 있지만, 반대로 단점도 존재한다.

마이크로 서비스들이 굉장히 많아졌을 때 이를 효과적으로 관리가 필요한데, 서비스를 찾는 디스커버리, 네트워크 트래픽 제어, 장애 전파 방지, 로깅, 보안등의 각 서비스 구성들끼리 유기적으로 잘 동작 하도록 관리 해주는 작업들로 시스템의 런타임 복잡도가 굉장히 높아진다.

지금까지는 많이들 들어본 Spring Cloud 혹은 Netflix OSS 라는 소프트웨어로 일일히 구현 혹은 설정을 해주는 것으로 많이들 해결을 하였지만, 어쩌면 이런 횡단 관심사(Cross Cutting Concerns)들을 구현하고 설정하는것이 핵심 관심사인 도메인 비즈니스를 만들어 나가는 것에 집중을 하지 못하게 되는 경우도 발생 하게 된다.

 

우리는 핵심 관심사인 도메인 비즈니스에 좀 더 집중해서 유저 혹은 고객에서 좋은 사용자 경험을 제공하는 것이 더 가치 있는 것일 수도 있다.

 

서비스 메쉬(Service Mesh) 란?

 

위키피디아에서는 다음과 같이 정의하고 있다.

a service mesh is a dedicated infrastructure layer for facilitating service-to-service communications between microservices, often using a sidecar proxy.

대충 해석하면, 서비스 메쉬는 사이드카 프록시를 사용하여 마이크로 서비스 간의 서비스 간 통신을 용이하게하기위한 전용 인프라 계층입니다.

 

Service Mesh Architecture

마이크로 서비스에서 Service Mesh 를 사용하지 않을때에는 횡단 관심사(Cross Cutting Concerns) 를 각 마이크로 서비스에서 직접 구현을 해야 하지만, Service Mesh 를 사용할 경우에는 횡단 관심사를 Service에 위임해서 마이크로 서비스는 핵심 관심사인 도메인 비즈니스에 더 집중을 할 수 있게 된다.

 

 

서비스 메쉬(Service Mesh)의 기능

  • Service Discovery
  • Load Balancing
  • Dynamic Request Routing
  • Circuit Breaking
  • Retry and Timeout
  • TLS
  • Distributed Tracing
  • metrics 수집
  • 기타 등등

 

서비스 메쉬(Service Mesh)의 구현체

  • Istio
  • Linkerd
  • AWS App Mesh

 

 

참고자료

https://en.wikipedia.org/wiki/Service_mesh

https://servicemesh.es/

 

반응형
댓글