

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Step Functions란 무엇입니까?
<a name="welcome"></a>

**상태 관리 및 데이터 트랜스포밍**  
[변수를 사용하여 상태 간 데이터 전달](workflow-variables.md)과 [JSONata를 사용하여 데이터 트랜스포밍](transforming-data.md)에 대해 알아봅니다.

를 사용하면 라고도 하는 워크플로를 생성[상태 머신](concepts-statemachines.md)하여 분산 애플리케이션을 구축하고, 프로세스를 자동화하고, 마이크로서비스를 오케스트레이션하고, 데이터 및 기계 학습 파이프라인을 생성할 AWS Step Functions수 있습니다.

Step Functions는 *상태 머신*과 *작업*에 기반합니다. Step Functions에서는 상태 머신을 *워크플로*라고 하며, 이는 일련의 이벤트 기반 단계입니다. 워크플로의 각 단계를 *상태*라고 합니다. 예를 들어 [작업 상태는](state-task.md) 다른 AWS 서비스또는 API 호출과 같이 다른 AWS서비스가 수행하는 작업 단위를 나타냅니다. 작업을 수행하는 워크플로 실행 인스턴스를 Step Functions에서 *실행*이라고 합니다.

상태 머신 작업에서의 작업은 Step Functions 외부에 있는 작업자 [활동](concepts-activities.md)를 사용하여 수행할 수도 있습니다.

![\[Step Functions 워크플로 다이어그램의 예제입니다.\]](http://docs.aws.amazon.com/ko_kr/step-functions/latest/dg/images/step-functions-example.png)


Step Functions 콘솔에서 애플리케이션의 워크플로를 **시각화**, 편집 및 디버깅할 수 있습니다. 워크플로의 각 단계 상태를 검사하여 애플리케이션이 순서대로 그리고 예상대로 실행되는지 확인할 수 있습니다.

사용 사례에 따라 Step Functions가 Lambda와 같은 AWS서비스를 호출하여 작업을 수행하도록 할 수 있습니다. Step Functions가 추출, 변환 및 로드 워크플로를 생성하는 등의 AWS서비스를 제어AWS Glue하도록 할 수 있습니다. 또한 사람의 상호 작용이 필요한 애플리케이션을 위해 오래 실행되는 자동화된 워크플로를 만들 수 있습니다.

Step Functions를 사용할 수 있는 전체 AWS리전 목록은 [AWS 리전 테이블](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)을 참조하세요.

**Step Functions 사용 방법 알아보기**  
이 안내서의 [시작하기 자습서](getting-started.md) 섹션으로 시작합니다. 고급 주제 및 사용 사례는 [Step Functions 워크숍](https://catalog.workshops.aws/stepfunctions)의 모듈을 참조하세요.

## 표준 및 Express 워크플로 유형
<a name="welcome-workflows"></a>

Step Functions에는 두 가지 워크플로 유형이 있습니다.
+ **표준** 워크플로에서는 실행 내역과 시각적 디버깅을 보여주므로 감사가 가능한 장기 실행 워크플로에 적합합니다.

  표준 워크플로는 워크플로를 **정확히 1회** 실행하며 최대 **1년** 동안 실행될 수 있습니다. 즉, 표준 워크플로의 각 단계는 정확히 1회 실행됩니다.
+ **Express** 워크플로는 스트리밍 데이터 처리 및 IoT 데이터 모으기와 같이 이벤트 속도가 높은 워크로드에 적합합니다.

  Express 워크플로는 워크플로를 **최소 1회 이상** 실행하며 최대 **5분** 동안 실행될 수 있습니다. 즉, Express 워크플로의 단계 하나 이상은 1회 넘게 실행되지만 워크플로의 각 단계는 최소 1회 이상 실행됩니다.


| 표준 워크플로 | Express 워크플로 | 
| --- | --- | 
| 실행 속도 1초당 2,000 | 실행 속도 1초당 100,000 | 
| 상태 전환 속도 1초당 4,000 | 무제한에 가까운 상태 전환 속도 | 
| 상태 전환을 기준으로 요금 책정 | 실행 횟수 및 기간을 기준으로 요금 책정 | 
| 실행 내역 및 시각적 디버깅 표시 | 로그 수준을 기반으로 실행 내역과 시각적 디버깅 표시 | 
| Step Functions의 실행 기록 참조 |  실행 내역을 [CloudWatch](https://aws.amazon.com/cloudwatch/)로 전송  | 
| 모든 서비스와의 통합을 지원합니다.일부 서비스와의 최적화된 통합을 지원합니다. | 모든 서비스와의 통합을 지원합니다. | 
| 모든 서비스에 대한 요청 응답 패턴 지원 특정 서비스에서 *작업 실행* 및/또는 *콜백 대기* 패턴 지원(자세한 내용은 다음 섹션 참조)  | 모든 서비스에 대한 요청 응답 패턴 지원 | 

Step Functions 요금 및 워크플로 유형 선택에 대한 자세한 내용은 다음을 참조하세요.
+ [AWS Step Functions 요금](https://aws.amazon.com/step-functions/pricing/)
+ [Step Functions에서 워크플로 유형 선택](choosing-workflow-type.md)

## 다른 서비스와 통합
<a name="welcome-service-integrations"></a>

Step Functions는 여러 AWS서비스와 통합됩니다. 다른 AWS서비스를 호출하려면 두 가지 통합 유형을 사용할 수 있습니다.
+ [AWSSDK 통합](supported-services-awssdk.md)은 상태 시스템에서 직접 모든 AWS서비스를 호출하여 수천 개의 API 작업에 액세스할 수 있는 방법을 제공합니다.
+ [최적화된 통합](integrate-optimized.md)은 상태 머신에서 이러한 서비스를 사용하기 위한 사용자 지정 옵션을 제공합니다.

Step Functions를 다른 서비스와 결합하는 데는 3가지 **서비스 통합 패턴**이 있습니다.
+  [응답 요청(기본값)](connect-to-resource.md#connect-default) 

  서비스를 직접적으로 호출하고 Step Functions가 HTTP 응답을 가져온 후에 다음 상태로 진행하도록 합니다.
+ [작업 실행(.sync)](connect-to-resource.md#connect-sync)

  서비스를 직접적으로 호출하고 작업이 완료될 때까지 Step Functions가 기다리도록 합니다.
+ [작업 토큰(.waitForTaskToken)이 포함된 콜백 기다리기](connect-to-resource.md#connect-wait-token)

  작업 토큰이 포함된 서비스를 직접적으로 호출하고 작업 토큰이 콜백과 함께 반환될 때까지 Step Functions가 기다리도록 합니다.

표준 워크플로 및 Express 워크플로는 동일한 **통합**을 지원하지만 동일한 **통합 패턴**은 지원하지 않습니다.
+  **표준 워크플로**는 *요청 응답* 통합을 지원합니다. 특정 서비스는 *작업 실행(.sync)* 또는 *콜백 대기(.waitForTaskToken)*를 지원하며, 경우에 따라 둘 다 지원합니다. 자세한 내용은 다음 최적화된 통합 표를 참조하세요.
+  **Express 워크플로**는 *요청 응답* 통합을 지원합니다.

 [Step Functions에서 워크플로 유형 선택](choosing-workflow-type.md) 섹션을 참조하면 두 유형 중 하나를 결정하는 데 도움이 됩니다.



**AWSStep Functions의 SDK 통합**


| 통합 서비스 | 요청 및 응답 | 작업 실행 - *.sync* | 콜백 대기 - *.waitForTaskToken* | 
| --- | --- | --- | --- | 
| [200개 이상의 서비스](supported-services-awssdk.md#supported-services-awssdk-list) | 표준 및 Express | 지원되지 않음 | 표준 | 

**Step Functions의 최적화된 통합**


| 통합 서비스 | 요청 및 응답 | 작업 실행 - *.sync* | 콜백 대기 - *.waitForTaskToken* | 
| --- | --- | --- | --- | 
| [Amazon API Gateway](connect-api-gateway.md) | 표준 및 Express | 지원되지 않음 | 표준 | 
| [Amazon Athena](connect-athena.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [AWS Batch](connect-batch.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [Amazon Bedrock](connect-bedrock.md) | 표준 및 Express | 표준 | 표준 | 
| [AWS CodeBuild](connect-codebuild.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [Amazon DynamoDB](connect-ddb.md) | 표준 및 Express | 지원되지 않음 | 지원되지 않음 | 
| [Amazon ECS/Fargate](connect-ecs.md) | 표준 및 Express | 표준 | 표준 | 
| [Amazon EKS](connect-eks.md) | 표준 및 Express | 표준 | 표준 | 
| [Amazon EMR](connect-emr.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [Amazon EMR on EKS](connect-emr-eks.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [Amazon EMR Serverless](connect-emr-serverless.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [Amazon EventBridge](connect-eventbridge.md) | 표준 및 Express | 지원되지 않음 | 표준 | 
| [AWS Glue](connect-glue.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [AWS Glue DataBrew](connect-databrew.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [AWS Lambda](connect-lambda.md) | 표준 및 Express | 지원되지 않음 | 표준 | 
| [AWS Elemental MediaConvert](connect-mediaconvert.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [Amazon SageMaker AI](connect-sagemaker.md) | 표준 및 Express | 표준 | 지원되지 않음 | 
| [Amazon SNS](connect-sns.md) | 표준 및 Express | 지원되지 않음 | 표준 | 
| [Amazon SQS](connect-sqs.md) | 표준 및 Express | 지원되지 않음 | 표준 | 
| [AWS Step Functions](connect-stepfunctions.md) | 표준 및 Express | 표준 | 표준 | 

## 워크플로 사용 사례의 예
<a name="application"></a>

Step Functions는 애플리케이션의 구성 요소와 로직을 관리하므로 코드 작성을 줄이고 애플리케이션을 빠르게 빌드하고 업데이트하는 데 집중할 수 있습니다. 다음 이미지는 Step Functions 워크플로에 대한 6가지 사용 사례를 보여줍니다.

![\[다음 텍스트에 설명된 6가지 일반적인 워크플로 사용 사례의 시각적 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/step-functions/latest/dg/images/use-case-examples.png)




1. **작업 오케스트레이션** - 일련의 작업 또는 *단계*를 특정 순서로 오케스트레이션하는 워크플로를 생성할 수 있습니다. 예를 들어 *작업 A*는 *작업 B*의 다른 Lambda 함수에 대한 입력을 제공하는 Lambda 함수일 수 있습니다. 워크플로의 마지막 단계는 최종 결과를 제공합니다.

1. **데이터를 기반으로 작업 선택** - `Choice` 상태를 사용하면 Step Functions에서 상태 입력에 따라 결정을 내리도록 할 수 있습니다. 예를 들어 고객이 신용 한도 증가를 요청한다고 가정해 보겠습니다. 요청이 고객의 사전 승인된 신용 한도를 초과하는 경우 Step Functions에서 고객의 요청을 승인하기 위해 관리자에게 보내도록 할 수 있습니다. 요청이 고객의 사전 승인된 신용 한도보다 적은 경우 Step Functions에서 요청을 자동으로 승인하도록 할 수 있습니다.

1. **오류 처리**(`Retry` / `Catch`) - 실패한 작업을 다시 시도하거나 실패한 작업을 캡처하고 대체 단계를 자동으로 실행할 수 있습니다.

   예를 들어 고객이 사용자 이름을 요청한 후 검증 서비스에 대한 첫 번째 호출이 실패하여 워크플로에서 요청을 다시 시도할 수 있습니다. 두 번째 요청이 성공하면 워크플로를 진행할 수 있습니다.

   또는 고객이 유효하지 않거나 사용할 수 없는 사용자 이름을 요청한 경우 `Catch` 문으로 인해 Step Functions 워크플로 단계에서 대체 사용자 이름을 제안할 수 있습니다.

   `Retry` 및 `Catch`의 예제는 [Step Functions 워크플로의 오류 처리](concepts-error-handling.md) 섹션을 참조하세요.

1. **휴먼 인 더 루프** - Step Functions는 워크플로에 사람 승인 단계를 포함할 수 있습니다. 예를 들어 은행 고객이 친구에게 자금을 보내려고 한다고 가정해 보겠습니다. [콜백 및 작업 토큰](connect-to-resource.md#connect-wait-token)을 사용하면 Step Functions에서 고객의 친구가 송금을 확인할 때까지 기다린 다음 Step Functions가 워크플로를 계속 진행하여 전송이 완료되었음을 은행 고객에게 알립니다.

   예제는 [Amazon SQS, Amazon SNS, Lambda를 사용하여 콜백 패턴 예제 생성](callback-task-sample-sqs.md) 섹션을 참조하세요.

1. **병렬 단계로 데이터 처리** - Step Functions는 `Parallel` 상태를 사용하여 입력 데이터를 병렬 단계로 처리할 수 있습니다. 예를 들어 한 고객이 시청자가 여러 장치에서 비디오를 시청할 수 있도록 비디오 파일을 여러 디스플레이 해상도로 변환해야 할 수 있습니다. 워크플로는 원본 비디오 파일을 여러 Lambda 함수로 보내거나 최적화된 AWS Elemental MediaConvert통합을 사용하여 비디오를 여러 디스플레이 해상도로 동시에 처리할 수 있습니다.

1. **동적으로 데이터 요소 처리** - Step Functions는 `Map` 상태를 사용하여 데이터세트의 각 항목에 대해 일련의 워크플로 단계를 실행할 수 있습니다. 반복은 동시에 실행되므로 데이터세트를 빠르게 처리할 수 있습니다. 예를 들어, 고객이 30개의 품목을 주문할 때 시스템은 동일한 워크플로를 적용하여 각 품목을 배송할 준비를 해야 합니다. 모든 품목을 수거하여 배송을 위해 포장한 후 다음 단계로 고객에게 추적 정보가 포함된 확인 이메일을 신속하게 보내야 할 수 있습니다.

   **스타터 템플릿** 예시를 보려면 [Map으로 데이터 처리](sample-map-state.md) 섹션을 참조하세요.