

# OPS04-BP05 트랜잭션 추적 기능 구현
<a name="ops_telemetry_dist_trace"></a>

단일 논리적 작업의 결과로 트리거되고 워크로드의 다양한 경계에 걸쳐 통합되는 이벤트를 내보내도록 애플리케이션 코드를 구현하고 워크로드 구성 요소를 구성합니다. 맵을 생성하여 워크로드 및 서비스에서 트레이스가 어떻게 흐르는지 확인합니다. 구성 요소 간의 관계에 대한 인사이트를 얻고 문제를 식별하고 분석합니다. 수집된 정보를 사용하면 대응이 필요한 경우를 확인하고 문제의 원인을 파악할 수 있습니다. 

 **원하는 결과:** 
+  워크로드 전체에서 트랜잭션 트레이스를 수집하여 구성 요소 간의 관계에 대한 인사이트를 얻습니다. 
+  트랜잭션 및 이벤트가 워크로드에서 어떻게 흐르는지 더 잘 이해할 수 있도록 맵을 생성합니다. 

 **일반적인 안티 패턴:** 
+  여러 계정에 걸쳐 서버리스 마이크로서비스 아키텍처를 구현했습니다. 고객에게 간헐적인 성능 문제가 있습니다. 트랜잭션 추적 기능이 없어 원인이 되는 기능이나 구성 요소를 파악할 수 없습니다. 
+ 워크로드에 성능 병목 현상이 발생합니다. 트랜잭션 추적 기능이 없어 애플리케이션 구성 요소 간의 관계를 확인하고 성능 병목 현상을 식별할 수 없습니다.
+  추적에 사용되는 식별자는 전역적으로 고유하지 않으므로 워크로드 동작을 분석할 때 추적 충돌이 발생합니다. 

 **이 모범 사례 확립의 이점:** 
+  워크로드 전반의 트랜잭션 흐름을 파악하면 워크로드 트랜잭션의 예상 동작에 대한 인사이트를 얻을 수 있습니다. 
+  예상 동작과 워크로드 전반의 예상 동작 변형을 파악할 수 있으므로 필요한 경우 대응할 수 있습니다. 
+  생성된 위치와 관계없이 고유하게 생성된 식별자로 트랜잭션을 정확히 파악할 수 있습니다. 

 **이 모범 사례를 따르지 않을 경우 노출되는 위험 수준:** 낮음 

## 구현 가이드
<a name="implementation-guidance"></a>

 시스템 구성 요소 간의 트랜잭션 흐름 관련 정보를 내보내도록 애플리케이션 및 워크로드를 설계합니다. 트랜잭션에 포함할 데이터는 전역적으로 고유한 트랜잭션 식별자, 트랜잭션 단계, 활성 구성 요소 및 활동 완료 시간입니다. 이 정보를 사용하여 진행 중인 활동과 완료된 활동, 그리고 완료된 활동의 결과를 확인합니다. 

 **고객 사례** 

 AnyCompany Retail에서 모든 트랜잭션에는 전역적으로 고유한 UUID가 생성됩니다. 이 UUID는 트랜잭션 중에 마이크로서비스 간에 전달됩니다. UUID는 사용자가 워크로드와 상호 작용할 때 트랜잭션 트레이스를 생성하는 데 사용됩니다. 워크로드 토폴로지의 맵은 트레이스와 함께 생성되며 워크로드 문제를 해결하고 성능을 개선하는 데 사용됩니다. 

 **구현 단계** 

1.  워크로드에서 애플리케이션을 계측하여 트랜잭션 트레이스를 내보냅니다. 각 트랜잭션에 대한 고유 식별자를 생성하고 애플리케이션 간에 식별자를 전달하면 됩니다. 

   1.  [AWS Distro for OpenTelemetry](https://aws-otel.github.io/)에서 자동 계측을 사용하여 애플리케이션 코드를 수정하지 않고 기존 애플리케이션에서 트레이스를 구현할 수 있습니다. 

1.  애플리케이션 토폴로지의 맵을 생성합니다. 이러한 맵을 사용하면 성능을 개선하고 인사이트를 얻고 문제 해결에 도움을 받을 수 있습니다. 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)는 워크로드에서 애플리케이션의 맵을 생성할 수 있습니다. 

 **구현 계획의 작업 수준:** 중간. 트랜잭션 트레이스를 구현하려면 어느 정도의 개발 작업이 필요할 수 있습니다. 

## 리소스
<a name="resources"></a>

 **관련 모범 사례:** 
+  [OPS04-BP01 애플리케이션 텔레메트리 구현](ops_telemetry_application_telemetry.md) - 애플리케이션 텔레메트리를 먼저 구현해야 하며 여기에는 트랜잭션 추적 기능과 처리가 포함됩니다. 

 **관련 문서:** 
+ [Discover application issues and get notifications with AWS X-Ray Insights](https://aws.amazon.com/blogs/mt/discover-application-issues-get-notifications-aws-x-ray-insights/)(AWS X-Ray Insights로 애플리케이션 문제를 발견하고 알림 받기)
+ [How Wealthfront utilizes AWS X-Ray to analyze and debug distributed applications](https://aws.amazon.com/blogs/mt/wealthfront-utilizes-aws-x-ray-analyze-debug-distributed-applications/)(Wealthfront가 AWS X-Ray를 활용하여 분산 애플리케이션을 분석하고 디버그하는 방법)
+ [New for AWS Distro for OpenTelemetry – Tracing Support is Now Generally Available](https://aws.amazon.com/blogs/aws/new-for-aws-distro-for-opentelemetry-tracing-support-is-now-generally-available/)(AWS Distro for OpenTelemetry의 새로운 기능 - 추적 지원 이제 정식 출시)

 **관련 동영상:** 
+ [AWS re:Invent 2018: Deep Dive into AWS X-Ray: Monitor Modern Applications (DEV324)](https://www.youtube.com/watch?v=5MQkX57eTh8)(AWS re:Invent 2018: AWS X-Ray 심층 분석: 최신 애플리케이션 모니터링(DEV324))
+ [AWS re:Invent 2022 - Building observable applications with OpenTelemetry (BOA310)](https://www.youtube.com/watch?v=efk8XFJrW2c)(AWS re:Invent 2022 - OpenTelemetry로 관측 가능한 애플리케이션 구축(BOA310))
+ [AWS re:Invent 2022 - Observability the open-source way(COP301-R)](https://www.youtube.com/watch?v=2IJPpdp9xU0)(AWS re:Invent 2022 - 오픈 소스 방식의 관측성(COP301-R))
+ [Capturing Trace Data with the AWS Distro for OpenTelemetry](https://www.youtube.com/watch?v=837NtV0McOA)(AWS Distro for OpenTelemetry로 트레이스 데이터 캡처)
+ [Optimize Application Performance with AWS X-Ray](https://www.youtube.com/watch?v=5lIdNrrO_o8)(AWS X-Ray로 애플리케이션 성능 최적화)

 **관련 예시:** 
+ [AWS X-Ray 다중 API Gateway 추적 예 ](https://github.com/aws-samples/aws-xray-multi-api-gateway-tracing-example)

 **관련 서비스:** 
+  [AWS Distro for OpenTelemetry](https://aws-otel.github.io/) 
+  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 