

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 서버리스 환경에 배포된 웹 프레임워크 구성
<a name="xray-sdk-python-serverless"></a>

**참고**  
X-Ray SDK/데몬 유지 관리 공지 - 2026년 2월 25일에 AWS X-Ray SDKs/데몬은 유지 관리 모드로 전환되며, 여기서 AWS 는 보안 문제만 해결하도록 X-Ray SDK 및 데몬 릴리스를 제한합니다. 지원 일정에 대한 자세한 내용은 [X-Ray SDK 및 데몬 지원 타임라인](xray-sdk-daemon-timeline.md) 섹션을 참조하세요. OpenTelemetry로 마이그레이션하는 것이 좋습니다. OpenTelemetry로 마이그레이션하는 방법에 대한 자세한 내용은 [X-Ray 계측에서 OpenTelemetry 계측으로 마이그레이션](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html)을 참조하세요.

Python용 AWS X-Ray SDK는 서버리스 애플리케이션에 배포된 웹 프레임워크 계측을 지원합니다. 서버리스는 운영상의 책임을 AWS로 전환하여 민첩성과 혁신을 높일 수 있도록 하는 클라우드의 네이티브 아키텍처입니다.

서버리스 아키텍처는 서버를 고려하지 않고 애플리케이션 및 서비스를 구축하고 실행할 수 있게 해주는 소프트웨어 애플리케이션입니다. 서버 또는 클러스터 프로비저닝, 패치 적용, 운영 체제 유지 관리 및 용량 프로비저닝과 같은 인프라 관리 작업을 덜어냅니다. 거의 모든 유형의 애플리케이션 또는 백엔드 서비스를 서버리스 솔루션으로 구축할 수 있으며, 애플리케이션을 고가용성으로 실행하고 확장하는 데 필요한 모든 사항이 자동으로 처리됩니다.

이 자습서에서는 서버리스 환경에 배포된 Flask 또는 Django와 같은 웹 프레임워크 AWS X-Ray 에서를 자동으로 계측하는 방법을 보여줍니다. 애플리케이션의 X-Ray 계측을 사용하면 Amazon API Gateway에서 시작하여 AWS Lambda 함수를 통해 수행된 모든 다운스트림 호출과 애플리케이션이 수행한 발신 호출을 볼 수 있습니다.

Python용 X-Ray SDK는 다음 Python 애플리케이션 프레임워크를 지원합니다.
+ Flask 버전 0.8 이상
+ Django 버전 1.0 이상

이 튜토리얼에서는 Lambda에 배포되고 API Gateway에서 호출되는 서버리스 애플리케이션 예시를 개발합니다. 이 튜토리얼에서는 Zappa를 사용하여 애플리케이션을 Lambda에 자동으로 배포하고 API 게이트웨이 엔드포인트를 구성합니다.

## 사전 조건
<a name="xray-sdk-python-serverless-prereqs"></a>
+ [Zappa](https://github.com/Miserlou/Zappa)
+ [Python](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html) – 버전 2.7 또는 3.6.
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) - AWS CLI 가 계정으로 구성되어 있고 애플리케이션을 배포할 AWS 리전 것인지 확인합니다.
+ [Pip](https://pypi.org/project/pip/)
+ [Virtualenv](https://virtualenv.pypa.io/en/latest/)

## 단계 1: 환경 조성
<a name="xray-sdk-python-serverless-environment"></a>

이 단계에서는 `virtualenv`를 사용하여 애플리케이션을 호스팅할 가상 환경을 만듭니다.

1. 를 사용하여 애플리케이션의 디렉터리를 AWS CLI생성합니다. 그런 다음 새 디렉터리로 변경합니다.

   ```
   mkdir {{serverless_application}}
   cd {{serverless_application}}
   ```

1. 다음에는 새 디렉터리에서 가상 환경을 생성합니다. 다음 명령을 사용하여 활성화합니다.

   ```
   # Create our virtual environment
   virtualenv {{serverless_env}}
   
   # Activate it
   source {{serverless_env}}/bin/activate
   ```

1. 환경에 X-Ray, Flask, Zappa 및 Requests 라이브러리를 설치합니다.

   ```
   # Install X-Ray, Flask, Zappa, and Requests into your environment
   pip install aws-xray-sdk flask zappa requests
   ```

1. `serverless_application` 디렉터리에 애플리케이션 코드를 추가합니다. 이 예제에서는 Flasks의 [Hello World](https://flask.palletsprojects.com/en/3.0.x/quickstart/) 예제를 빌드합니다.

   `serverless_application` 디렉터리에서 `my_app.py`라는 파일 만듭니다. 그런 다음 텍스트 편집기를 사용하여 다음 명령을 추가합니다. 이 애플리케이션은 Requests 라이브러리를 계측하고, Flask 애플리케이션의 미들웨어를 패치하고, 엔드포인트 `'/'`를 엽니다.

   ```
   # Import the X-Ray modules
   from aws_xray_sdk.ext.flask.middleware import XRayMiddleware
   from aws_xray_sdk.core import patcher, xray_recorder
   from flask import Flask
   import requests
   
   # Patch the requests module to enable automatic instrumentation
   patcher.patch(('requests',))
   
   app = Flask(__name__)
   
   # Configure the X-Ray recorder to generate segments with our service name
   xray_recorder.configure(service='{{My First Serverless App}}')
   
   # Instrument the Flask application
   XRayMiddleware(app, xray_recorder)
    
   @app.route('/')
   def hello_world():
       resp = requests.get("https://aws.amazon.com")
       return 'Hello, World: %s' % resp.url
   ```

## 2단계: Zappa 환경 생성 및 배포
<a name="xray-sdk-python-serverless-zappa"></a>

이 단계에서는 Zappa를 사용하여 자동으로 API 게이트웨이 엔드포인트를 구성한 후 Lambda에 배포합니다.

1. `serverless_application` 디렉터리에서 Zappa를 실행합니다. 이 예제에서는 기본 설정을 사용했지만, 기본 설정을 사용자 지정할 경우 Zappa가 구성 지침을 표시합니다.

   ```
   zappa init
   ```

   ```
   What do you want to call this environment (default 'dev'): {{dev}}
   ...
   What do you want to call your bucket? (default 'zappa-*******'): {{zappa-*******}}
   ...
   ...
   It looks like this is a Flask application.
   What's the modular path to your app's function?
   This will likely be something like 'your_module.app'.
   We discovered: my_app.app
   Where is your app's function? (default 'my_app.app'): {{my_app.app}}
   ...
   Would you like to deploy this application globally? (default 'n') [y/n/(p)rimary]: {{n}}
   ```

1. X-Ray 활성화하기 `zappa_settings.json` 파일을 열고 예제와 비슷한지 확인합니다.

   ```
   {
       "dev": {
           "app_function": "my_app.app",
           "aws_region": "us-west-2",
           "profile_name": "default",
           "project_name": "serverless-exam",
           "runtime": "python2.7",
           "s3_bucket": "zappa-*********"
       }
   }
   ```

1. 구성 파일의 한 항목으로 `"xray_tracing": true`를 추가합니다.

   ```
   {
       "dev": {
           "app_function": "my_app.app",
           "aws_region": "us-west-2",
           "profile_name": "default",
           "project_name": "serverless-exam",
           "runtime": "python2.7",
           "s3_bucket": "zappa-*********",
           "xray_tracing": true
       }
   }
   ```

1.  애플리케이션을 배포합니다. 그러면 자동으로 API 게이트웨이 엔드포인트가 구성되고 코드가 Lambda로 업로드됩니다.

   ```
   zappa deploy
   ```

   ```
   ...
   Deploying API Gateway..
   Deployment complete!: https://**********.execute-api.us-west-2.amazonaws.com/{{dev}}
   ```

## 3단계: API Gateway에 X-Ray 추적 활성화하기
<a name="xray-sdk-python-serverless-xray"></a>

이 단계에서는 API 게이트웨이 콘솔과 상호 작용을 통해 X-Ray 추적을 활성화합니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/apigateway/](https://console.aws.amazon.com/apigateway/) API Gateway 콘솔을 엽니다.

1. 새로 생성한 API를 찾습니다. 이 URL은 `serverless-exam-dev`과 유사해야 합니다.

1. **단계**를 선택합니다.

1. 배포 단계의 이름을 선택합니다. 기본값은 `dev`입니다.

1. **Logs/Tracing(로그/추적)** 탭에서 **Enable X-Ray Tracing(X-Ray 추적 활성화)** 확인란을 선택합니다.

1. **변경 사항 저장(Save Changes)**을 선택합니다.

1. 브라우저에서 엔드포인트에 액세스합니다. 예제 `Hello World` 애플리케이션을 사용한 경우 다음과 같이 표시되어야 합니다.

   ```
   "Hello, World: https://aws.amazon.com/"
   ```

## 4단계: 생성된 추적 보기
<a name="xray-sdk-python-serverless-trace"></a>

이 단계에서는 X-Ray 콘솔과 상호 작용을 통해 예제 애플리케이션이 생성하는 추적을 확인합니다. 추적 분석에 대한 자세한 내용은 [서비스 맵 보기](https://docs.aws.amazon.com/xray/latest/devguide/xray-console.html#xray-console-servicemap)를 참조하십시오.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/xray/home](https://console.aws.amazon.com/xray/home) X-Ray 콘솔을 엽니다.

1. API 게이트웨이, Lambda 함수 및 Lambda 컨테이너에 의해 생성된 세그먼트를 봅니다.

1. Lambda 함수 세그먼트 아래에서 하위 세그먼트 `My First Serverless App`을 봅니다. 그 다음에 두 번째 하위 세그먼트 `https://aws.amazon.com`이 나옵니다.

1. 초기화 시, Lambda가 세 번째 하위 세그먼트 `initialization`도 생성할 수 있습니다.

![추적 세그먼트 보기](http://docs.aws.amazon.com/ko_kr/xray/latest/devguide/images/serverless-traceView.png)


![서비스 그래프 보기](http://docs.aws.amazon.com/ko_kr/xray/latest/devguide/images/serverless-serviceView.png)


## 5단계: 정리
<a name="xray-sdk-python-serverless-cleanup"></a>

원치 않는 비용이 누적되지 않도록 항상 더 이상 사용하지 않는 리소스는 종료하십시오. 이 자습서에서 알 수 있듯이 Zappa와 같은 도구는 서버리스 배포를 간소화합니다.

Lambda, API 게이트웨이 및 Amazon S3에서 애플리케이션을 제거하려면 AWS CLI를 사용하여 프로젝트 디렉터리에서 다음 명령을 실행합니다.

```
zappa undeploy {{dev}}
```

## 다음 단계
<a name="xray-sdk-python-serverless-next"></a>

 AWS 클라이언트를 추가하고 X-Ray로 계측하여 애플리케이션에 더 많은 기능을 추가합니다. [서버리스 온 AWS](https://aws.amazon.com/serverless)에서 서버리스 컴퓨팅 옵션에 대해 자세히 알아보십시오.