본문 바로가기
개발 환경/AWS

[AWS] AWS Step Functions을 이용한 서버리스 워크플로우 구축 (Lambda + S3 + DynamoDB)

by 우주다람쥐 2025. 2. 28.
반응형

개요

AWS Step Functions은 복잡한 비즈니스 로직을 손쉽게 자동화할 수 있도록 돕는 서버리스 오케스트레이션 서비스입니다. Step Functions을 사용하면 Lambda, S3, DynamoDB 등 AWS 서비스 간의 워크플로우를 정의하고 관리할 수 있습니다.

이 글에서는 AWS Step Functions의 개념을 이해하고, JSON 기반의 상태 머신(State Machine)을 구성하여 실제 사용 사례에 적용하는 방법을 살펴보겠습니다.


1. AWS Step Functions 개념

AWS Step Functions은 상태 머신(State Machine) 을 기반으로 한 워크플로우 엔진입니다. 이를 활용하면 서버리스 애플리케이션의 여러 작업을 순차적 또는 병렬적으로 실행할 수 있습니다.

주요 특징

  • 서버리스 오케스트레이션: AWS Lambda, DynamoDB, S3 등과 쉽게 연동
  • 시각적 워크플로우: AWS 콘솔에서 상태 머신의 흐름을 그래픽으로 확인 가능
  • 에러 처리 및 재시도: 내장된 오류 처리 및 자동 재시도 기능 제공
  • 표준(Standard) 및 최적화(Express) 워크플로우 지원
    • Standard: 장기 실행(최대 1년), 높은 신뢰성 필요 시 적합
    • Express: 빠른 응답이 필요한 초고속 처리에 적합

2. AWS Step Functions과 Lambda 연동

Step Functions은 Lambda 함수를 사용하여 서버리스 워크플로우를 실행할 수 있습니다. 다음은 Step Functions과 Lambda를 연동하는 일반적인 과정입니다.

2.1 Lambda 함수 생성

아래는 간단한 Lambda 함수를 생성하는 예제입니다. 이 함수는 주문 정보를 처리하는 역할을 합니다.

exports.handler = async (event) => {
    console.log("Processing order:", event);
    return {
        orderId: event.orderId,
        status: "Processed"
    };
};

이 Lambda 함수는 Step Functions에서 실행되며, 주문 정보를 입력받아 처리한 후 결과를 반환합니다.


3. JSON 기반 상태 머신(State Machine) 구성

AWS Step Functions의 워크플로우는 JSON 형식으로 정의됩니다.

3.1 상태 머신(JSON) 예제

아래는 Lambda 함수를 실행하는 간단한 Step Functions 상태 머신 정의입니다.

{
  "Comment": "주문 처리를 위한 Step Function",
  "StartAt": "ProcessOrder",
  "States": {
    "ProcessOrder": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:ProcessOrder",
      "End": true
    }
  }
}

3.2 주요 구성 요소

  • StartAt: 실행 시작 상태 지정
  • States: 실행될 상태 목록
  • Type: Task: Lambda 함수 실행 지정
  • Resource: 실행할 Lambda 함수 ARN
  • End: 워크플로우 종료 여부 지정

4. 실전 사례: 주문 처리 시스템 구축

AWS Step Functions을 활용하면 주문 처리 시스템을 자동화할 수 있습니다.

4.1 주문 처리 프로세스

  1. 고객이 주문을 생성하면 Step Functions이 실행됨
  2. Lambda가 주문을 처리하고 DynamoDB에 저장
  3. 결제 승인 요청 후 결과 확인
  4. 주문이 완료되면 S3에 영수증 저장

4.2 상태 머신(JSON) 예제

아래는 주문 처리 시스템을 위한 상태 머신 예제입니다.

{
  "Comment": "주문 처리 Step Function",
  "StartAt": "ValidateOrder",
  "States": {
    "ValidateOrder": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:ValidateOrder",
      "Next": "ProcessPayment"
    },
    "ProcessPayment": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:ProcessPayment",
      "Next": "StoreReceipt"
    },
    "StoreReceipt": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:StoreReceipt",
      "End": true
    }
  }
}

4.3 상태 흐름 설명

  1. ValidateOrder: 주문 정보를 검증 (Lambda 실행)
  2. ProcessPayment: 결제 처리 (Lambda 실행)
  3. StoreReceipt: 영수증을 S3에 저장 (Lambda 실행 후 종료)

결론

AWS Step Functions을 사용하면 복잡한 서버리스 워크플로우를 쉽게 자동화할 수 있습니다. 특히 Lambda, S3, DynamoDB와의 통합을 통해 다양한 비즈니스 로직을 구현할 수 있습니다.

핵심 요약

✅ AWS Step Functions을 활용하면 서버리스 애플리케이션의 워크플로우를 쉽게 구성할 수 있다.
✅ JSON 기반의 상태 머신을 사용하여 프로세스를 정의하고 자동화할 수 있다.
✅ Lambda, S3, DynamoDB 등 다양한 AWS 서비스와 연동하여 실전 사례를 구현할 수 있다.

이 가이드를 활용하여 효율적인 서버리스 아키텍처를 구축해보세요! 🚀

반응형

댓글