BLOG

AWS X-Ray와 AWS App Mesh의 통합
작성일: 2019년 8월 22일

개발자 및 DevOps 엔지니어는 AWS X-Ray를 통해 애플리케이션과 그 기반이 되는 서비스의 성능을 빠르게 이해할 수 있습니다. 이러한 AWS X-Ray가 AWS App Mesh 와 통합되면, 이 조합은 아주 강력한 분석 도구가 됩니다.

 

AWS X-Ray는 오류 및 성능 문제의 근본 원인을 식별하고 해결하는 데 도움을 줍니다. 또한 마이크로 서비스 아키텍처 기반 애플리케이션을 포함한 분산 애플리케이션을 분석하고 디버깅할 수 있습니다. 이로 인해 사용자는 오류 및 성능 문제의 영향과 도달 범위에 대한 인사이트를 얻을 수 있습니다.

 

자 그럼 오늘은 AWS X-Ray와 App Mesh을 통합하는 방법에 대해 설명해 드리겠습니다.

 

개요

App Mesh는 Envoy 프록시를 기반으로 하는 서비스 메쉬로써 마이크로 서비스를 쉽게 모니터링하고 제어할 수 있습니다. App Mesh는 마이크로 서비스의 통신 방식을 표준화하여 엔드 투 엔드 뷰를 제공하고 높은 애플리케이션 가용성을 보장합니다.

 

App Mesh를 사용하면 여러 유형의 컴퓨팅 인프라에 구축된 서비스에 대해 일관된 가시성과 네트워크 트래픽 제어를 쉽게 유지할 수 있습니다. App Mesh는 각 서비스가 모니터링 데이터를 내보내도록 구성하고, 애플리케이션 전체에 일관된 통신 제어 로직을 구현할 수 있습니다.

 

서비스 메쉬는 마이크로 서비스를 위한 통신 계층과 같습니다. 서비스 간의 모든 통신은 메쉬를 통해 이루어집니다. 고객은 App Mesh를 사용하여 가상 서비스, 가상 노드, 가상 경로 및 해당 경로가 포함된 서비스 메쉬를 구성합니다.

 

그러나 대기 시간 및 기타 유형의 성능 문제를 식별하는 동안, 요청 트래픽이 서비스 메쉬를 통과하는 방식을 시각화하는 것은 어려운 일입니다. 이는 서비스의 수가 증가될수록 특히 더 어려워 집니다.

 

 

그러나 X-Ray는 이 영역에서 탁월합니다. AWS는 서비스 메쉬 안의 자세한 워크 플로우를 보여주기 위해 Envoy 내부에 X-Ray 추적 프로그램이라는 추적 확장 프로그램을 구현했습니다. 이를 통해 Envoy경유로 라우팅되는 모든 인바운드 및 아웃 바운드 콜을 추적하고 있습니다.

 

 

컬러 App을 통한 트래픽 라우팅

다음으로 X-Ray가 App Mesh와 작동하는 방식을 보여드리겠습니다. 트래픽 데모를 보여주기 위해 간단한 데모 애플리케이션인 Color App을 사용했습니다.

 

이 App에는 AWS X-ray Go SDK에 포함된 2개의 Go App, color-gateway color-teller 가 있습니다. color-gateway 애플리케이션은 외부 클라이언트에 공개 되어 color-teller에서 컬러를 검색하는 http://service-name:port/color에 응답합니다. 이 예제에선 Amazon ECS을 사용해 color-app 을 배포해 보았습니다. 아래의 이미지는 color-gatewaycolor-teller 를 사용하여 트래픽을 가상 라우터에 라우팅 한 다음, 별도의 노드로 라우팅 하는 방법을 보여줍니다.

 

 

 

다음 이미지는 color-gateway 와 color-teller에 요청이 전달된 후, X-Ray 서비스 맵에서 일어나는 App Mesh와 클라이언트간의 상호 작용을 보여줍니다.

 

 

통합

서비스 노드에는 두 가지 유형이 있습니다.

  • AWS :: AppMesh :: Proxy 는 Envoy 내부의 X-Ray 추적 확장 프로그램에 의해 생성됩니다.
  • AWS :: ECS :: Container 는 AWS X-Ray Go SDK에 의해 생성됩니다  .

 

서비스 그래프 화살표는 요청 워크 플로우를 표시하며, 서비스 간의 관계를 이해할 때 도움이 될 수 있습니다.

 

Envoy에서 생성된 세그먼트를 X-Ray로 보내려면 X-Ray 데몬을 설치하십시오. 다음 코드 예제는 컨테이너에 데몬을 설치하는 데 사용되는 ECS 작업 정의를 보여줍니다.

 

   “name”: “xray-daemon”,

     “image”: “amazon/aws-xray-daemon”,

     “user”: “1337”,     “essential”: true,

     “cpu”: 32,

     “memoryReservation”: 256,

     “portMappings”: [ 

        { 

            “hostPort”: 2000,

             “containerPort”: 2000,

             “protocol”: “udp” 

         }

 

Color App이 성공적으로 실행되었으니 이제 색상 color-gateway 을 가져 오도록 요청해보겠습니다.

  • 먼저 Envoy 프록시 appmesh/colorgateway-vn가 default-gateway요청 을 수신하여 서버로 라우팅 했습니다.
  • 그런 다음 default-gateway서버 default-colorteller-white에 색상 검색을 요청했습니다.
  • color-teller 서버를 직접 호출하는 대신에 요청은 default-gateway Envoy 프록시로 전달되었고, 프록시는 호출을 color-teller로 라우팅 했습니다 .

 

이것이 Envoy 프록시를 사용하는 이점입니다. Envoy는 모든 어플리케이션 서버와 병행해 실행되도록 설계된 자율적인 프로세스입니다. 모든 Envoy 프록시는 각 애플리케이션이 광범위한 네트워크 토폴로지를 인식하지 못한 채 로컬 호스트와 메시지를 주고 받을 수 있는 투명한 통신 메쉬를 형성합니다.

 

App Mesh와의 통합을 위해 X-Ray 추적 프로그램은 mesh name 및  virtual node name값을 기록 하여 세그먼트 JSON 문서에 삽입합니다. 그 예는 다음과 같습니다.

“aws”: {

“app_mesh”: {

“mesh_name”: “appmesh”,

“virtual_node_name”: “colorgateway-vn”

}

},

 

Envoy 내에서 App Mesh를 통해 X-Ray 추적을 활성화하려면, 두 가지 환경 변수 구성을 설정 해야 합니다.

  • ENABLE_ENVOY_XRAY_TRACING
  • XRAY_DAEMON_PORT

 

첫 번째는 생성된 세그먼트가 전송되는 기본 데몬 엔드 포인트로 127.0.0.1:2000 를 사용하여 X-Ray 추적을 활성화 합니다. 설치한 데몬이 다른 포트에서 수신 대기하는 경우 두 번째 구성을 사용하여 기본 X-Ray 데몬 포트를 무시하도록 포트 값을 지정할 수 있습니다.

 

결론

AWS X-Ray는 서비스를 구현할 수 있도록 여러 언어로 작성된 SDK를 지원합니다(Java, Python, Go, .NET 및 .NET Core, Node.js 및 Ruby 포함). 자세한 내용은 Getting Started with AWS X-Ray 페이지를 참고해 주시길 바랍니다.

 

 

 

원문 URL:  https://aws.amazon.com/ko/blogs/compute/integrating-aws-x-ray-with-aws-app-mesh/

 

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.