파이썬 Zappa를 사용하여 AWS DynamoDB를 통한 실시간 데이터 처리 애플리케이션 구축하기

Zappa logo

AWS DynamoDB는 빠르고 확장 가능한 NoSQL 데이터베이스로, 대규모 실시간 데이터 처리에 적합한 솔루션입니다. 이번 포스트에서는 파이썬 프레임워크인 Zappa를 활용하여 DynamoDB를 사용하는 실시간 데이터 처리 애플리케이션을 구축하는 방법을 알아보겠습니다.

1. Zappa 프로젝트 설정

Zappa는 서버리스 아키텍처를 쉽게 구축할 수 있게 도와주는 도구입니다. 먼저 Zappa를 설치하고, 새로운 프로젝트를 설정해보겠습니다.

pip install zappa

새로운 디렉토리를 생성하고, 해당 디렉토리로 이동한 후에 다음 명령어를 실행하여 Zappa 프로젝트를 설정합니다.

zappa init

이 명령어는 zappa_settings.json 파일을 생성하고, AWS 환경 설정 등을 진행합니다.

2. DynamoDB 설정

다음으로는 DynamoDB 테이블을 생성하고, 애플리케이션에서 데이터를 저장하도록 설정해야 합니다. AWS 콘솔을 통해 DynamoDB 테이블을 생성하고, 해당 테이블의 ARN(Amazon Resource Name)을 기록하세요.

3. 애플리케이션 코드 작성

애플리케이션 코드를 작성해보겠습니다. 이 예시에서는 Flask 웹 프레임워크를 사용하여 간단한 API를 작성합니다. 다음과 같은 코드를 작성하세요.

from flask import Flask, request
import boto3

app = Flask(__name__)
dynamodb = boto3.resource('dynamodb')
table_name = 'your-dynamodb-table-name'
table = dynamodb.Table(table_name)

@app.route('/api/data', methods=['POST'])
def save_data():
    data = request.json
    
    response = table.put_item(Item=data)
    if response['ResponseMetadata']['HTTPStatusCode'] == 200:
        return 'Data saved successfully.'
    else:
        return 'Failed to save data.'

if __name__ == '__main__':
    app.run()

위 코드는 POST 요청을 받아들여 DynamoDB에 데이터를 저장하는 간단한 API를 구현한 예시입니다. 위 코드의 your-dynamodb-table-name 부분을 생성한 DynamoDB 테이블의 이름으로 바꿔주세요.

4. Zappa 배포

이제 Zappa를 사용하여 애플리케이션을 배포합니다. 다음 명령어를 실행하여 배포를 진행하세요.

zappa deploy

Zappa는 배포를 위해 AWS Lambda와 API Gateway를 자동으로 생성하고 구성합니다.

5. 테스트

마지막으로, 배포된 애플리케이션을 테스트해봅니다. POST 요청을 통해 데이터를 전송해보고, DynamoDB에 데이터가 정상적으로 저장되는지 확인하세요.

curl -X POST -H "Content-Type: application/json" -d '{"data": "example data"}' <API_URL>

위 명령어에서 <API_URL> 부분을 Zappa의 배포 결과로 출력되는 URL로 변경해주세요.

마무리

이제 AWS DynamoDB와 파이썬 Zappa를 사용하여 실시간 데이터 처리 애플리케이션을 구축하는 방법에 대해 알아보았습니다. Zappa의 편리한 배포 기능과 DynamoDB의 확장성이라는 장점을 살려, 다양한 실시간 데이터 처리 애플리케이션을 구축해보세요!

#python #AWS #DynamoDB #Zappa #데이터처리 #애플리케이션