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

소개

이벤트 기반 아키텍처는 다양한 서비스 간에 이벤트 기반 통신을 통해 효율적인 비동기 협업을 가능하게 해주는 아키텍처 패턴입니다. AWS Lambda와 EventBridge는 AWS에서 제공하는 서비스 중에서 이벤트 기반 아키텍처를 구현하기 위한 강력한 도구입니다.

이번 블로그에서는 Python을 사용하여 AWS Lambda와 EventBridge를 활용하여 간단한 이벤트 기반 아키텍처를 구현하는 방법에 대해 알아보겠습니다.

AWS Lambda

AWS Lambda는 이벤트 기반으로 동작하는 서버리스 컴퓨팅 서비스입니다. Lambda 함수는 특정 이벤트가 발생할 때만 실행되며, 실행되는 컴퓨팅 리소스를 신경쓰지 않고 코드를 실행할 수 있습니다.

Lambda 함수 작성하기

다음은 간단한 예제 Lambda 함수 코드입니다.

import json

def lambda_handler(event, context):
    # Event를 JSON 문자열로 변환하여 출력
    print(json.dumps(event))

    # 이벤트에 대한 처리 로직 작성
    # ...

    return {
        'statusCode': 200,
        'body': 'Lambda function executed successfully!'
    }

위 코드는 Lambda 함수가 실행될 때, 이벤트를 JSON 문자열로 변환하여 출력하고, 이후 이벤트에 대한 처리 로직을 작성하는 기본적인 예제입니다.

Lambda 함수 배포하기

위의 Lambda 함수를 배포하기 위해서는 AWS Management Console이나 AWS CLI를 사용할 수 있습니다. 아래는 AWS CLI를 사용한 Lambda 함수 배포 예제입니다.

aws lambda create-function \
--function-name my-function \
--runtime python3.8 \
--handler lambda_function.lambda_handler \
--zip-file fileb://my-function.zip \
--role <IAM_ROLE_ARN>

AWS EventBridge

AWS EventBridge는 다양한 이벤트 발생원과 이벤트 수신자를 연결하여 비동기적으로 이벤트를 라우팅하고 처리하는 서비스입니다. EventBridge는 다양한 AWS 서비스 및 외부 서비스와 통합할 수 있어 다양한 소스에서 이벤트를 가져와 다양한 대상으로 전달할 수 있는 유연한 이벤트 버스 역할을 수행합니다.

EventBridge 규칙 생성하기

EventBridge 규칙은 특정 이벤트를 필터링하여 원하는 이벤트를 정확한 대상에게 전달할 수 있게 해줍니다. 아래는 EventBridge 규칙 생성 예제입니다.

aws events put-rule \
--name my-rule \
--event-pattern "{\"source\": [\"my-source\"], \"detail-type\": [\"my-event\"]}" \
--state ENABLED \
--targets "Id"="my-target","Arn"="arn:aws:lambda:us-west-2:123456789012:function:my-function"

위 예제에서는 my-source라는 소스에서 발생한 my-event라는 이벤트를 Lambda 함수인 my-function에게 전달하는 EventBridge 규칙을 생성하는 명령어입니다.

EventBridge 이벤트 넣기

EventBridge 규칙에 의해 트리거되기를 기다리는 이벤트를 생성하여 삽입할 수 있습니다. 아래는 EventBridge 이벤트를 넣는 예제입니다.

aws events put-events \
--entries '[{"Source": "my-source", "DetailType": "my-event", "Detail": "{\"key\": \"value\"}"}]'

위 예제에서는 my-source라는 소스에서 발생한 my-event라는 이벤트를 생성하고, 해당 이벤트의 세부 정보로 {"key": "value"} JSON을 전달하는 명령어입니다.

이벤트 기반 아키텍처 구현하기

이제 위에서 작성한 Lambda 함수와 EventBridge 규칙을 사용하여 간단한 이벤트 기반 아키텍처를 구현해보겠습니다.

구성 요소

이벤트 기반 아키텍처 구현 과정

  1. Lambda 함수 작성하기: 위에서 소개한 Lambda 함수 코드를 작성합니다.
  2. Lambda 함수 배포하기: AWS CLI를 사용하여 Lambda 함수를 배포합니다.
  3. EventBridge 규칙 생성하기: AWS CLI를 사용하여 EventBridge 규칙을 생성합니다.
  4. 이벤트 넣기: AWS CLI를 사용하여 트리거를 기다리는 이벤트를 생성합니다.

간단히 설명하면, Lambda 함수를 만들고 배포한 후에 EventBridge 규칙을 생성하여 Lambda 함수를 트리거할 이벤트를 지정합니다. 그리고 생성한 EventBridge 규칙에 의해 트리거되기를 기다리는 이벤트를 생성하여 넣으면 Lambda 함수가 실행됩니다.

결론

AWS Lambda와 EventBridge를 활용한 이벤트 기반 아키텍처를 구현하는 방법에 대해 알아보았습니다. 이벤트 기반 아키텍처는 서비스 간의 효율적인 통신을 가능하게 하여 확장성과 유연성을 높일 수 있습니다. AWS의 서버리스 서비스들을 적절히 활용하여 이벤트 기반 아키텍처를 구축하면 더욱 효과적인 애플리케이션을 구현할 수 있습니다.