Medium - A Brief Introduction to AWS X-Ray

원문 - Himansh Kumar

Trend 파악을 위한 Medium 기고문 포스팅 - AWS X-Ray에 대하여

1. How did I come across AWS X-Ray?

최근에 저는 마이크로 서비스로 구성된 아키텍쳐 기반의 어플리케이션에 작업을 하게 되었습니다. 이런 마이크로 서비스들은 외부 API들로 구성되어 있었죠. 이렇게 외부 API들을 쓰는 것의 단점은 이슈가 발생하면 이전에 존재하던 메인 API의 문제인지 아니면 외부 API의 문제인지 알 수가 없다는 것이죠. 이런 상황에서 AWS X-Ray가 큰 도움이 되었습니다. AWS X-Ray는 서비스 중에 정확히 어떤 포인트에서 문제가 발생했는지 알 수 있게 해주고 발생하지 않은 문제들에 대해서 예측할 수 있게 해줍니다. 이 포스트에서는 AWS X-Ray를 사용하게 되면 얻을 수 있는 장점들에 대해 적어보겠습니다.

2. What is AWS X-Ray?

AWS X-Ray는 여러분들의 앱 서버와 관련된 데이터를 view, filter 할 수 있게 수집해주며 발생한 문제를 식별하고 최적화를 할 수 있도록 정보를 제공해줍니다. 그냥 리퀘스트 / 리스폰스에 대한 자세한 정보 뿐만 아니라 AWS 리소스의 다운스트림, 외부 응용프로그램, 마이크로 서비스, 데이터 베이스, 그리고 HTTP Web API들 까지도 call 할 수 있습니다. 이런 구체적인 정보들은 traces라는 형태로 보여집니다.

Source: X-Ray Docs

X-Ray SDK는 X-Ray 데몬에 JSON 세그먼트 도큐먼트를 보내고 X-Ray 데몬은 X-Ray 콘솔에 데이터를 보냅니다. X-Ray 데몬은 큐에서 세그먼트들을 보관했다가 배치작업으로 X-Ray로 업로드를 합니다. SDK는 응용프로그램에서 아주 빠르게 적용할 수 있게 해주며 명시적으로 응용프로그램에서 로그를 찍지 않아도 되도록 해줍니다. SDK가 지원하는 언어와 프레임워크는 다음과 같습니다.

  • C#
  • Go
  • Java
  • Node.js
  • Python
  • Ruby

데몬은 베이스 시스템에 설치됩니다. AWS는 또한 일련의 통합 서비스들을 바로 제공합니다. X-Ray를 제공하는 서비스들은 다음과 같습니다.

  • AWS Lamda
  • Amazon API Gateway
  • Elastic Load Balancing
  • AWS Elastic Beanstalk
  • AWS SNS
  • AWS SQS

게다가 여러분의 로컬호스트나 on-premise 서버까지 AWS X-Ray로 통합할 수 있습니다.

3. Concepts of AWS X-Ray

  1. Segments
  2. Subsegments
  3. Traces
  4. Service Graph
  5. Sampling

3.1 Segments

여러분의 서비스 로직이 소비하는 컴퓨터 자원은 자신이 수행하는 일을 세그먼트 형태의 데이터로 보냅니다. 세그먼트는 다음과 같은 정보를 제공합니다.

  • The Host - 호스트명, 별칭 or IP 주소
  • The request - 메소드, 클라이언트 주소, 경로, urger agent
  • The response - status, content
  • 완료된 작업 - 시작과 종료시간, 서브세그먼트
  • 발생한 문제 - error, fault, 그리고 예상한 상황이 발생한 경우

3.2 Subsegments

서브세그먼트는 좀 더 세분화된 타이밍 정보와 외부 HTTP API, 동적DB, SQL 데이터베이스에 대한 downstream 콜에대한 정보를 제공해줍니다.

Source: X-Ray Docs

3.3 Traces

AWS X-Ray 트레이스는 유저의 리퀘스트가 전체적인 서비스에서 이동한 경로를 보여줍니다. 여러분들의 응용프로그램에서 만들어진 개별적인 서비스와 자원들에서 생성된 정보를 통합합니다. 이 정보를 이용해서 여러분의 응용프로그램이 어떻게 동작하고 있는지 엔드 투 엔드 뷰를 제공합니다.

3.4 Service Graph

X-Ray는 AWS 리소스와 API들이 생성하는 서비스맵에 대한 자세한 정보들을 트레이스 데이터로 사용합니다. 서비스 그래프는 클라이언트, 프론트엔드, 백엔드, 그리고 백엔드에서 호출하는 서비스/API 들을 보여줍니다. 이를 통해 병목구간, 지연시간, 그리고 다른 성능문제들을 확인하고 이슈를 해결할 수 있습니다.

AWS X-Ray는 서비스들로부터 세그먼트 형태로 데이터를 받습니다. 그리고 X-Ray는 세그먼트들을 그룹화하여 일반적인 리퀘스트를 추적합니다. X-Ray는 서비스 그래프를 생성하고 이를 추적하여 여러분의 응용프로그램에대한 시각화를 제공합니다.

3.5 Sampling

효과적인 트레이싱을 위해서는 여러분의 응용프로그램이 수행하는 대표성 리퀘스트들을 제공해야 합니다. X-Ray SDK는 어떤 리퀘스트를 추적해야 하는지 샘플 데이터를 이용해서 결정합니다.

4. Advantages of AWS X-Ray

  • 아키텍쳐에 대한 라이브 다이어그램을 제공합니다.
  • 응용프로그램의 병목구간을 보여줍니다.
  • 응용프로그램의 성능 최적화에 도움이 됩니다.
  • SQL 쿼리를 최적화하는데 도움이 됩니다.
  • 데이터드리븐 구조의 의사결정이 가능해 집니다.

Use Case of AWS X-Ray

  • 마이크로 서비스의 부분적인 fail에 대해서 찾아내는데 도움이 됩니다.
  • 응용프로그램의 병목현상을 찾는데 도움이 됩니다.
  • 응용프로그램의 쿼리 실행시간을 분석하는데 도움이 됩니다.
  • 마이크로 서비스 간의 실행시간을 분석하는데 도움이 됩니다.

5. Pricing of AWS X-Ray

  • 매달 100,000 트레이스들이 무료입니다.
  • 매달 1,000,000 조회 혹은 검색이 무료입니다.

추가 과금

  • 무료 티어 이후에 매 백만 트레이스마다 5달러가 들어갑니다.
  • 무료 티어 이후에 매 백만 조회/검색에 5달러가 들어갑니다.

6. Hands-on

레퍼런스 자료 Implementation of X-Ray with Django application.

Summary

  • AWS X Ray 개념 정리

© 2019. All rights reserved.

Powered by Hydejack v8.1.1