Amazon Web Services 한국 블로그

AWS App Mesh 정식 출시 (서울 리전 포함)

AWS App Mesh를 사용하면 대규모의 HTTP 및 TCP 서비스를 실행하고 모니터링할 수 있습니다. 지난해 AWS re:Invent에서 출시 예고를 한 이후, 오늘 정식 출시합니다.

App Mesh는 마이크로서비스 내에 서비스간 트래픽을 라우팅하고 모니터링하는 일관된 방법을 통해 문제를 파악하고 장애 발생 또는 코드 변경 후 트래픽을 다시 라우팅할 수 있습니다. App Mesh는 오픈 소스 Envoy 프록시를 사용하므로 AWS 파트너와 오픈 소스 커뮤니티가 제공하는 광범위한 도구에 액세스할 수 있습니다.

서비스는 AWS Fargate, Amazon EC2, Amazon ECS, Amazon Elastic Container Service for Kubernetes 또는 Kubernetes에서 실행될 수 있습니다. 각 서비스로 들어오고 나가는 모든 트래픽은 Envoy 프록시를 통과하므로 트래픽이 라우팅, 형성, 측정 및 로깅될 수 있습니다. 이 추가적인 간접 참조 수준을 사용하면 공통된 통신 라이브러리 집합을 사용하지 않고도 원하는 언어로 서비스를 작성할 수 있습니다.

App Mesh 개념

자세히 알아보기 전에 먼저 App Mesh에 관한 몇 가지 중요한 개념 및 구성 요소에 대해 살펴보겠습니다.

  • Service Mesh – 메시 안에 상주하는 서비스 간의 네트워크 트래픽에 대한 논리적 경계입니다. 메시는 가상 서비스, 가상 노드, 가상 라우터 및 루트를 포함할 수 있습니다.
  • Virtual Service – 가상 노드를 통해 직접적으로 또는 가상 라우터를 통해 간접적으로 제공되는 서비스에 대한 추상화(논리적 이름)입니다. 메시 내의 서비스는 논리적 이름을 사용하여 다른 서비스를 참조하고 사용합니다.
  • Virtual Node – 하나 이상의 EC2 인스턴스에서 실행 중인 서비스 또는 작업 그룹(ECS 서비스 또는 Kubernetes 배포)을 가리키는 포인터입니다. 각 가상 노드는 리스너를 통해 인바운드 트래픽을 수락할 수 있고 백엔드를 통해 다른 가상 노드에 연결할 수 있습니다. 또한 각 노드에는 다른 노드가 작업, 포드 또는 인스턴스의 IP 주소를 검색하도록 허용하는 서비스 검색 구성(현재는 DNS 이름)이 있습니다.
  • Virtual Router – 메시 내에 있는 하나 이상의 가상 서비스에 대한 처리기입니다. 각 가상 라우터는 특정 포트의 HTTP 트래픽을 수신합니다.
  • Route – 루트는 URL에 대한 접두사 기반 일치를 사용하고 선택적 노드별 가중치를 통해 트래픽을 가상 노드로 라우팅합니다. 프로덕션 환경에서 새로운 서비스 버전을 테스트하면서 서비스가 처리하는 트래픽의 양을 점진적으로 늘릴 때 가중치를 사용할 수 있습니다.

즉, 각 서비스 메시에는 루트에 지정된 URL 경로를 통해 액세스될 수 있는 서비스 집합이 포함되어 있습니다. 메시 내에서 서비스는 이름으로 서로를 참조합니다.

App Mesh 콘솔, App Mesh CLI 또는 App Mesh API에서 App Mesh에 액세스할 수 있습니다. 콘솔을 사용하는 방법을 보여드리고 CLI를 간단히 살펴보겠습니다.

App Mesh 콘솔 사용해보기

콘솔을 사용하면 서비스 메시와 서비스 메시 내의 구성 요소를 생성할 수 있습니다. App Mesh 콘솔을 열고 시작하기를 클릭합니다.

메시 및 첫 번째 가상 서비스(나중에 더 추가할 수 있음)의 이름을 입력하고 다음을 클릭합니다.

첫 번째 가상 노드를 정의합니다.

추가 구성을 클릭하여 서비스 백엔드(이 서비스가 호출할 수 있는 다른 서비스) 및 로깅을 지정합니다.

프로토콜(HTTP 또는 TCP) 및 포트를 통해 노드의 리스너를 정의하고 선택적 상태 확인을 설정하고 다음을 클릭합니다.

다음으로는, 첫 번째 가상 라우터와 가상 라우터의 루트를 정의합니다.

백분율을 기준으로 트래픽을 여러 가상 노드(대상)로 분배하고 들어오는 트래픽에 대해 접두사 기반 라우팅을 사용할 수 있습니다.

모든 선택 사항을 검토한 후 메시 서비스 생성을 클릭합니다.

몇 초 만에 구성 요소가 생성되고 시작할 준비가 됩니다.

App Mesh 시작 안내서에 설명되어 있는 것처럼 마지막 단계는 Envoy 컨테이너 이미지 및 프록시 컨테이너 이미지를 참조하도록 작업 정의(Amazon ECS 또는 AWS Fargate) 또는 포드 사양(Amazon EKS 또는 Kubernetes)을 업데이트하는 것입니다. 서비스가 EC2 인스턴스에서 실행 중이면 여기에 Envoy를 배포해야 합니다.

AWS App Mesh 명령줄 사용하기

App Mesh를 사용하면 단순한 JSON 형태로 각 구성 요소 유형을 지정할 수 있으며, 각 구성 요소를 생성하는 데 사용할 수 있는 명령줄 도구(create-mesh, create-virtual-service, create-virtual-nodecreate-virtual-router)가 제공됩니다. 예를 들어 파일에 가상 라우터를 정의할 수 있습니다.

{
  "meshName": "mymesh",
  "spec": {
        "listeners": [
            {
                "portMapping": {
                    "port": 80,
                    "protocol": "http"
                }
            }
        ]
    },
  "virtualRouterName": "serviceA"
}

그리고 하나의 명령으로 라우터를 생성합니다.

$ aws appmesh create-virtual-router --cli-input-json file://serviceA-router.json

정식 출시

AWS App Mesh는 지금 이용 가능하며 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), 미국 서부(캘리포니아 북부), 캐나다(중부), EU(아일랜드), EU(프랑크푸르트), EU(런던), 아시아 태평양(뭄바이), 아시아 태평양(도쿄), 아시아 태평양(시드니), 아시아 태평양(싱가포르)아시아 태평양(서울) 리전에서 오늘부터 사용을 시작할 수 있습니다.

Jeff;