[파이썬] AWS Lambda와 EventBridge를 활용한 이벤트 기반 아키텍처

서버리스 아키텍처의 인기가 증가함에 따라 AWS Lambda와 EventBridge를 활용하여 이벤트 기반 아키텍처를 구축하는 것은 매우 일반적인 추세입니다. 이러한 아키텍처는 애플리케이션의 확장성과 유연성을 향상시키면서, 이벤트 중심의 통합을 가능하게 합니다.

이벤트 기반 아키텍처란?

이벤트 기반 아키텍처는 수정, 삭제 및 추가 등의 이벤트에 의해 애플리케이션의 다양한 컴포넌트 및 서비스들을 연결하는 방식입니다. 이벤트는 시스템 내에서 발생하는 동작을 나타내며, 다른 컴포넌트나 서비스에게 메시지 형태로 전달됩니다. 이러한 이벤트는 애플리케이션 내에서 비동기적으로 처리되며, 서로 독립적인 컴포넌트 및 서비스 간의 결합도를 낮추어 유연하고 확장 가능한 아키텍처를 구성할 수 있습니다.

AWS Lambda

AWS Lambda는 개발자가 코드를 실행할 수 있도록 하는 서버리스 컴퓨팅 서비스입니다. Lambda는 필요한 리소스를 프로비저닝하지 않고도 코드를 실행하고 스케일링할 수 있는 장점을 제공합니다.

Lambda 함수는 이벤트 기반 아키텍처 내에서 중요한 역할을 수행합니다. 이벤트 소스로부터 데이터를 수신하고, 해당 데이터를 처리하고, 결과를 다른 서비스로 전달합니다. Lambda 함수는 언어에 구애받지 않으며, 예를 들어 Python, Java, JavaScript, Go 등 다양한 언어로 작성할 수 있습니다.

EventBridge

EventBridge는 서버리스 및 클라우드 네이티브 애플리케이션에서 이벤트 중심 아키텍처를 구축하기 위한 완전 관리형 서비스입니다. EventBridge는 이벤트 소스와 이벤트를 소비하는 리소스 간의 중간 매개체 역할을 합니다.

EventBridge는 다양한 이벤트 소스로부터 이벤트를 수신하여, 내장된 룰 및 규칙을 통해 이벤트를 필터링하고 이벤트를 발생시키는 대상에게 전달합니다. 이러한 대상으로는 Lambda 함수, SNS 토픽, SQS 큐 등 이벤트 리스너로서 다양한 서비스가 포함될 수 있습니다.

Python으로 AWS Lambda와 EventBridge 사용하기

아래는 Python을 사용하여 AWS Lambda와 EventBridge를 활용하는 간단한 예제 코드입니다. 이 예제에서는 Lambda 함수가 S3 버킷에 대한 이벤트를 수신하고, 해당 이벤트를 처리하여 콘솔에 로그를 출력합니다.

import json

def lambda_handler(event, context):
    for record in event['Records']:
        bucket_name = record['s3']['bucket']['name']
        object_key = record['s3']['object']['key']
        print(f"Received event for object {object_key} in bucket {bucket_name}")

    return {
        'statusCode': 200,
        'body': json.dumps('Event processed successfully')
    }

위의 코드에서 lambda_handler 함수는 AWS Lambda에 의해 시작되는 핵심 함수입니다. event 매개변수는 이벤트 데이터를 포함하며, 이벤트의 구조는 이벤트 소스에 따라 달라집니다. 이 예제에서는 S3 버킷의 이벤트를 처리하므로 event는 S3 이벤트 데이터를 포함합니다.

lambda_handler 함수는 이벤트 처리 후 결과를 반환해야 합니다. 반환된 결과는 호출자에게 전달되고, 필요에 따라 다른 서비스로 전달될 수 있습니다.

결론

AWS Lambda와 EventBridge를 활용하여 이벤트 기반 아키텍처를 구축하는 것은 유연하고 확장 가능한 애플리케이션 개발에 중요한 역할을 합니다. Lambda 함수는 이벤트 소스로부터 데이터를 처리하고, EventBridge는 이벤트를 중앙에서 관리하여 필요한 대상에게 전달합니다. Python을 사용하여 간단한 예제를 살펴보았지만, 강력한 기능과 다양한 연동 옵션을 제공하는 AWS Lambda와 EventBridge는 다양한 시나리오에 활용될 수 있습니다.