Amazon Simple Workflow Service 리소스 - Amazon Simple Workflow Service

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

Amazon Simple Workflow Service 리소스

이 장에서는 Amazon SWF로 워크플로 개발 시 유용한 추가 리소스 및 참조 정보를 제공합니다.

Amazon SWF 제한 시간 유형

Amazon SWF는 다양한 유형의 제한 시간을 설정하여 워크플로 실행이 정확히 진행되도록 할 수 있습니다. 워크플로 전체를 얼마나 오래 실행할 수 있는지 지정하는 제한 시간도 있고, 활동 작업이 작업자에게 할당되기까지 걸리는 시간 및 예약 시점으로부터 완료되기까지 걸리는 시간을 지정하는 제한 시간도 있습니다. Amazon SWF API의 모든 제한 시간은 초 단위로 지정됩니다. Amazon SWF는 NONE 문자열을 제한 시간 값으로도 지원하며 이는 제한 시간이 없음을 나타냅니다.

결정 작업 및 활동 작업과 관련된 제한 시간의 경우, Amazon SWF는 워크플로 실행 내역에 이벤트를 추가합니다. 이러한 이벤트의 속성은 발생한 제한 시간의 유형과 해당하는 결정 작업 또는 활동 작업에 대한 정보를 제공합니다. Amazon SWF는 결정 작업을 예약합니다. 디사이더는 새 의사 결정 작업을 받으면 기록에서 타임아웃 이벤트를 확인하고 조치를 호출하여 적절한 조치를 취합니다. RespondDecisionTaskCompleted

작업은 예약 시점부터 닫힐 때까지 열린 상태로 간주됩니다. 따라서 작업자가 작업을 처리하는 동안에는 열려 있는 상태로 보고됩니다. 작업자가 작업을 완료됨, 취소됨 또는 실패로 보고하면 작업이 닫힙니다. 제한 시간으로 인해 Amazon SWF에서 작업을 종료할 수도 있습니다.

워크플로 및 결정 작업의 제한 시간

다음 다이어그램은 워크플로 및 결정 제한 시간이 워크플로의 수명과 어떤 관계인지 보여줍니다.

제한 시간이 있는 워크플로의 수명

워크플로 및 결정 작업과 관련된 제한 시간 유형은 다음 두 가지입니다.

  • 워크플로 시작-닫기(timeoutType: START_TO_CLOSE) – 이 제한 시간은 워크플로 실행이 완료되는 데 걸리는 최대 시간을 지정합니다. 워크플로 등록 과정에서 기본값으로 설정되지만 워크플로가 시작될 때 다른 값으로 재정의할 수 있습니다. 이 제한 시간을 초과하면 Amazon SWF는 워크플로 실행을 닫고 워크플로 실행 기록에 해당 WorkflowExecutionTimedOut유형의 이벤트를 추가합니다. timeoutType을 비롯한 이벤트 속성으로 이 워크플로 실행에 적용되는 childPolicy를 지정합니다. 하위 정책은 상위 워크플로 실행 시간이 초과되거나 그렇지 않고 종료되면 하위 워크플로 실행을 처리하는 방법을 지정합니다. 예를 들어, childPolicy를 TERMINATE로 설정하면 하위 워크플로 실행이 종료됩니다. 워크플로 실행이 시간 초과되면 가시성 호출 이외의 조치를 취할 수 없습니다.

  • 결정 작업 시작-닫기(timeoutType: START_TO_CLOSE) – 이 제한 시간은 해당 결정자가 결정 작업을 완료하는 데 소요할 수 있는 최대 시간을 지정합니다. 이 값은 워크플로 유형 등록 중 설정합니다. 이 제한 시간을 초과하면 워크플로 실행 기록에 작업이 시간 초과로 표시되고 Amazon SWF는 워크플로 기록에 해당 DecisionTaskTimedOut유형의 이벤트를 추가합니다. 이벤트 속성에는 결정 작업이 예약되었을 때 해당하는 이벤트의 ID(scheduledEventId)와 결정 작업이 시작되었을 때 해당하는 이벤트의 ID(startedEventId)가 포함됩니다. Amazon SWF는 이벤트를 추가하는 한편 새 결정 작업을 예약해 결정자에게 이 결정 작업이 시간 초과되었음을 알립니다. 시간 초과가 발생한 후 RespondDecisionTaskCompleted를 사용해 시간 초과된 결정 작업을 완료하려고 하면 실패합니다.

활동 작업의 제한 시간

다음 다이어그램은 제한 시간이 활동 작업의 수명과 어떻게 관련이 있는지를 보여줍니다.

제한 시간이 있는 작업의 수명

여기에는 활동 작업과 관련된 제한 시간 유형이 4개 있습니다.

  • 활동 작업 시작-닫기(timeoutType: START_TO_CLOSE) – 이 제한 시간은 활동 작업자가 작업을 수신한 후 작업을 처리하기 위해 보낼 수 있는 최대 시간을 지정합니다. RespondActivityTaskCanceled, RespondActivityTaskCompleted, 를 사용하여 제한 시간이 초과된 활동 작업을 종료하려고 하면 작업이 실패합니다. RespondActivityTaskFailed

  • 활동 작업 하트비트(timeoutType: HEARTBEAT) – 이 제한 시간은 RecordActivityTaskHeartbeat 작업을 통해 진행 상황을 제공하기 전에 작업을 실행할 수 있는 최대 시간을 지정합니다.

  • 활동 작업 예약-시작(timeoutType: SCHEDULE_TO_START) – 활동 작업을 수행할 작업자가 없을 때 Amazon SWF는 이 제한 시간만큼 기다렸다가 활동 작업을 시간 초과로 처리합니다. 시간이 초과로 만료된 작업은 다른 작업자에게 할당되지 않습니다.

  • 활동 작업 예약-닫기(timeoutType: SCHEDULE_TO_CLOSE) – 이 제한 시간은 예약 시간부터 완료될 때까지 걸릴 수 있는 기간을 지정합니다. 가장 좋은 방법은 이 값이 작업 schedule-to-start 제한 시간과 작업 제한 시간의 합계보다 크지 않는 것입니다. start-to-close

참고

각 제한 시간 유형에는 기본값이 있는데, 일반적으로 NONE(무한정)으로 설정되어 있습니다. 그러나 활동 실행의 최대 시간은 1년으로 제한됩니다.

활동 유형 등록 중 활동에 대한 기본값을 설정하지만 활동 작업을 예약할 때 새 값으로 기본값을 재정의할 수 있습니다. 이러한 제한 시간 중 하나가 발생하면 Amazon SWF는 워크플로 기록에 해당 ActivityTaskTimedOut유형의 이벤트를 추가합니다. 이 이벤트의 timeoutType 값 속성은 어떤 제한 시간이 발생했는지 지정합니다. 각 제한 시간의 경우 timeoutType의 값은 괄호 안에 표시됩니다. 또한 이벤트 속성에는 활동 작업이 예약되었을 때 해당하는 이벤트의 ID(scheduledEventId)와 결정 작업이 시작되었을 때 해당하는 이벤트의 ID(startedEventId)가 포함됩니다. Amazon SWF는 이벤트를 추가하는 한편 새 결정 작업을 예약해 결정자에게 시간 초과가 발생했음을 알립니다.

Amazon Simple Workflow Service 엔드포인트

현재 Amazon SWF 리전 및 엔드포인트 목록은 다른 서비스의 엔드포인트와 함께 Amazon Web Services 일반 참조에서 확인할 수 있습니다.

Amazon SWF 도메인과 관련된 모든 워크플로 및 활동이 서로 통신하기 위해서는 동일한 리전 내에 있어야 합니다. 또한 리전 내의 등록된 모든 도메인, 워크플로 및 활동은 다른 리전에는 없습니다. 예를 들어 us-east-1과 us-west-2 모두에서 "MySampleDomain"이라는 도메인을 생성하면 도메인은 별도의 도메인으로 존재하므로 도메인과 관련된 워크플로, 작업 목록, 활동 또는 데이터가 지역 간에 공유되지 않습니다.

워크플로에서 Amazon EC2 인스턴스와 같은 다른 AWS 리소스를 사용하는 경우 이러한 리소스도 Amazon SWF 리소스와 동일한 지역에 있어야 합니다. 유일한 예외는 Amazon S3 및 IAM과 같이 여러 리전에 걸쳐 있는 서비스입니다. 이러한 서비스에는 해당 서비스를 지원하는 모든 리전에 있는 워크플로에서 액세스할 수 있습니다.

Amazon Simple Workflow Service에 대한 추가 설명서

이 개발자 안내서 외에도 다음 문서가 유용합니다.

Amazon Simple Workflow Service API 참조

Amazon Simple Workflow Service API 참조에는 작업, 요청 및 응답 구조와 오류 코드를 비롯해 Amazon SWF HTTP API에 대한 자세한 정보가 나와 있습니다.

AWS Flow Framework 설명서:

AWS Flow Framework는 Amazon SWF로 워크플로우 및 활동을 관리하는 분산된 비동기 애플리케이션의 구현 프로세스를 간소화하는 프로그래밍 프레임워크입니다. 따라서 워크플로우 로직을 구현하는 데 집중할 수 있습니다.

각 AWS Flow Framework 언어는 설계된 언어로 관용적으로 작동하도록 설계되었으므로 원하는 언어로 자연스럽게 작업하여 Amazon SWF의 모든 이점을 갖춘 워크플로를 구현할 수 있습니다.

Java용 AWS 플로우 프레임워크가 있습니다. AWS Flow Framework Java용 개발자 안내서는 AWS Flow Framework Java용 소프트웨어를 구하여 설정하고 사용하는 방법에 대한 정보를 제공합니다.

AWS SDK 설명서

AWS 소프트웨어 개발 키트 (SDK) 를 사용하면 다양한 프로그래밍 언어로 Amazon SWF에 액세스할 수 있습니다. SDK는 HTTP API를 밀접하게 따르지만 일부 Amazon SWF 기능의 경우 언어별 프로그래밍 인터페이스도 제공합니다. 다음 링크를 방문하면 각 SDK에 대한 자세한 정보를 찾을 수 있습니다.

참고

여기에는 작성 당시 Amazon SWF를 지원한 SDK만 나열되어 있습니다. 사용 가능한 AWS SDK의 전체 목록을 보려면 Amazon Web Services용 도구 페이지를 참조하십시오.

Java

는 AWS 인프라 서비스를 위한 Java API를 AWS SDK for Java 제공합니다.

사용 가능한 설명서를 보려면 AWS SDK for Java 설명서 페이지를 참조하십시오. 또한 다음 링크를 따라 SDK 참조의 Amazon SWF 섹션으로 바로 이동할 수도 있습니다.

JavaScript

AWS SDK for JavaScript 이를 통해 개발자는 브라우저나 서버의 Node.js 애플리케이션 내부에서 사용할 수 있는 간단한 easy-to-use API를 사용하여 AWS 서비스를 사용하는 라이브러리 또는 애플리케이션을 구축할 수 있습니다.

사용 가능한 설명서를 보려면 AWS SDK for JavaScript 설명서 페이지를 참조하십시오. 다음 링크를 따라 SDK 참조의 Amazon SWF 섹션으로 바로 이동할 수도 있습니다.

.NET

AWS SDK for .NET 이 패키지는 Visual Studio 프로젝트 템플릿, AWS .NET 라이브러리, C# 코드 샘플 및 설명서가 포함된 다운로드 가능한 단일 패키지입니다. 이를 AWS SDK for .NET 통해 Windows 개발자는 Amazon SWF 및 기타 서비스용.NET 애플리케이션을 더 쉽게 구축할 수 있습니다.

사용 가능한 설명서를 보려면 AWS SDK for .NET 설명서 페이지를 참조하십시오. 또한 다음 링크를 따라 SDK 참조의 Amazon SWF 섹션으로 바로 이동할 수도 있습니다.

PHP

는 Amazon SWF에 PHP 프로그래밍 인터페이스를 AWS SDK for PHP 제공합니다.

사용 가능한 설명서를 보려면 AWS SDK for PHP 설명서 페이지를 참조하십시오. 다음 링크를 따라 SDK 참조의 Amazon SWF 섹션으로 바로 이동할 수도 있습니다.

Python

는 Amazon SWF에 Python 프로그래밍 인터페이스를 AWS SDK for Python (Boto) 제공합니다.

사용 가능한 설명서를 보려면 boto: Amazon Web Services에 대한 Python 인터페이스 페이지를 참조하십시오. 또한 다음 링크를 따라 설명서의 Amazon SWF 섹션으로 바로 이동할 수도 있습니다.

Ruby

는 Amazon SWF에 루비 프로그래밍 인터페이스를 AWS SDK for Ruby 제공합니다.

사용 가능한 설명서를 보려면 AWS SDK for Ruby 설명서 페이지를 참조하십시오. 다음 링크를 따라 SDK 참조의 Amazon SWF 섹션으로 바로 이동할 수도 있습니다.

AWS CLI 문서

AWS Command Line Interface (AWS CLI) 는 AWS 서비스를 관리하기 위한 통합 도구입니다. 하나의 도구를 다운로드하고 구성하기만 하면 명령줄에서 여러 AWS 서비스를 제어하고 스크립트를 통해 자동화할 수 있습니다.

에 AWS CLI대한 자세한 내용은 AWS Command Line Interface페이지를 참조하십시오.

Amazon SWF에 사용할 수 있는 명령에 대한 개요는 AWS CLI 명령 참조swf를 참조하십시오.

Amazon Simple Workflow Service용 웹 리소스

Amazon SWF에 대해 자세히 알아보고 서비스 사용 및 워크플로 개발에 도움을 얻는 데 활용할 수 있는 다양한 웹 리소스가 있습니다.

Amazon SWF 포럼

Amazon SWF 포럼은 Amazon의 다른 Amazon SWF 개발자 및 Amazon SWF 개발 팀원과 질문 및 답변을 통해 의사소통할 수 있는 장소를 제공합니다.

포럼: Amazon Simple Workflow Service에서 포럼을 방문할 수 있습니다.

Amazon SWF FAQ

Amazon SWF FAQ는 일반 사용 사례, Amazon SWF와 다른 서비스 간의 차이점 등에 대한 개요를 비롯해 Amazon SWF에 대해 자주 묻는 질문에 대한 답변을 제공합니다.

Amazon SWF FAQ에서 FAQ에 액세스할 수 있습니다.

Amazon SWF 비디오

Amazon Web Services 채널에서는 Amazon SWF를 포함한 모든 아마존 웹 서비스에 대한 비디오 교육을 YouTube 제공합니다. Amazon SWF 관련 비디오의 전체 목록을 보려면 다음 쿼리를 사용하십시오. Amazon Web Services의 간단한 워크플로

Ruby Flow의 마이그레이션 옵션

AWS Flow Framework Ruby용 버전은 더 이상 활발히 개발되지 않습니다. 기존 코드는 계속 사용 가능하지만 새 기능이나 버전은 제공되지 않습니다. 이 단원에서는 Amazon SWF를 계속 사용하기 위한 사용법과 마이그레이션 옵션 및 Amazon SWF를 마이그레이션하는 방법을 설명합니다.

옵션 설명

Ruby Flow Framework 사용

현재 Ruby Flow Framework는 계속 사용할 수 있습니다. 아무 작업 없이 코드는 그대로 계속 작동합니다. 가까운 AWS Flow Framework 장래에 Ruby용으로 마이그레이션할 계획입니다.

Java Flow Framework로 마이그레이션

Java Flow Framework는 계속 개발 중이며 새 기능과 업데이트가 계속 제공됩니다.

Step Functions로 마이그레이션

Step Functions를 사용하면 상태 시스템을 통해 제어되는 시각적 워크플로를 사용하여 분산 애플리케이션의 구성 요소를 조정할 수 있습니다.

Flow Framework 없이 SWF API 직접 사용 Ruby Flow Framework 대신 Ruby에서 SWF API를 직접 사용할 수 있습니다.

Ruby 또는 Java에 대해 Flow Framework가 제공하는 이점을 활용하여 워크플로 로직에 초점을 맞출 수 있습니다. 이 프레임워크는 커뮤니케이션 및 조정에 대한 많은 세부 정보를 다루며 일부 복잡성을 추상화합니다. Java Flow Framework로 마이그레이션하여 동일한 수준의 추상화를 유지하거나, Amazon SWF SDK를 직접 사용할 수 있습니다.

Ruby Flow Framework 사용

AWS Flow Framework 루비용 버전은 단기적으로는 지금처럼 계속 작동할 것입니다. AWS Flow Framework Ruby용 워크플로를 작성한 경우에도 계속 사용할 수 있습니다. 업데이트, 지원 또는 보안 수정 없이 가까운 시일 내에 AWS Flow Framework for Ruby를 마이그레이션하기 위한 확실한 계획을 세우는 것이 좋습니다.

Java Flow Framework로 마이그레이션

AWS Flow Framework Java용 개발은 계속 활발히 진행될 것입니다. 개념적으로 AWS Flow Framework Java용 버전은 Ruby와 비슷합니다. 즉, 여전히 워크플로 로직에 집중할 수 있고 프레임워크를 사용하면 디사이더 로직을 관리하는 데 도움이 되며 Amazon SWF의 다른 측면을 더 쉽게 관리할 수 있습니다. AWS Flow Framework

Step Functions로 마이그레이션

AWS Step Functions 는 Amazon SWF와 비슷하지만 워크플로 로직이 상태 머신에 의해 제어되는 서비스를 제공합니다. Step Functions은 시각적 워크플로우를 사용해 분산 애플리케이션 및 마이크로서비스의 구성 요소를 손쉽게 조정하도록 해주는 웹 서비스입니다. 각각 기능 또는 작업을 수행하는 개별 구성 요소를 사용하여 애플리케이션을 구축하면 애플리케이션을 빠르게 확장하거나 변경할 수 있습니다. Step Functions는 구성 요소를 조정하고 애플리케이션 기능을 단계별로 실행할 수 있는 안정적인 방법을 제공합니다. 그래픽 화면의 콘솔에서 애플리케이션의 구성 요소를 일련의 단계로 시각화할 수 있습니다. 자동으로 각 단계를 트리거 및 추적하고 오류가 발생할 경우 재시도하므로 애플리케이션이 항상 의도대로 정상적으로 실행됩니다. Step Functions는 각 단계의 상태를 기록합니다. 따라서 무언가 잘못된 경우 빠르게 문제를 진단하고 디버깅할 수 있습니다.

Step Functions에서는 선언적 JSON으로 작성되고 Amazon States Language를 사용하여 정의된 상태 시스템을 사용하여 작업 조정을 관리합니다. 상태 머신을 사용하면 애플리케이션 로직을 제어하기 위해 결정자 프로그램을 작성하고 유지 관리할 필요가 없습니다. Step Functions는 시각적 워크플로를 사용하여 애플리케이션 구성 요소를 조정하는 직관적이고 생산적이며 민첩한 접근 방식을 제공합니다. 모든 새 애플리케이션에 사용하는 AWS Step Functions 것을 고려해야 합니다. Step Functions는 현재 AWS Flow Framework Ruby용 워크플로우에 마이그레이션할 수 있는 훌륭한 플랫폼을 제공합니다.

Ruby 언어 스킬을 계속 이용하면서 작업을 Step Functions로 마이그레이션할 수 있도록 Step Functions는 예제 Ruby 활동 작업자를 제공합니다. 이 예제는 활동 작업자를 구현하기 위한 모범 사례를 사용하며 작업 로직을 Step Functions로 마이그레이션하기 위한 템플릿으로 사용할 수 있습니다. 자세한 내용은 AWS Step Functions 개발자 안내서Ruby 활동 작업자 예제 주제를 참조하십시오.

참고

대부분의 고객에게는 AWS Flow Framework Ruby용 에서 Step Functions로 마이그레이션하는 것이 가장 좋습니다. 그러나 프로세스에 신호가 개입해야 하거나 결과를 부모에게 반환하는 하위 프로세스를 시작해야 하는 경우에는 Amazon SWF API를 직접 사용하거나 Java용 프로세스로 마이그레이션하는 AWS Flow Framework 것을 고려해 보십시오.

에 대한 자세한 내용은 다음을 참조하십시오. AWS Step Functions

Amazon SWF API 직접 사용하기

AWS Flow Framework Ruby용은 Amazon SWF의 복잡성 중 일부를 관리하지만, Amazon SWF API를 직접 사용할 수도 있습니다. API를 직접 사용하면 진행 상황을 추적하고 상태를 유지 관리하는 것과 같이 기저의 복잡한 문제에 대한 염려 없이 구현 작업과 조정을 완벽하게 제어하는 워크플로를 만들 수 있습니다.