X-Ray라는 제품군을 보면서 Zipkin과 같이 APIM을 위한 제품이라는 생각을 들었다. 수집은 기본이고 트레이싱을 수행하여 각 구간별 퍼포먼스를 확인할 수 있도록 도와주는 제품으로 이해하면 좋다. APM을 써보신 분들이라면 API 영역도 쉽게 커버할 수 있도록 상향된 제품이라고 생각하면 되겠다.
Zipkin이나 APM툴들을 직접 어플리케이션에 적용해보신 분들은 아시겠지만, 언어에 맞게 SDK를 설치해야 한다.
동작하는 아키텍처는 다음과 같다.
1. 어플리케이션에 적용된 X-Ray 컴포넌트가 레코딩을 하여 로그를 생성한다.
2. 실시간으로 해당로그를 X-Ray 서버에 보내게 되면 오히려 성능상의 부하를 초래할 수 있으므로 로컬에 설치된 X-Ray데몬에 일정량을 적재한다.
3. X-Ray 데몬이 X-Ray 서버에 주기적으로 로그를 전송한다.
언어별 적용하는 SDK 레포지토리는 다음과 같다.
Python — https://github.com/aws/aws-xray-sdk-python
Ruby — https://github.com/aws/aws-xray-sdk-ruby
.NET — https://github.com/aws/aws-xray-sdk-dotnet
Java — https://github.com/aws/aws-xray-sdk-java
Node.js — https://github.com/aws/aws-xray-sdk-node
Go — https://github.com/aws/aws-xray-sdk-go
예시로 Python SDK와 Flask를 기준은 다음과 같다. 우선 aws-xray-sdk-python 라이브러리를 설치
(venv) $ pip install aws-xray-sdk
이제 SDK를 Flask 어플리케이션과 연동하는 것은 꽤 간단합니다. service 와 dynamic_naming 인자로는 각자 적당한 값을 입력해주면 됩니다. 차후 이 이름으로 AWS X-Ray 에서 개별 서비스 컴포넌트를 식별하게 됩니다.
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.ext.flask.middleware import XRayMiddlewareapp = Flask(__name__)
xray_recorder.configure(
daemon_address='127.0.0.1:3000',
service='zeroweb-sample',
dynamic_naming='*zeroweb.kr')
XRayMiddleWare(app, xray_recorder)
모니터링만 하면 의미없고 이걸 관리자나 개발자에게 실시간으로 Notification 해줘야 한다.
자세한 내용은 아래 링크를 참조바란다.
Using Amazon CloudWatch and Amazon SNS to Notify when AWS X-Ray Detects Elevated Levels of Latency, Errors, and Faults in Your A
AWS X-Ray helps developers analyze and debug production applications built using microservices or serverless architectures and quantify customer impact. With X-Ray, you can understand how your application and its underlying services are performing and iden
aws.amazon.com
'IaaS > 퍼블릭클라우드' 카테고리의 다른 글
(AWS) Tag를 어떻게 관리해야할까 (0) | 2022.03.17 |
---|---|
(AWS) AWS리소스에 ElasticSearch를 적용하는 UseCases (0) | 2022.03.17 |
(AWS) S3 버킷에 Event Trigger를 생성하기 (0) | 2022.03.16 |
(AWS) Log의 종류에 대해 알아보자 (0) | 2022.03.15 |
(AWS) CloudWatch Filter를 사용하여 향상된 로그 관리 (0) | 2022.03.15 |