Amazon Web Services 한국 블로그

AWS App Mesh, 마이크로서비스를 위한 서비스 메시

AWS App Mesh는 AWS의 마이크로 서비스 응용 프로그램 간 통신을 쉽게 모니터링하고 제어 할 수있게 해주는 서비스 메시입니다. Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Container Service for Kubernetes (Amazon EKS) 및 Amazon EC2에서 실행되는 Kubernetes 에서 실행되는 마이크로 서비스와 함께 App Mesh를 사용할 수 있습니다.

App Mesh는 현재 미리보기로 제공됩니다. 앞으로 몇 달 안에 새로운 기능과 통합을 추가 할 계획입니다.

AWS App Mesh 소개

많은 고객이 마이크로 서비스 아키텍처를 사용하여 애플리케이션을 개발하여, 독립적으로 배포 및 운영되는 여러 개의 작은 소프트웨어로 분리합니다. 마이크로 서비스는 각 구성 요소가 필요에 따라 독립적으로 확장되도록하여 응용 프로그램의 가용성과 확장성을 높여줍니다. 각 마이크로 서비스는 API를 통해 다른 마이크로 서비스와 상호 작용합니다.

애플리케이션 내에서 다수의 마이크로 서비스를 구축하기 시작하면, 개별 문제를 식별하고 따로 추적하기가 어려워집니다. 서비스 지연이나 API 오류 또는 오류 코드가 포함될 수 있습니다. 장애가 있거나 새로운 컨테이너를 배치해야하는 경우, 네트워크 트래픽을 동적으로 대체해서 라우팅하는 방법도 쉽지 않습니다.

각 마이크로 서비스에 사용자 정의 코드 및 라이브러리를 추가하거나, 통신 부분을 관리하는 프록시 오픈 소스 도구를 사용하여 이러한 문제를 해결할 수 있습니다. 그러나, 이러한 솔루션은 설치하기가 어려우며 팀간에 업데이트하기가 어려우며 가용성과 탄력성을 관리하기가 복잡합니다.

AWS App Mesh는 이러한 많은 과제를 해결하는 데 도움이되는 새로운 아키텍처 패턴을 구현하고 마이크로 서비스 간의 통신을 일관되고 동적으로 관리 할 수있는 방법을 제공합니다. App Mesh를 사용하면 마이크로 서비스 간의 통신을 모니터링하고 제어하는 ​​로직이 마이크로 서비스 코드에 내장되는 대신 각 마이크로 서비스와 함께 실행되는 프록시로 구현됩니다. 프록시는 마이크로 서비스로 들어오고 나가는 모든 네트워크 트래픽을 처리하고 가시성, 트래픽 제어 및 보안 기능을 모든 마이크로 서비스에 일관성있게 제공합니다.

 

 

 

 

 

App Mesh를 사용하여 모든 마이크로 서비스가 연결되는 방식을 모델링하고 App Mesh가 자동으로 적절한 구성 정보를 계산하여 각 마이크로 서비스 프록시에 전송합니다. 따라서 전체 애플리케이션에서 표준화되고 사용하기 쉬운 가시성 및 트래픽 제어 기능을 제공합니다. App Mesh는 오픈 소스 프록시 인 Envoy를 사용합니다. 따라서 마이크로 서비스 모니터링을위한 광범위한 AWS 파트너 및 오픈 소스 도구와 호환됩니다.

App Mesh를 사용하면 Amazon CloudWatch, AWS X-Ray 또는 Envoy와 통합 된 타사 모니터링 및 추적 도구를 비롯하여 여러 AWS 및 타사 도구로 관측 가능 데이터를 내보낼 수 있습니다. 새 트래픽 라우팅 제어를 구성하여 서비스에 대한 청색 / 녹색 카나리아 동적 배치를 가능하게 할 수 있습니다.

시작해 보기

먼저 서비스 A가 인터넷에서 트래픽을 수신하고 일부 백엔드 처리를 위해 서비스 B를 사용하는 두 가지 서비스가있는 샘플 애플리케이션을 살펴 보겠습니다. 카나리(Canary)  역할을 하도록 배포된 B의 새 버전 인 B와 B ‘서비스간에 트래픽을 동적으로 라우팅하려고합니다.

먼저 통신하려는 마이크로 서비스를 그룹화하는 네임 스페이스 인 메쉬를 만듭니다.

다음으로 가상 노드를 생성하여 메쉬의 서비스를 나타냅니다. 가상 노드는 특정 마이크로 서비스 버전을 나타냅니다. 이 예에서 서비스 A와 B는 메시에 참여하고 서비스 B에 대한 트래픽은 App Mesh를 사용하여 관리됩니다.

이제는 필요한 Envoy 프록시를 사용하여 서비스를 배포하고 각각을 메쉬의 노드에 매핑합니다.

가상 노드를 정의한 후에는 이러한 노드간에 트래픽이 어떻게 전달되는지 정의 할 수 있습니다. 이를 위해 가상 라우터와 경로를 정의합니다.

가상 라우터는 통신 트래픽을 정의하는 모든 경로를 논리적으로 그룹화합니다. 가상 라우터를 만든 후에는 트래픽을 적절하게 유도하는 경로를 만듭니다. 이러한 경로에는 경로가 수용해야하는 연결 요청, 트래픽 정의 및 전송할 트래픽의 가중치가 포함됩니다. 서비스 간의 트래픽을 조정하기위한 이러한 모든 변경 사항이 계산되어 App Mesh에서 적절한 프록시로 동적으로 전송되어 배포를 실행합니다.

가상 노드 A에서 기존 버전의 서비스 B로 보내는 모든 트래픽과 새로운 버전 B ‘로의 트래픽을 허용하는 가상 라우터를 설정했습니다.

통계, 로그 및 추적 기능

모든 마이크로 서비스 앞에 프록시를 두는 것의 이점 중 하나는 서비스 간의 통신에 대한 메트릭, 로그 및 추적을 자동으로 캡처 할 수 있다는 것입니다. App Mesh를 사용하면이 데이터를 원하는 도구로 쉽게 수집하고 내보낼 수 있습니다. Envoy는 이미 Prometheus 및 Datadog와 같은 여러 도구와 통합되어 있습니다.

미리보기 진행 중에 Amazon CloudWatch 및 AWS X-Ray와 같은 AWS 서비스에 대한 지원이 추가되며, 향후 더 많은 통합 계획을 가지고 있습니다.

지금 사용 가능

AWS App Mesh는 공개 미리보기로 제공되며 버지니아, 오하이오, 오레곤 및 아일랜드 AWS 리전에서 사용 가능합니다. 미리보기 중에 새로운 기능을 추가하고 피드백을 듣고 자합니다. GitHub 저장소에서 예제와 향후 로드맵을 확인할 수 있습니다.

— Nate;

이 글은 AWS Compute 블로그의 Introducing AWS App Mesh – service mesh for microservices on AWS의 한국어 번역입니다.