AWS Step Functions FAQ
개요
Q: AWS Step Functions란 무엇인가요?
AWS Step Functions는 시각적 워크플로를 사용하여 분산 애플리케이션과 마이크로서비스의 구성 요소를 손쉽게 조정할 수 있게 해주는 완전관리형 서비스입니다. 각각 기능을 수행하는 개별 구성 요소를 사용하여 애플리케이션을 구축하면 애플리케이션을 더 빠르고 쉽게 확장하거나 변경하는 데 도움이 됩니다.
Step Functions는 애플리케이션의 기능을 통해 구성 요소와 단계를 조정할 수 있는 안정적인 방법입니다. Step Functions에서는 애플리케이션의 구성 요소를 일련의 단계로 배열 및 시각화할 수 있는 그래픽 콘솔을 제공합니다. 그러므로 손쉽게 다단계 애플리케이션을 구축하고 실행할 수 있습니다.
Step Functions가 자동으로 각 단계를 트리거 및 추적하고 오류가 발생할 경우 재시도하므로 애플리케이션이 의도한 대로 올바르게 실행됩니다. Step Functions는 각 단계의 상태를 기록합니다. 따라서 무언가 잘못된 경우 더 빠르게 문제를 진단하고 디버깅할 수 있습니다. 코드를 작성하지 않고 단계를 변경 및 추가할 수 있어 간편하게 애플리케이션을 개선하고 더 빠르게 혁신할 수 있습니다.
Q: 오케스트레이션을 사용하여 애플리케이션을 설계할 때의 이점은 무엇인가요?
애플리케이션을 서비스 구성 요소(또는 단계)로 분할하면 한 구성 요소의 장애로 인해 전체 시스템이 중단되는 일이 발생하지 않습니다. 각 구성 요소는 독립적으로 확장되며, 변경할 때마다 전체 시스템을 다시 배포할 필요 없이 해당 구성 요소를 업데이트할 수 있습니다.
서비스 구성 요소를 조정할 때는 애플리케이션의 논리적 흐름에 따라 실행 종속성 및 일정과 동시성을 관리하는 작업이 포함됩니다. 이러한 애플리케이션에서는 서비스 오케스트레이션을 사용하여 이 작업을 수행하고 장애를 처리할 수 있습니다.
Q: Step Functions의 일반적인 사용 사례는 무엇인가요?
Step Functions는 일련의 단계로 나뉠 수 있는 컴퓨팅 문제 또는 비즈니스 프로세스를 지원합니다. 또한 상호 종속성이 있는 작업을 관리하기 위한 포괄적인 워크플로를 생성하는 데에도 유용합니다. 일반 사용 사례는 다음과 같습니다.
- 데이터 처리: 여러 데이터베이스의 데이터를 통일된 보고서로 통합, 대규모 데이터 세트를 유용한 형식으로 세분화 및 축소, 동시성이 높은 워크플로를 통해 Amazon Simple Storage Service(S3) 버킷의 파일 수백만 개를 반복 및 처리 또는 다단계 분석 및 기계 학습 워크플로 조정
- 서버리스 생성형 AI 애플리케이션 구축: Step Functions를 활용하여 Amazon Bedrock의 파운데이션 모델과의 상호 작용을 조정하고, 프롬프트 체인을 생성하고, 미세 조정하고, 220개 이상의 AWS 서비스의 기능을 강화
- DevOps 및 IT 자동화: 지속적 통합 및 지속적 배포를 위한 도구 구축 또는 인프라의 변경에 자동으로 대응하는 이벤트 중심 애플리케이션 생성
- 전자 상거래: 주문 이행, 재고 추적 등 미션 크리티컬 비즈니스 프로세스 자동화
- 웹 애플리케이션: 강력한 사용자 등록 프로세스와 로그인 인증 구현
Q: AWS Step Functions는 어떻게 작동하나요?
Step Functions를 사용할 때는 워크플로를 일련의 단계, 관계 및 입력과 출력으로 설명하는 상태 머신을 정의합니다. 상태 머신은 다양한 상태를 포함하며, 각 상태는 워크플로 다이어그램의 단계를 나타냅니다.
상태는 작업을 수행하거나 선택하거나 파라미터를 전달하거나 병렬 실행을 시작하거나 제한 시간을 관리하거나 워크플로를 종료(성공 또는 실패)할 수 있습니다.
시각적 콘솔은 자동으로 각 단계를 실행 순서대로 그래프로 표시하여 다단계 애플리케이션을 손쉽게 설계할 수 있습니다. 콘솔은 각 단계의 실시간 상태를 강조 표시하고 모든 실행의 세부 기록을 제공합니다.
자세한 내용은 Step Functions 개발자 안내서에서 Step Functions 작동 방식을 참조하세요.
Q: Step Functions에서 내 리소스에 어떻게 연결하나요?
서비스 통합을 사용하여 AWS 서비스를 오케스트레이션하거나 활동 태스크를 사용하여 자체 관리형 애플리케이션 구성 요소를 오케스트레이션할 수 있습니다.
서비스 통합을 사용하면 AWS 서비스에 대한 호출을 구성하고 그 응답을 워크플로에 포함할 수 있습니다. AWS-SDK 서비스 통합은 워크플로에서 직접 200개 이상의 서비스에서 9,000개 이상의 AWS API 작업을 호출하는 데 도움이 됩니다.
최적화된 서비스 통합은 IAM 정책 생성 및 RunAJob 패턴 등 비동기식 작업의 완료를 자동으로 대기하는 기능을 통해 AWS Lambda, Amazon Elastic Container Service(ECS), AWS Glue 또는 Amazon EMR과 같은 공통 서비스의 사용을 추가로 간소화합니다.
활동 태스크를 사용하면 Amazon Elastic Compute Cloud(EC2), Amazon ECS 또는 모바일 디바이스나 온프레미스 서버 등 선택한 위치에서 실행하는 활동 작업과 통합할 수 있습니다. 활동 작업자는 작업을 위해 Step Functions를 폴링하며, Step Functions에서 입력을 가져오고, 코드를 사용해 작업을 수행하며, 결과를 반환합니다. 활동 작업자가 작업을 요청하는 경우 방화벽 배후에 배포된 작업자를 쉽게 사용할 수 있습니다.
Step Functions 상태 머신은 서비스 통합 및 활동 태스크의 조합을 포함할 수 있습니다. Step Functions 애플리케이션은 데이터 센터에서 실행되는 활동 작업자와 클라우드에서 실행되는 서비스 태스크도 결합할 수 있습니다. 데이터 센터의 작업자는 클라우드 기반 서비스 태스크와 함께 계속 정상적으로 실행됩니다.
Q: Step Functions를 시작하려면 어떻게 해야 하나요?
Step Functions를 시작하는 방법은 여러 가지입니다.
- Step Functions 콘솔에서 샘플 프로젝트 탐색
- Step Functions 개발자 안내서 검토
- 10분 자습서 보기
Q: Step Functions에서는 어떤 언어를 사용하나요?
AWS Step Functions 상태 머신은 선언적 Amazon States Language를 사용하여 JSON에 정의됩니다.
웹 서비스 API를 사용해 Step Functions와 통신할 수 있다면 활동 작업자를 생성하기 위해 프로그래밍 언어를 사용할 수 있습니다.
간편하게 원하는 언어로 AWS SDK를 사용할 수 있습니다. Lambda는 Node.js(JavaScript), Python, Golang(Go), C#(.NET Core 런타임 및 기타 언어 사용)로 작성된 코드를 지원합니다. Lambda 프로그래밍 모델에 대한 자세한 내용은 Lambda 개발자 안내서를 참조하세요.
Q: 워크플로에 Standard Workflows 속성과 Express Workflows 속성이 있습니다. 이 2가지를 모두 활용하려면 어떻게 해야 하나요?
2가지 워크플로 유형을 구성하면 됩니다.
- Express Workflows를 Standard Workflows의 하위 워크플로로 실행: Express Workflows는 상위 오케스트레이션 워크플로의 태스크 상태에서 호출할 수 있고 상위 워크플로에서 전체적으로 성공하거나 실패합니다. 여기에는 해당 태스크의 상위 재시도 정책이 적용됩니다.
- Express Workflows 내에서 Express Workflow를 호출(모든 워크플로는 상위 워크플로의 기간 제한을 초과할 수 없음): 사용 사례에 장기 실행되는 단계나 한 번만 실행되는 단계, 그리고 빠르고 짧게 실행되는 단계가 결합되어 있다면 이런 방식의 워크플로를 고려할 수 있습니다.
Q: Step Functions는 병렬 처리를 어떻게 지원하나요?
Step Functions에는 동적 병렬 처리를 위한 맵 상태가 포함되어 있습니다. 맵 상태에는 인라인과 분산이라는 2가지 운영 모드가 있는데, 이 두 모드는 항목 수집을 위한 동일한 세트의 단계를 실행합니다. 인라인 모드의 맵은 40개의 병렬 브랜치에 해당하는 동시성을 지원할 수 있고 단일 워크플로에서 25만 개 이벤트 또는 약 6,500개의 상태 전환에 해당하는 실행 기록 제한이 있습니다. 분산 모드를 사용하는 경우 최대 만 개의 병렬 브랜치에 해당하는 동시성으로 실행할 수 있습니다. 분산 맵은 Amazon S3에 최적화되어 있기 때문에 S3 버킷의 객체에 대한 반복 작업을 보다 쉽게 수행할 수 있습니다. 통합 섹션의 FAQ를 참조하세요. 분산 맵에서 반복 작업을 수행할 때는 병렬 실행으로 분할됩니다. 따라서 페이로드 및 실행 기록 제한을 극복하는 데 도움이 됩니다. 또한 각 반복을 Standard Workflow(멱등)로 수행할지 Express Workflow(멱등이 아니지만 속도가 빠르고 비용이 저렴함)로 수행할지 여부를 선택할 수 있습니다. 맵 상태에 대해 자세히 알아보세요.
비교
Q: AWS Step Functions와 Amazon Simple Queue Service(SQS)는 각각 언제 사용해야 하나요?
- Step Functions는 애플리케이션의 모든 태스크와 이벤트를 추적합니다. SQS에서는 특히 애플리케이션이 여러 대기열을 사용하는 경우, 애플리케이션 수준 추적을 사용자가 구현해야 합니다.
- Step Functions 콘솔과 가시성 API에서 애플리케이션 중심의 보기가 제공되므로, 특정 실행에 대한 검색, 특정 실행의 상세 정보에 대한 드릴다운, 실행 관리 등을 할 수 있습니다. SQS를 사용할 때는 추가 기능을 구현해야 합니다.
- Step Functions는 애플리케이션 개발에 유용한 몇 가지 기능(태스크 간 데이터 전달, 유연한 태스크 분산 등)을 제공합니다. 반면 SQS를 사용할 때는 애플리케이션 수준 기능을 구현해야 합니다.
- Step Functions에서는 즉시 사용 가능한 기능을 통해 분산 애플리케이션을 조정하는 워크플로를 구축할 수 있습니다. SQS에서는 기본적인 워크플로를 구축할 수 있지만 기능이 제한되어 있습니다.
Q: AWS Step Functions와 Amazon Simple Workflow Service(SWF)는 각각 언제 사용해야 하나요?
Step Functions는 시각적 워크플로를 사용해 좀 더 생산적이고 민첩한 접근 방식으로 애플리케이션 구성 요소를 조정하므로 모든 새로운 애플리케이션에 AWS Step Functions 사용을 고려해야 합니다. 프로세스에 개입할 외부 신호가 필요하거나 결과를 상위 프로세스로 반환하는 하위 프로세스를 시작하려는 경우 Amazon Simple Workflow Service(SWF)를 고려해야 합니다.
SWF를 사용하면 선언형 JSON으로 상태 머신을 작성하는 대신, Decider 프로그램을 작성하여 의사 결정 단계로부터 활동 단계를 분리할 수 있습니다. Amazon SWF는 오케스트레이션 로직에 대한 완벽한 제어를 제공하지만, 애플리케이션 개발의 복잡성을 높입니다. 원하는 프로그래밍 언어로 Decider 프로그램을 작성하거나, Flow Framework를 통해 비동기식 상호 작용을 구성하는 프로그래밍 구문을 사용할 수 있습니다.
Step Functions의 HTTPS 엔드포인트 통합은 Amazon EventBridge API 데스티네이션과 어떤 관련이 있나요?
Amazon EventBridge는 이벤트를 사용하여 애플리케이션 구성 요소를 서로 연결하는 서버리스 서비스로, 개발자가 확장 가능한 이벤트 기반 애플리케이션을 쉽게 구축할 수 있도록 합니다. API 데스티네이션은 EventBridge의 기능으로, 이벤트를 타사 엔드포인트로 전달하여 이벤트 생산자와 소비자를 분리하는 규칙을 생성할 수 있습니다.
AWS Step Functions의 HTTPS 엔드포인트 통합을 통해 HTTPS 기반 서비스를 간접 호출하고 비즈니스 로직에 따라 실행 흐름을 제어하는 데 사용할 수 있는 응답을 받을 수 있습니다. Amazon EventBridge는 라우팅 이벤트에 중점을 두는 반면, Step Functions는 워크플로의 오케스트레이션 및 상태 관리에 중점을 둡니다. EventBridge API 데스티네이션 및 Step Functions의 HTTPS 엔드포인트 통합은 인증을 위한 연결을 지원할 수 있으므로 서비스 전체에서 보안 인증 정보를 재사용할 수 있습니다. 두 서비스를 함께 사용하면 확장성이 뛰어나고 강력한 분산 애플리케이션을 구축할 수 있습니다.
통합
Q: AWS Step Functions는 다른 AWS 서비스와 어떻게 연결되고 조정되나요?
Step Functions에서 생성한 워크플로는 서비스 통합을 사용하여 200개 이상의 AWS 서비스와 연결하고 조정할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다.
- AWS Lambda 함수 호출
- ECS 또는 AWS Fargate 태스크 실행
- Amazon DynamoDB 테이블에서 기존 항목 가져오기 또는 DynamoDB 테이블에 새 항목 입력
- AWS Batch 작업 제출 후 완료 대기
- Amazon Bedrock 파운데이션 모델 간접 호출
- SNS 주제에 메시지 게시
- Amazon SQS 대기열에 메시지 전송
- AWS Glue 작업 실행 시작
- 기계 학습 모델 학습 또는 데이터 세트에서 배치 변환을 위한 Amazon SageMaker 작업 생성
Step Functions를 사용하여 기타 AWS 서비스에 연결하는 방법에 대한 자세한 내용은 Step Functions 개발자 안내서를 참조하세요. 또한 애플리케이션을 실행하는 상태 머신에서 태스크를 생성할 수도 있습니다. FAQ의 개요 섹션에서 Step Functions에서 내 리소스에 어떻게 연결하나요?를 참조하세요.
Step Functions의 가장 일반적인 사용 사례는 상세한 사례와 함께 아키텍처 시각화가 포함되어 있는 사용 사례 페이지를 참조하세요.
Q: Step Functions는 타사 애플리케이션과 어떻게 통합되나요?
AWS Step Functions의 HTTPS 엔드포인트 통합을 사용하면 SaaS 애플리케이션을 비롯한 HTTP 기반 서비스와 직접 통합할 수 있습니다. 시각적 인터페이스를 사용하여 AWS 서비스와 SaaS 애플리케이션으로 구성된 분산 애플리케이션을 구축하고 오케스트레이션할 수 있습니다.
Q: 내 실행을 테스트, 분석 또는 디버깅하려면 어떻게 해야 하나요?
TestState API를 사용하여 워크플로의 단일 단계를 테스트할 수 있으므로 피드백 주기를 단축하여 개발을 가속화할 수 있습니다. TestState를 사용하면 서비스와 엔드포인트를 직접 호출하고, 다양한 시나리오를 모방하도록 입력을 수정하고, 응답을 검토할 수 있습니다. Workflow Studio를 통해 TestState에 액세스할 수 있으므로 워크플로를 배포하지 않고도 빌드하면서 쉽게 테스트할 수 있습니다. TestState는 단일 상태 정의 및 입력을 받은 다음 중간 데이터 변환과 함께 상태 출력을 동기적으로 반환합니다. 워크플로를 실행한 후 Amazon CloudWatch Logs, AWS X-Ray를 통해, 그리고 문제 영역을 신속하게 식별하는 데 도움이 되는 시각적 운영자 환경을 통해 Step Functions 콘솔에서 직접 실행을 분석하고 디버깅할 수 있습니다.
Q: Step Functions는 Amazon S3의 대규모 데이터 세트를 처리하는 데 어떤 도움이 되나요?
분산 모드에서는 맵 상태를 사용하여 로그, 미디어 파일, 판매 거래 또는 IoT 센서 데이터와 같은 대규모 데이터 처리를 수행하는 워크플로를 생성할 수 있습니다. Step Functions에서 항목을 반복하고 병렬 워크플로 실행을 즉시 시작하므로 온디맨드 데이터 처리를 대규모로 구축할 수 있습니다. 분산 맵 상태는 S3 작업에 최적화되었습니다. S3에 저장된 필터 기준, S3 매니페스트 파일, JSON 모음 또는 CSV 파일을 사용하여 S3 버킷을 워크플로의 입력으로 지정할 수 있습니다. 분산 맵의 실행 출력에 대해 S3 버킷을 지정할 수도 있습니다.
Step Functions는 Amazon API Gateway와 어떻게 연동되나요?
Step Functions API를 Amazon API Gateway와 연결할 수 있습니다. 그러면 이러한 API는 HTTPS 요청을 사용자가 정의한 API 메서드로 전송할 때 상태 머신을 호출합니다.
API Gateway API를 사용하여 분산 백엔드 애플리케이션의 구성 요소를 조정하는 Step Functions 상태 머신을 시작하고, 승인 요청 및 응답과 같은 애플리케이션의 단계로 사용자 활동 태스크를 통합할 수 있습니다.
또한 애플리케이션이 사용하는 서비스 API에 대해 서버리스 비동기식 호출을 수행할 수도 있습니다. 자세한 내용은 API 게이트웨이를 사용하여 Step Functions API 생성 자습서를 참조하세요.
Q: AWS Step Functions는 Amazon EventBridge와 어떻게 연동되나요?
코레오그래피와 오케스트레이션은 분산 서비스의 상호 통신 방식에 대한 2가지 모델입니다. 오케스트레이션에서는 통신이 보다 엄격하게 제어됩니다. Step Functions는 오케스트레이션 서비스로, 이 상호 작용과 서비스 호출 순서를 조정합니다.
코레오그래피는 엄격한 제어 없이 통신을 달성합니다. Amazon EventBridge 이벤트를 사용하면 중앙 집중식 조정 없이 서비스 간에 이벤트가 흐릅니다. 코레오그래피와 오케스트레이션은 많은 애플리케이션에서 서로 다른 사용 사례에 사용됩니다.
Step Functions와 EventBridge를 함께 사용할 수 있는 예로는 EventBridge Scheduler를 사용하여 AWS Step Functions 워크플로를 트리거하는 이벤트를 전송하거나 예약을 생성한 다음 워크플로의 다른 단계에서 이벤트를 내보내는 것을 들 수 있습니다.
AWS Step Functions와 AWS Lambda 비교
AWS Step Functions는 서버리스인가요?
Q: Step Functions에 대한 모니터링 및 로깅은 어떻게 작동하나요?
AWS Step Functions는 애플리케이션 모니터링을 위한 지표를 Amazon CloudWatch 및 AWS CloudTrail로 전송합니다. CloudWatch는 AWS Step Functions의 지표를 수집 및 추적하고, 경보를 설정하며, 변경 사항에 자동으로 대응합니다.
CloudTrail은 Step Functions에 대한 모든 API 호출을 이벤트로 캡처합니다(Step Functions 콘솔에서의 호출 및 코드에서 Step Functions API로의 호출 포함). 또한 Step Functions는 워크플로의 통합된 각 서비스에 대한 CloudWatch Events 관리형 규칙을 지원하고, 필요한 경우 AWS 계정으로 CloudWatch Events 규칙을 만들고 관리합니다.
자세한 내용은 Step Functions 개발자 안내서에서 모니터링 및 로깅을 참조하세요.
Q: Express Workflows가 재시도 횟수가 모두 소진되거나 예외가 관리되지 않아서 실패하면 어떻게 되나요?
기본적으로 Express Workflows는 워크플로 입력, 출력 및 완료된 단계를 포함하여 모든 결과를 CloudWatch Logs에 보고합니다. 오류만 로깅하도록 다양한 수준의 로깅을 선택하고, 입력 및 출력은 로깅하지 않도록 할 수도 있습니다. 재시도 횟수가 모두 소진되거나 관리되지 않은 예외가 있는 워크플로는 처음부터 다시 실행해야 합니다.
Q: Step Functions는 생성형 AI 애플리케이션을 구축하는 데 어떻게 도움이 되나요?
Step Functions는 Amazon Bedrock과의 최적화된 통합을 제공합니다. 자연어를 사용하여 Step Functions의 워크플로에서 Bedrock의 파운데이션 모델을 간접 호출할 수 있습니다. 이를 통해 다음과 같은 기능을 수행할 수 있습니다.
- Step Functions에서 처리하는 데이터를 생성형 AI 기능으로 보강하면 텍스트 요약, 이미지 생성, 개인화 등 데이터 처리의 복잡성이 줄어듭니다.
- 데이터베이스에서 최신 제품 가격 및 사용자 개인화 데이터와 같은 정보를 검색하고 Step Functions 내장 함수를 사용하여 이 정보를 프롬프트에 주입하면 LLM이 최신 데이터를 사용하여 응답의 정확도를 높일 수 있습니다.
- Step Functions가 문서를 살펴보고, 데이터를 추출하고, 문서를 청크화한 다음, 데이터를 디지털 텍스트에서 임베딩으로 변환하도록 하는 다단계 프로세스로 임베딩을 생성합니다. 이 프로세스는 반복 프로세스로 예약할 수 있습니다.
- 프롬프트 연결을 위해 Step Function 워크플로를 사용합니다. 여러 LLM 직접 호출을 오케스트레이션하고 체인의 각 단계에 가장 적합한 모델을 선택하여 맞춤형 처리 단계 체인을 형성하고 파운데이션 모델에서 상황에 맞게 더 정확한 응답을 선별할 수 있습니다.
- 생성형 AI 워크플로를 사용해 HITL(Human-in-the-Loop) 상호작용을 구축하여 할루시네이션을 피하기 위한 답변을 조정하거나 파운데이션 모델이 지원하지 않는 응답을 처리하는 로직을 구축합니다.
보안
Q: 인터넷에 연결하지 않고도 Amazon VPC 뒤의 리소스에서 Step Functions에 액세스할 수 있나요?
Step Functions는 AWS PrivateLink를 사용하여 VPC 엔드포인트(VPCE)도 지원합니다. 퍼블릭 인터넷을 통과하지 않고 VPC 사용 AWS Lambda 함수 및 기타 AWS 서비스에서 AWS Step Functions에 액세스할 수 있습니다.
자세한 내용은 Step Functions 개발자 안내서에서 Step Functions용 Amazon VPC 엔드포인트를 참조하세요.
규정 준수
Q: Step Functions에서 지원하는 규정 준수 표준은 무엇인가요?
Step Functions는 HIPAA, FedRAMP, SOC, GDPR 및 기타 일반적인 규정 준수 표준을 따릅니다. 지원되는 규정 준수 표준에 대한 자세한 목록을 보려면 AWS Cloud Security 사이트를 참조하세요.
AWS Step Functions 시작하기