1. AWS App Mesh
AWS App Mesh를 사용하면 다양한 유형의 컴퓨팅 인프라 전반에 구축된 서비스에 대한 일관된 가시성 및 네트워크 트래픽 제어 기능을 제공하여 손쉽게 서비스를 실행할 수 있으며, 모니터링 데이터 수집 방식이나 서비스 간에 트래픽이 라우팅 되는 방식을 변경하기 위해 애플리케이션 코드를 업데이트할 필요가 없습니다.
App Mesh는 모니터링 데이터를 내보내도록 각 서비스를 구성하고, 애플리케이션 전반에 일관된 통신 제어 로직을 구현합니다.
이를 통해 오류의 정확한 위치를 신속하게 찾아내고 오류가 있거나 코드 변경 사항을 배포해야 하는 경우 네트워크 트래픽을 자동으로 다시 라우팅 할 수 있습니다.
AWS Fargate, Amazon ECS, Amazon EKS, Kubernetes on EC2와 함께 App Mesh를 사용하면 규모에 맞춰 컨테이너화된 마이크로서비스를 효과적으로 사용할 수 있습니다.
AWS APP Mesh의 주요 기능은 다음과 같습니다.
-
일관된 마이크로서비스 통신 : App Mesh는 통신 모니터링과 제어에 필요한 논리를 각각의 마이크로서비스 대한 모든 네트워크 트래픽을 관리하는 프록시로 나눕니다.
-
오픈소스 프록시 : App Mesh는 마이크로서비스 컨테이너로 오가는 모든 트래픽을 관리하기 위해 오픈소스인 Envoy 프록시를 설정합니다.
-
가시성 : App Mesh는 마이크로서비스 간 모든 통신에 대한 수치, 로그, 트레이스를 모으기 때문에 에러 발생 부분을 빠르게 처리할 수 있습니다. 이 기능은 AWS 서비스와 오픈 소스를 이용하여 실행 가능합니다.
-
트래픽 제어 : App Mesh는 어플리케이션 내부 코드 수정이나 로드밸런서를 사용하는 일 없이 마이크로서비스들을 바로 연결할 수 있도록 하며, 각 마이크로서비스가 시작할 때, 마이크로서비스의 프록시가 App Mesh에 연결하고
어플리케이션 내 다른 마이크로서비스들의 위치를 담고 있는 데이터를 받습니다.
2. Istio
Istio는 Google, IBM, Redhat, Lyft, VMware와 같이 다수의 대형업체들이 참여하여 Service Mesh의 개념을 쉽게 구현할 수 있는 일종의 프레임워크(?)의 형태로 제공하는 오픈소스입니다.
그리고 이를 통해 대규모의 마이크로서비스 환경이라고 하여도 서비스를 연결, 보안, 제어 및 관찰할 수 있는 방안을 쉽게 하도록 지원하고 있습니다.
Istio의 주요 기능은 다음과 같습니다.
-
트래픽 관리 : Istio의 간단한 룰 설정과 트래픽 라우팅은 사용자로 하여금 서비스 간 트래픽과 API 요청의 흐름을 조절할 수 있게 합니다. Istio는 circuit breakers, timeouts, retries 같은 서비스 레벨의 속성들의 설정을 단순화 하고, A/B Testing, Canary Rollouts, 백분위 단위의 traffic 분산으로 단계적 rollouts 같은 중요한 일들을 설정하기 쉽도록 합니다.
-
보안 : Istio는 마이크로 서비스 간 통신의 인증, 승인, 암호화를 확장 가능한 방식으로 제공 및 관리할 수 있습니다.
특히, Istio 가 기본적으로 기반 보안 통신 채널을 제공하므로 이를 통해 개발자는 애플리케이션 수준 보안에 집중할 수 있으며, 별도의 보안에 대한 고민 없이도 Istio 가 안전한 보안 커뮤니케이션을 지원할 수 있습니다. -
관측 : Istio는 기본적으로 추적, 모니터링, 로깅을 제공 가능하며 이를 통해 Service Mesh 배포에 대한 심층적인 정보를 제공하여 서비스의 성능과 다른 프로세스에 미치는 성능의 영향을 확인하고 문제를 빠르고 효과적으로 감지 및 분류할 수 있도록 지원할 수 있습니다…
-
플랫폼 지원 : Istio는 플랫폼에 독립적이고, 다양한 클라우드, On-premise, Kubernetes, Mesos 같은 다양한 환경에서 돌아가도록 설계 되었습니다.
-
통합 및 사용자 정의 : Istio의 정책 실행 구성요소는 ACLs, Logging, Monitoring, Quotas, Auditing 등 기존의 솔루션들과 통합되도록 확장 및 사용자 정의가 가능합니다.
Service Mesh 고려사항
Service Mash Pattern에서 설명한 것처럼 Service Mesh 패턴은 다양합니다. 패턴들을 크게 두 가지로 크게 분류하면 호스트 공유 프록시 패턴과 Side car 컨테이너 방식이라 할 수 있습니다.