[파이썬] AWS Lambda와 CloudFormation을 통한 서버리스 애플리케이션 배포

서버리스 애플리케이션이란?

서버리스 애플리케이션이란, 전통적인 서버 기반의 애플리케이션과 달리 서버 인프라를 직접 관리하지 않고, 클라우드 환경에서 코드를 실행하는 방식을 말합니다. 이는 개발자가 서버의 프로비저닝, 관리, 확장 등에 신경 쓰지 않고, 애플리케이션의 핵심 로직에 집중할 수 있도록 해줍니다.

AWS Lambda

AWS Lambda는 Amazon Web Services(AWS)의 서버리스 컴퓨팅 서비스로, 작고 독립적인 함수로 애플리케이션 코드를 실행하는 역할을 합니다. 사용자는 Lambda 함수를 작성하고, 특정 이벤트가 발생할 때마다 Lambda 함수가 실행되도록 트리거를 구성할 수 있습니다. Lambda 함수는 서버 인스턴스나 컨테이너를 프로비저닝하거나 관리할 필요 없이 빠르게 확장하며, 트래픽에 따라 자동으로 요금이 책정됩니다.

CloudFormation

CloudFormation은 AWS에서 제공하는 인프라스트럭처를 코드로 관리하기 위한 서비스입니다. CloudFormation을 사용하면 JSON 또는 YAML 형식의 템플릿을 작성하여 인프라 리소스를 정의하고 배포할 수 있습니다. 이를 통해 반복적이고 일관성 없는 수동 작업들을 자동화하고, 스택을 통해 리소스를 관리하고 추적할 수 있습니다.

Lambda와 CloudFormation을 함께 사용하기

Lambda와 CloudFormation을 함께 사용하면, 서버리스 애플리케이션을 배포하는데 효율적인 방법을 제공합니다. Lambda 함수와 함수에 필요한 리소스들을 CloudFormation 템플릿에 정의하면, 애플리케이션을 구성하는 모든 리소스를 한 번에 만들 수 있습니다.

CloudFormation 템플릿 예시

아래 예시는 Python으로 작성된 Lambda 함수와 함께 CloudFormation 템플릿을 사용하는 방법을 나타냅니다.

Resources:
  MyLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: MyFunction
      Runtime: python3.8
      Handler: lambda_function.handler
      Code:
        S3Bucket: my-bucket
        S3Key: my-function.zip
      Description: My Lambda Function
      MemorySize: 128
      Timeout: 30
  
  MyLambdaPermission:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref MyLambdaFunction
      Action: lambda:InvokeFunction
      Principal: apigateway.amazonaws.com
      SourceArn: !Sub "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${MyRestApi}/*/*/*"

  MyRestApi:
    Type: AWS::ApiGateway::RestApi
    Properties:
      Name: MyAPI

위의 예시는 MyLambdaFunction이라는 Lambda 함수와 해당 함수를 트리거하는 MyRestApi라는 API Gateway 리소스를 생성합니다. 이렇게 간단한 템플릿을 작성하여 애플리케이션을 구성할 수 있습니다.

서버리스 애플리케이션을 배포할 때는 CloudFormation 스택을 생성하고 관리하는 것이 좋습니다. 변경사항을 추적하고 롤백할 수 있으며, 템플릿을 재사용하여 개발과 운영 사이클을 단순화할 수 있습니다.

AWS Lambda와 CloudFormation의 조합은 서버리스 애플리케이션 개발과 배포를 효율적이고 간단하게 만들어줍니다. 서버 관리 없이 애플리케이션 로직에 집중하고자 한다면, Lambda와 CloudFormation을 사용하여 서버리스 아키텍처를 구축해보세요.