App Mesh를 사용하면 모든 서비스에 일관된 가시성 및 네트워크 트래픽 제어 기능을 제공하여 서비스를 쉽게 실행할 수 있습니다. App Mesh는 통신을 모니터링하고 제어하는 데 필요한 로직을 모든 서비스 옆에서 실행되는 프록시로 분리합니다. 따라서 모니터링 데이터가 수집되는 방식이나 트래픽이 라우팅되는 방식을 변경하기 위해 애플리케이션 코드를 업데이트하거나 팀 간에 조율할 필요가 없습니다. 이를 통해 오류의 정확한 위치를 신속하게 찾아내고 오류가 있거나 코드 변경 사항을 배포해야 하는 경우 네트워크 트래픽을 자동으로 다시 라우팅할 수 있습니다.
App Mesh를 AWS Fargate, Amazon ECS, Amazon EKS, Amazon EC2, EC2에서 실행되는 Kubernetes와 함께 사용하면 대규모 서비스를 더 효과적으로 실행할 수 있습니다. App Mesh는 서비스 모니터링을 위한 다양한 AWS 파트너 및 오픈 소스 도구와 호환되는 오픈 소스 프록시인 Envoy를 사용합니다.
오픈 소스 프록시
App Mesh는 오픈 소스 Envoy 프록시를 사용하여 서비스의 컨테이너 간 모든 트래픽을 관리합니다. App Mesh는 서비스의 모든 애플리케이션 통신을 자동으로 처리하도록 이 프록시를 구성합니다. Envoy에는 역동적인 커뮤니티 에코시스템에서 구축한 통합 기능이 있어 App Mesh와 연동됩니다.
호환되는 AWS 서비스:
Amazon CloudWatch* – 리소스 및 애플리케이션의 완전한 가시성을 위한 모니터링 및 로깅 서비스.
AWS X-Ray* – 애플리케이션 성능의 엔드 투 엔드 보기를 위한 추적 서비스.
호환되는 AWS 파트너 및 오픈 소스 도구:
Datadog, Alcide, HashiCorp, Sysdig, Signalfx, Spotinst, Tetrate, Neuvector, Weaveworks, Twistlock, Wavefront by VMware, Aqua.
트래픽 라우팅
App Mesh를 사용하면 애플리케이션 내에 코드를 요구하거나 로드 밸런서를 사용하는 대신 서로 직접 연결하도록 서비스를 구성할 수 있습니다. 각 서비스가 시작되면, 해당 프록시가 App Mesh에 연결되고 메시에 있는 다른 서비스의 위치에 대한 구성 데이터를 수신합니다. App Mesh의 제어 기능을 사용하여, 애플리케이션 코드를 변경하지 않고도 서비스 간 트래픽 라우팅을 동적으로 업데이트할 수 있습니다.
클라이언트 측 트래픽 정책
프록시는 메시에 있는 모든 클라이언트의 트래픽을 자동으로 로드 밸런싱하고 상태 확인 및 서비스 등록을 기반으로 로드 밸런싱 엔드포인트를 추가 및 제거합니다. 이러한 기능을 사용하면 서비스의 새로운 버전을 더 쉽게 배포할 수 있으며 장애에 대한 복원력을 갖추도록 애플리케이션을 튜닝할 수 있습니다.
서비스 간 인증
상호 TLS(mTLS)는 전송 계층 인증을 활성화하여, 서비스 메시 내부와 외부에서 실행되는 애플리케이션 구성 요소에 대한 서비스 간 ID 확인이 가능해집니다. 이렇게 되면 고객은 AWS Certificate Manager Private Certificate Authority 또는 고객이 관리하는 인증 기관(CA)의 인증서를 서비스 메시의 워크로드에 프로비저닝하여 AWS App Mesh에서 실행되는 애플리케이션으로 보안 경계를 확장할 수 있고 서비스에 연결하는 클라이언트 애플리케이션에 대해 자동 인증을 적용할 수 있습니다.
컨테이너 오케스트레이션 네이티브 사용자 경험
App Mesh는 Amazon ECS, Amazon EKS, AWS Fargate, 그리고 EC2에서 실행되는 Kubernetes에서 관리하는 서비스와 연동됩니다. ECS, EKS, Fargate 또는 Kubernetes에서 실행되는 컨테이너식 워크로드의 경우, 제공된 App Mesh 프록시를 각 마이크로서비스의 태스크 정의 또는 팟 정의에 포함하고, 프록시와 직접 통신하도록 서비스의 애플리케이션 컨테이너를 구성합니다. 서비스가 시작되면 프록시는 자동으로 App Mesh에 체크인하고 App Mesh에 의해 구성됩니다.
완전관리형
AWS App Mesh는 가용성이 뛰어난 관리형 서비스입니다. App Mesh를 사용하면 통신 관리를 위해 애플리케이션 수준의 인프라를 설치하거나 관리할 필요 없이 서비스 통신을 관리할 수 있습니다.