AWS App Mesh란? - AWS App Mesh

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS App Mesh란?

AWS App Mesh는 서비스를 손쉽게 모니터링하고 제어할 수 있는 서비스 메시입니다. 서비스 메시는 일반적으로 애플리케이션 코드와 함께 배포된 간단한 네트워크 프록시 배열을 통해 서비스 간 통신을 처리하는 전용 인프라 계층입니다. App Mesh는 서비스가 통신하는 방법을 표준화하여 엔드 투 엔드 가시성을 제공하고 애플리케이션의 고가용성을 보장합니다. App Mesh는 애플리케이션의 모든 서비스에 대한 일관된 가시성 및 네트워크 트래픽 제어를 제공합니다.

예제 애플리케이션에 App Mesh 추가

App Mesh를 사용하지 않는 다음과 같은 간단한 예제 애플리케이션을 고려해 보세요. 두 서비스는 AWS Fargate, Amazon Elastic Container Service(Amazon ECS), Amazon Elastic Kubernetes Service(Amazon EKS), Amazon Elastic Compute Cloud(Amazon EC2)의 Kubernetes 인스턴스 또는 Docker가 있는 Amazon EC2 인스턴스에서 실행할 수 있습니다.

이 그림에서는 apps.local 네임스페이스를 통해 serviceAserviceB를 모두 검색할 수 있습니다. 예를 들어 이름이 servicebv2.apps.local인 새 버전의 serviceb.apps.local을 배포하기로 결정했다고 가정해 보겠습니다. 다음으로, servicea.apps.local의 트래픽 특정 비율을 serviceb.apps.local로, 특정 비율을 servicebv2.apps.local로 전송하려고 합니다. servicebv2의 성능이 좋다고 확신하는 경우 트래픽의 100%를 해당 위치로 보내는 것이 좋습니다.

App Mesh를 사용하면 애플리케이션 코드나 등록된 서비스 이름을 변경하지 않고도 이 작업을 수행할 수 있습니다. 이 예제 애플리케이션에서 App Mesh를 사용하는 경우 메시는 다음 그림과 같아 보일 수 있습니다.

이 구성에서는 서비스가 더 이상 서로 직접 통신하지 않습니다. 대신 프록시를 통해 서로 통신합니다. servicea.apps.local 서비스와 함께 배포된 프록시는 App Mesh 구성을 읽고 구성에 따라 serviceb.apps.local 또는 servicebv2.apps.local로 트래픽을 전송합니다.

App Mesh 구성 요소

App Mesh는 이전 예제와 같이 다음 구성 요소로 이루어집니다.

  • 서비스 메시 – 서비스 메시는 내부에 있는 서비스 간의 네트워크 트래픽에 대한 논리적 경계입니다. 이 예제에서 메시는 이름이 apps이며 메시에 대한 다른 모든 리소스를 포함합니다. 자세한 내용은 서비스 메시 섹션을 참조하세요.

  • 가상 서비스 – 가상 서비스는 가상 노드가 가상 라우터를 통해 직접 또는 간접적으로 제공하는 실제 서비스의 추상화입니다. 그림에서 두 개의 가상 서비스는 두 개의 실제 서비스를 나타냅니다. 가상 서비스 이름은 실제 서비스에서 검색 가능한 이름입니다. 가상 서비스와 실제 서비스의 이름이 같으면 여러 서비스가 App Mesh가 구현되기 전에 사용한 것과 동일한 이름을 사용하여 서로 통신할 수 있습니다. 자세한 내용은 가상 서비스 섹션을 참조하세요.

  • 가상 노드 — 가상 노드는 Amazon ECS 또는 Kubernetes 서비스와 같은 검색 가능한 서비스에 대한 논리 포인터 역할을 합니다. 각 가상 서비스에는 하나 이상의 가상 노드가 있습니다. 그림에서 servicea.apps.local 가상 서비스는 이름이 serviceA인 가상 노드에 대한 구성 정보를 가져옵니다. serviceA 가상 노드는 서비스 검색을 위한 servicea.apps.local 이름으로 구성됩니다. serviceb.apps.local 가상 서비스는 serviceB라는 가상 라우터를 통해 serviceBserviceBv2 가상 노드로 트래픽을 라우팅하도록 구성됩니다. 자세한 내용은 가상 노드 섹션을 참조하세요.

  • 가상 라우터 및 경로 – 가상 라우터는 메시 내에 있는 하나 이상의 가상 서비스에 대한 트래픽을 처리합니다. 경로는 가상 라우터와 연결됩니다. 이 경로는 가상 라우터에 대해 일치하는 요청을 찾고 관련 가상 노드에 트래픽을 분산하는 데 사용됩니다. 이전 그림에서 serviceB 가상 라우터에는 트래픽의 일정 비율을 serviceB 가상 노드로, 일정 비율을 serviceBv2 가상 노드로 전달하는 경로가 있습니다. 특정 가상 노드로 라우팅되는 트래픽의 비율을 설정하고 시간이 지남에 따라 변경할 수 있습니다. HTTP 헤더, URL 경로, gRPC 서비스 및 메서드 이름과 같은 기준에 따라 트래픽을 라우팅할 수 있습니다. 응답에 오류가 있는 경우 연결을 재시도하도록 재시도 정책을 구성할 수 있습니다. 예를 들어, 그림에서 경로에 대한 재시도 정책은 serviceb.apps.local에서 특정 유형의 오류를 반환하는 경우 serviceb.apps.local에 대한 연결을 5번 재시도하고 재시도 간격은 10초가 되도록 지정할 수 있습니다. 자세한 정보는 가상 라우터경로 섹션을 참조하세요.

  • 프록시 - 메시와 해당 리소스를 생성한 후 프록시를 사용하도록 서비스를 구성합니다. 프록시는 App Mesh 구성을 읽고 트래픽을 적절하게 전달합니다. 그림에서 servicea.apps.local에서 serviceb.apps.local로의 모든 통신은 각 서비스에 배포된 프록시를 통해 이루어집니다. 서비스는 App Mesh를 도입하기 전에 사용한 것과 동일한 서비스 검색 이름을 사용하여 서로 통신합니다. 프록시가 App Mesh 구성을 읽으므로 두 서비스가 서로 통신하는 방식을 제어할 수 있습니다. App Mesh 구성을 변경하려는 경우 서비스 자체 또는 프록시를 변경하거나 재배포할 필요가 없습니다. 자세한 내용은 Envoy 이미지 섹션을 참조하세요.

시작하는 방법

App Mesh를 사용하려면 AWS Fargate, Amazon ECS, Amazon EKS, Amazon EC2의 Kubernetes 또는 Docker가 있는 Amazon EC2에서 실행되는 기존 서비스가 있어야 합니다.

App Mesh를 시작하려면 다음 가이드 중 하나를 참조하세요.

App Mesh 액세스

다음과 같은 방식으로 App Mesh 작업을 수행할 수 있습니다.

AWS Management Console

콘솔은 App Mesh 리소스를 관리하는 데 사용할 수 있는 브라우저 기반 인터페이스입니다. https://console.aws.amazon.com/appmesh/에서 App Mesh 콘솔을 열 수 있습니다.

AWS CLI

다양한 AWS 제품에서 사용되는 명령어를 제공하며 Windows, Mac, Linux를 지원합니다. 시작하려면 AWS Command Line Interface 사용 설명서를 참조하세요. App Mesh 명령에 대한 자세한 내용은 AWS CLI 명령 참조에서 appmesh를 참조하세요.

AWS Tools for Windows PowerShell

PowerShell 환경에서 스크립트 작업을 선호하는 다양한 AWS 제품을 관리할 수 있도록, 명령줄 도구를 제공합니다. 시작하려면 AWS Tools for Windows PowerShell 사용 설명서를 참조하세요. App Mesh용 cmdlets에 대한 자세한 내용은 PowerShell Cmdlet용 AWS 도구 참조App Mesh를 참조하세요.

AWS CloudFormation

원하는 모든 AWS 리소스를 설명하는 템플릿을 생성할 수 있도록 합니다. AWS CloudFormation에서는 템플릿을 사용하여 리소스를 프로비저닝하고 구성합니다. 시작하려면 AWS CloudFormation 사용 설명서를 참조하세요. App Mesh 리소스 유형에 대한 자세한 내용은 AWS CloudFormation 템플릿 참조App Mesh 리소스 유형 참조를 참조하세요.

AWS SDK

SDK를 사용해 다양한 프로그래밍 언어로 App Mesh에 액세스할 수 있습니다. SDK는 다음 작업들을 자동으로 수행합니다.

  • 서비스 요청에 대한 암호화 서명

  • 요청 재시도

  • 오류 응답 처리

사용 가능한 SDK에 대한 자세한 내용은 Amazon Web Services용 도구 단원을 참조하세요.

App Mesh API에 대한 자세한 내용은 AWS App Mesh API 참조를 참조하세요.