Lambda 워크플로 및 이벤트 관리
Lambda로 서버리스 애플리케이션을 구축할 때 함수 실행을 오케스트레이션하고 이벤트를 처리할 방법이 필요한 경우가 많습니다. AWS에서는 Lambda 함수를 조정하는 데 도움이 되는 여러 방법을 제공합니다.
-
Lambda 내에서 코드 우선 워크플로 오케스트레이션에 사용하는 Lambda 지속성 함수
-
여러 서비스에서 걸친 시각적 워크플로 오케스트레이션에 사용하는 AWS Step Functions
-
이벤트 기반 아키텍처 및 일정 예약에 사용하는 Amazon EventBridge Scheduler 및 Amazon EventBridge
이러한 방법을 통합할 수도 있습니다. 예를 들어 EventBridge Scheduler를 사용하여 특정 이벤트가 발생할 때 지속성 함수 또는 Step Functions 워크플로를 트리거하거나 정의된 실행 시점에 EventBridge Scheduler에 이벤트를 게시하도록 워크플로를 구성할 수 있습니다. 이 섹션의 다음 주제에서는 이러한 오케스트레이션 옵션을 사용하는 방법과 관련한 상세한 정보를 제공합니다.
지속성 함수를 사용하는 코드 우선 오케스트레이션
Lambda 지속성 함수는 워크플로 오케스트레이션에 코드 우선 접근 방식을 제공하고, Lambda 함수 내에서 직접 상태 저장 장기 실행 워크플로를 구축할 수 있습니다. 외부 오케스트레이션 서비스와 달리 지속성 함수는 워크플로 로직을 코드로 유지하므로 비즈니스 로직과 함께 더욱 쉬운 버전 관리, 테스트 및 유지 관리가 가능합니다.
지속성 함수가 적합한 경우는 다음과 같습니다.
-
코드 우선 워크플로 정의: JSON 또는 시각적 디자이너가 아닌 익숙한 프로그래밍 언어를 사용하여 워크플로 정의
-
장기 실행 프로세스: 표준 Lambda 함수의 15분 제한을 크게 초과하여 최대 1년 동안 실행할 수 있는 워크플로 실행
-
개발 간소화: 워크플로 로직 및 비즈니스 로직을 동일한 코드베이스에 유지하여 간편하게 유지 관리 및 테스트 실시
-
비용 효율적인 대기: 컴퓨팅 리소스를 소비하지 않고 대기 상태에서 실행 일시 중지
-
기본 상태 관리: 외부 스토리지 구성 없이 자동 체크포인트 지정 및 상태 지속
지속성 함수와 Step Functions 중에서 선택
지속성 함수와 Step Functions는 모두 워크플로 오케스트레이션 기능을 제공하지만 사용 사례는 서로 다릅니다.
| 고려 사항 | 지속성 함수 | Step Functions |
|---|---|---|
| 워크플로 정의 | 코드 우선(JavaScript, Python, Java) | JSON 기반 Amazon States Language 또는 시각적 디자이너 |
| 개발 접근 방식 | 비즈니스 로직이 포함된 단일 코드베이스 | 별도의 워크플로 정의 및 함수 코드 |
| 서비스 통합 | Lambda 함수 코드 및 AWS SDK 활용 | 여러 AWS 서비스와의 네이티브 통합 |
| 실행 기간 | 최대 1년 | 최대 1년(Standard), 5분(Express) |
| 병렬 처리 | Promise.all() 및 코드 기반 패턴 | 병렬 상태 및 Distributed Map |
| 오류 처리 | try-catch 블록 및 사용자 지정 retry 로직 | 기본 제공 retry 및 catch 상태 |
| 시각적 모니터링 | CloudWatch 로그 및 사용자 지정 대시보드 | 시각적 실행 그래프 및 세부 내역 |
| 최적의 용도 | 개발자 중심 워크플로, 복잡한 비즈니스 로직, 신속 프로토타입 생성 | 다중 서비스 오케스트레이션, 시각적 워크플로, 엔터프라이즈 거버넌스 |
지속성 함수를 사용하는 경우:
-
팀이 코드 우선 개발 접근 방식을 선호함
-
워크플로 로직이 비즈니스 로직과 긴밀하게 결합됨
-
신속한 프로토타입 생성 및 반복이 필요함
-
워크플로에 주로 Lambda 함수 및 간단한 서비스 호출이 포함됨
Step Functions를 사용하는 경우:
-
시각적 워크플로 설계 및 모니터링이 필요함
-
워크플로가 여러 AWS 서비스를 광범위하게 오케스트레이션함
-
엔터프라이즈 거버넌스 및 규정 준수 기능이 필요함
-
기술과 관련되지 않은 이해관계자가 워크플로 로직을 이해해야 함
지속성 함수에 대한 자세한 내용은 Durable functions for Lambda 페이지를 참조하세요.
Step Functions를 사용하여 워크플로 오케스트레이션
AWS Step Functions는 여러 Lambda 함수 및 기타 AWS 서비스를 구조화된 워크플로로 조정하는 데 도움이 되는 워크플로 오케스트레이션 서비스입니다. 이러한 워크플로는 상태를 유지하고, 정교한 재시도 메커니즘으로 오류를 처리하고, 대규모로 데이터를 처리할 수 있습니다.
Step Functions는 다양한 오케스트레이션 요구 사항을 충족하는 두 가지 워크플로 유형을 제공합니다.
- 표준 워크플로
-
정확히 1회 실행 의미 체계가 필요한 장기 실행 및 감사 가능한 워크플로에 적합합니다. 표준 워크플로는 최대 1년 동안 실행되고, 자세한 실행 기록을 제공하고, 시각적 디버깅을 지원할 수 있습니다. 주문 이행, 데이터 처리 파이프라인, 다단계 분석 작업과 같은 프로세스에 적합합니다.
- Express 워크플로
-
이벤트 발생률이 높은 단기 워크로드용으로 설계되었으며 최소 1회 실행 의미 체계가 적용됩니다. Express 워크플로는 최대 5분 동안 실행할 수 있으며 대용량 이벤트 처리, 스트리밍 데이터 변환 또는 IoT 데이터 수집 시나리오에 적합합니다. 표준 워크플로에 비해 처리량이 높고 비용이 낮을 수 있습니다.
참고
Step Functions 워크플로 유형에 대한 자세한 내용은 Choosing workflow type in Step Functions를 참조하세요.
이러한 워크플로에서 Step Functions는 병렬 처리를 위한 두 가지 맵 상태 유형을 제공합니다.
- Inline Map
-
상위 워크플로의 실행 기록 내에서 JSON 배열의 항목을 처리합니다. Inline Map은 최대 40회의 동시 반복을 지원하며, 소규모 데이터세트 또는 단일 실행 내에서 모든 처리를 유지해야 하는 경우에 적합합니다. 자세한 내용은 Using Map state in Inline mode를 참조하세요.
- Distributed Map
-
256KiB를 초과하거나 40회 이상의 동시 반복이 필요한 데이터세트를 반복하여 대규모 병렬 워크로드를 처리할 수 있습니다. 최대 10,000개의 병렬 하위 워크플로 실행을 지원하는 Distributed Map은 JSON 또는 CSV 파일과 같이 Amazon S3에 저장된 반정형 데이터를 처리하는 데 탁월하므로 배치 처리 및 ETL 작업에 적합합니다. 자세한 내용은 Using Map state in Distributed mode를 참조하세요.
Step Functions는 이러한 워크플로 유형과 맵 상태를 결합하여 소규모 작업에서 대규모 데이터 처리 파이프라인에 이르기까지 복잡한 서버리스 애플리케이션을 오케스트레이션하는 유연하고 강력한 도구 세트를 제공합니다.
Step Functions에서 Lambda 사용을 시작하려면 Step Functions로 Lambda 함수 오케스트레이션을 참조하세요.
EventBridge 및 EventBridge Scheduler를 사용하여 이벤트 관리
Amazon EventBridge는 이벤트 기반 아키텍처 빌드에 도움이 되는 이벤트 버스 서비스입니다. AWS 서비스, 통합 애플리케이션, 서비스형 소프트웨어(SaaS) 애플리케이션 간에 이벤트를 라우팅합니다. EventBridge Scheduler는 하나의 중앙 서비스에서 작업을 생성, 실행, 관리할 수 있는 서버리스 스케줄러로, cron 및 rate 표현식을 사용하여 일정에 따라 Lambda 함수를 간접 호출하거나 일회성 간접 호출을 구성할 수 있습니다.
Amazon EventBridge 및 EventBridge Scheduler는 Lambda를 사용하여 이벤트 기반 아키텍처를 빌드하는 데 도움이 됩니다. EventBridge는 AWS 서비스, 통합 애플리케이션, SaaS 애플리케이션 간에 이벤트를 라우팅하는 반면, EventBridge Scheduler는 반복 또는 일회성으로 Lambda 함수를 간접 호출하는 구체적인 예약 기능을 제공합니다.
이러한 서비스는 Lambda 함수 작업을 위한 몇 가지 주요 기능을 제공합니다.
-
EventBridge를 사용하여 이벤트를 일치시키고 Lambda 함수로 라우팅하는 규칙 생성
-
EventBridge Scheduler의 cron 및 rate 표현식을 사용하여 함수의 반복 간접 호출 설정
-
특정 날짜 및 시간에 함수의 일회성 간접 호출 구성
-
예약된 간접 호출에 대해 유연한 기간 및 재시도 정책 정의
자세한 내용은 일정에 따라 Lambda 함수 간접 호출 섹션을 참조하세요.