AWS X-Ray FAQ

일반

AWS X-Ray는 개발자가 마이크로 서비스 아키텍처를 사용해 구축된 애플리케이션과 같은 프로덕션 분산 애플리케이션을 분석하고 디버깅하는 데 도움이 됩니다. X-Ray를 사용해 자신이 개발한 애플리케이션과 기본 서비스가 성능 문제와 오류의 근본 원인 식별과 문제 해결을 올바로 수행하는지 파악할 수 있습니다. X-Ray는 요청이 애플리케이션을 통과함에 따라 요청에 대한 엔드 투 엔드 뷰를 제공하고 애플리케이션의 기본 구성 요소를 맵으로 보여줍니다. X-Ray를 사용하여 간단한 3-티어 애플리케이션에서부터 수천 개의 서비스로 구성된 복잡한 마이크로 서비스 애플리케이션에 이르기까지 개발 중인 애플리케이션과 프로덕션에 적용된 애플리케이션 모두 분석할 수 있습니다.

현재는 분산 애플리케이션을 구축 및 실행하는 경우, 애플리케이션에 대한 요청이 애플리케이션을 구성하는 다양한 구성 요소를 통과함에 따라 이를 추적하려면 서비스별 또는 리소스별 프로세스를 사용해야 합니다. 애플리케이션이 실행되거나 사용되는 프레임워크, 서비스 및 리소스에 따라 로그 형식과 스토리지 방식이 변하므로 이 문제가 더 복잡해집니다. 이로 인해 다양한 데이터 조각의 상관관계를 찾고, 최종 사용자 또는 서비스가 요청을 전송한 순간부터 애플리케이션에서 응답을 반환한 시점까지 전체적인 그림을 보여주기가 어려워집니다. X-Ray는 애플리케이션으로 전송된 요청과 관련된 데이터를 수집할 때 서비스 중심 또는 리소스 중심의 모델이 아니라 사용자 중심의 모델을 제공합니다. 이 모델을 사용하면 요청이 여러 서비스와 리소스를 통과함에 따라 이에 대한 사용자 중심의 그림을 생성할 수 있습니다. 자동으로 데이터의 상관관계를 찾고 데이터를 집계함으로써 X-Ray는 고객이 애플리케이션 최종 사용자의 경험을 개선하는 데 집중할 수 있게 해줍니다.

X-Ray를 사용하면 다음을 손쉽게 수행할 수 있습니다.

  • 서비스 맵 생성 - X-Ray는 애플리케이션에 전송된 요청을 추적함으로써 애플리케이션에서 사용하는 서비스 맵을 생성할 수 있습니다. 서비스 맵은 애플리케이션의 서비스가 서로 어떻게 연결되어 있는지 보여줍니다. 또한, 이를 사용하면 종속성 트리를 생성하고 AWS 가용 영역이나 리전에 걸쳐 작업할 때 지연 시간 또는 오류를 탐지하며, 의도대로 작동하지 않는 서비스를 바로 잡을 수 있습니다.
  • 오류 및 버그 파악 - X-Ray는 애플리케이션에 전송된 각 요청의 응답 코드를 분석함으로써 애플리케이션 코드의 버그 또는 오류를 자동으로 표시할 수 있습니다. 따라서 버그 또는 오류를 재현할 필요 없이 애플리케이션 코드를 쉽게 디버깅할 수 있습니다.
  • 자체 분석 및 시각화 앱 구축 - X-Ray는 X-Ray에서 기록한 데이터를 사용하는 자체 분석 및 시각화 앱을 구축할 수 있도록 쿼리 API 세트를 제공합니다.

핵심 개념

X-Ray 트레이스는 같은 트레이스 ID를 공유하는 데이터 요소 세트입니다. 예를 들어 클라이언트가 애플리케이션에 대한 요청을 전송하면 고유 트레이스 ID가 할당됩니다. 요청이 애플리케이션의 서비스를 통과할 때 서비스는 이 고유한 트레이스 ID를 사용하여 요청에 대한 정보를 X-Ray로 릴레이합니다. 애플리케이션의 각 서비스가 X-Ray로 릴레이한 정보 조각이 세그먼트이며, 트레이스는 세그먼트 모음입니다.

X-Ray 세그먼트는 분산 애플리케이션의 단일 구성 요소(예: 인증 서비스)에 대한 모든 데이터 요소를 캡슐화합니다. 세그먼트는 주석 형태로 된 시스템 정의 데이터 및 사용자 정의 데이터를 포함하며, 서비스로부터의 원격 호출을 표시하는 하나 이상의 하위 세그먼트로 구성됩니다. 예를 들어 요청에 대한 응답으로 애플리케이션에서 데이터베이스를 호출하면, 해당 요청에 대한 세그먼트와 데이터베이스 호출과 해당 결과를 표시하는 하위 세그먼트가 생성됩니다. 하위 세그먼트는 쿼리, 사용된 테이블, 타임스탬프, 오류 상태와 같은 데이터를 포함할 수 있습니다.

X-Ray 주석은 세그먼트와 연결된 시스템 정의 데이터 또는 사용자 정의 데이터입니다. 세그먼트는 여러 개의 주석을 포함할 수 있습니다. 시스템 정의 주석은 AWS 서비스가 세그먼트에 추가한 데이터를 포함하며, 사용자 정의 주석은 개발자가 세그먼트에 추가한 메타데이터입니다. 예를 들어 애플리케이션에서 생성한 세그먼트에는 AWS 서비스 호출에 대한 리전 데이터가 자동으로 삽입될 수 있는 반면에 AWS 서비스가 아닌 서비스로부터의 호출에 대한 리전 데이터는 사용자가 직접 추가하도록 선택할 수 있습니다.

X-Ray 오류는 오류 응답으로 이어진 호출에 대한 세그먼트와 연결된 시스템 주석입니다. 오류에는 오류 메시지, 스택 트레이스, 오류를 소스 파일과 연결할 수 있는 기타 추가 정보(버전 또는 커닛 ID 등)가 포함됩니다.

성능이 뛰어나고 비용 효율적인 환경을 제공하기 위해 X-Ray는 애플리케이션에 전송된 모든 요청에 대한 데이터를 수집하지 않습니다. 대신 통계적으로 의미가 있는 수의 요청에 대한 데이터를 수집합니다. X-Ray는 감사 또는 규정 준수 도구로 사용해서는 안 됩니다. 데이터 완결성을 보장하지 않기 때문입니다.

X-Ray 대몬(daemon)은 추적을 수집한 후 집계, 분석 및 저장을 위해 X-Ray 서비스로 전송합니다. 대몬(daemon)을 사용하면 API를 직접 사용하는 것보다 쉽게 데이터를 X-Ray 서비스로 전송할 수 있습니다.

AWS X-Ray 사용

X-Ray 언어 SDK를 애플리케이션에 추가하고 X-Ray 대몬(daemon)을 설치하면 X-Ray를 시작할 수 있습니다. 자세한 내용은 X-Ray 사용 설명서를 참조하세요.

X-Ray는 모든 규모의 분산 애플리케이션에서 동기식 요청과 비동기식 이벤트를 추적하고 디버깅하는 데 사용할 수 있습니다. 예를 들어 X-Ray는 Amazon SQS 대기열을 사용하는 비동기식 이벤트 또는 웹 애플리케이션에 전송된 웹 요청을 추적하는 데 사용할 수 있습니다.

X-Ray는 EC2, ECS, Lambda, Amazon SQS, Amazon SNS 및 Elastic Beanstalk에서 실행되는 애플리케이션과 함께 사용할 수 있습니다. 또한 X-Ray SDK는 AWS SDK를 사용하여 AWS 서비스로 전송된 API 호출에 대한 메타데이터를 자동으로 캡처합니다. 그뿐만 아니라 MySQL 및 PostgreSQL 드라이버에 대한 추가 기능을 제공합니다.

Elastic Beanstalk를 사용하고 있다면, 애플리케이션 코드에 언어별 X-Ray 라이브러리를 추가해야 합니다. EC2 또는 ECS 등 다른 AWS 서비스에서 실행되는 애플리케이션의 경우, X-Ray 대몬(daemon)을 설치하고 애플리케이션 코드를 변경해야 합니다.

예. X-Ray는 요청 데이터 수집, 트레이스 쿼리 및 서비스 구성용 API 세트를 제공합니다. X-Ray에서 제공한 애플리케이션 외에도 X-Ray API를 사용하여 분석 및 시각화 애플리케이션을 구축할 수 있습니다.

예. X-Ray는 모든 API 직접 호출을 관리 이벤트로 기록합니다. 또한 다른 API 중에서 PutTraceSegments 및 GetTimeSeriesServiceStatistics를 포함하여 데이터 이벤트로 트레이스에 대한 직접 호출을 기록합니다. 데이터 이벤트는 기본적으로 기록되지 않습니다. 데이터 이벤트를 기록하려면 이벤트를 수집하기 위해 CloudTrail 트레일 또는 이벤트 데이터 스토어를 구성해야 합니다.

리전

자세한 내용은 리전별 제품 및 서비스를 참조하세요.

예. X-Ray를 사용하여 여러 리전 전체에서 애플리케이션 또는 서비스를 통과하는 요청을 추적할 수 있습니다. X-Ray 데이터는 처리된 리전에 로컬로 저장되지만, 클라이언트 애플리케이션이 데이터를 통합하고 트레이스를 전체적으로 파악하기에 충분한 정보가 저장됩니다. AWS 서비스에 대한 리전 주석이 자동으로 추가되지만, 고객은 교차 리전 지원을 활용하기 위해서는 리전 주석을 추가하도록 사용자 지정 서비스를 변경해야 합니다.

데이터 처리

X-Ray로 전송된 트레이스 데이터는 일반적으로 서비스에서 이를 수신한 후 30초 이내에 검색 및 필터링할 수 있습니다.

X-Ray는 지난 30일간의 트레이스 데이터를 저장합니다. 따라서 30일 전의 트레이스 데이터를 쿼리할 수 있습니다.

X-Ray는 완벽한 트레이스 정보를 제공하기 위해 최선을 다합니다. 하지만 어떤 경우에는(연결 문제, 세그먼트 수신 지연 등) X-Ray API가 제공한 트레이스 정보가 부분 정보일 수 있습니다. 이런 경우 X-Ray는 트레이스를 불완전 또는 부분적이라고 태그를 지정합니다.

예. X-Ray 대몬(daemon)은 데이터가 실행되고 있는 계정과 다른 계정에 데이터를 게시하는 역할을 맡을 수 있습니다. 이를 통해 사용자는 애플리케이션의 다양한 구성 요소의 데이터를 중앙 계정으로 게시할 수 있습니다.