Amazon SWF 액터 - Amazon Simple Workflow Service

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

Amazon SWF 액터

Amazon SWF 액터란 무엇입니까?

작업 과정에서 Amazon SWF는 여러 가지 유형의 프로그래밍 방식 액터와 상호 작용합니다. 액터는 워크플로 시작자, 결정자 또는 활동 작업자일 수 있습니다. 이러한 액터는 API를 통해 Amazon SWF와 통신합니다. 이러한 액터는 모든 프로그래밍 언어로 개발할 수 있습니다.

다음 다이어그램은 Amazon SWF와 액터를 포함한 Amazon SWF 아키텍처를 보여 줍니다.

Amazon SWF 워크플로의 여러 엔터티 또는 "액터".

워크플로 시작자

워크플로 시작자는 워크플로 실행을 시작할 수 있는 애플리케이션입니다. 이 전자 상거래의 예에서는 워크플로 시작자가 고객이 주문을 하는 웹 사이트일 수 있습니다. 또 다른 워크플로 시작자로는 고객 서비스 담당자가 고객을 대신해 주문하는 모바일 애플리케이션 또는 시스템일 수 있습니다.

결정자

결정자는 워크플로의 조정 로직을 구현한 것입니다. 결정자는 워크플로 실행의 활동 작업 흐름을 제어합니다. 워크플로 실행 중 변경이 발생할 때마다(예: 작업 완료) 전체 워크플로 내역을 포함한 결정 작업이 결정자에게 전달됩니다. 결정자가 Amazon SWF에서 결정 작업을 수신하면 결정자는 워크플로 실행 내역을 분석해 워크플로 실행에서 다음으로 적절한 작업을 결정합니다. 결정자는 결정을 통해 이러한 단계를 Amazon SWF에 다시 전달합니다. 결정은 다양한 다음 작업을 나타낼 수 있는 Amazon SWF 데이터 유형입니다. 가능한 결정의 목록은 Amazon Simple Workflow Service API 참조의 결정을 참조하십시오.

다음은 JSON 형식으로 작성된 결정의 예로, 이 형식은 Amazon SWF로 전달됩니다. 이 결정은 새 활동 작업을 예약합니다.

{ "decisionType" : "ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes" : { "activityType" : { "name" : "activityVerify", "version" : "1.0" }, "activityId" : "verification-27", "control" : "digital music", "input" : "5634-0056-4367-0923,12/12,437", "scheduleToCloseTimeout" : "900", "taskList" : { "name": "specialTaskList" }, "scheduleToStartTimeout" : "300", "startToCloseTimeout" : "600", "heartbeatTimeout" : "120" } }

결정자는 워크플로 실행이 시작되는 경우 그리고 워크플로 실행에서 상태 변경이 발생할 때마다 결정 작업을 수신합니다. 결정자는 결정 작업을 수신하고 추가 결정으로 Amazon SWF에 응답해 결정자가 워크플로 실행이 완료되었다고 확인할 때까지 워크플로 실행을 계속해서 앞으로 진행합니다. 그런 다음 결정으로 응답해 워크플로 실행을 닫습니다. 워크플로 실행이 닫히면 Amazon SWF에서는 해당 실행에 대해 추가 작업을 예약하지 않습니다.

이 전자 상거래의 예에서 결정자는 각 단계가 제대로 수행되었는지 확인하고 다음 단계를 예약하거나 오류 상태를 관리합니다.

결정자는 컴퓨터 프로세스 또는 스레드 하나를 나타냅니다. 동일한 워크플로 유형의 작업을 여러 결정자가 처리할 수 있습니다.

활동 작업자

활동 작업자는 워크플로의 일부인 활동 작업을 수행하는 프로세스 또는 스레드입니다. 활동 작업은 애플리케이션에서 식별한 작업 중 하나를 나타냅니다.

워크플로우의 활동 작업을 사용하려면 Amazon SWF 콘솔 또는 RegisterActivityType 작업을 사용해 등록해야 합니다.

각 활동 작업자는 자신이 수행하기에 적절한 새 작업을 위해 Amazon SWF를 폴링합니다. 특정 작업은 특정 활동 작업자만 수행할 수 있습니다. 작업을 수신한 후 활동 작업자는 작업을 완료한 다음 해당 작업이 완료되었다고 Amazon SWF에 보고하고 결과를 제공합니다. 그런 다음 활동 작업자는 새 작업을 폴링합니다. 워크플로 실행과 연결된 활동 작업자는 이러한 방식으로 워크플로 실행 자체가 완료될 때까지 작업을 처리합니다. 이 전자 상거래 예에서 활동 작업자는 신용카드 처리 담당자 및 창고 담당 직원과 같은 사람이 사용하는 독립적인 프로세스 및 애플리케이션으로 프로세스의 개별 단계를 수행합니다.

활동 작업자는 컴퓨터 프로세스(또는 스레드) 하나를 나타냅니다. 동일한 활동 유형의 작업을 여러 활동 작업자가 처리할 수 있습니다.

액터 간에 데이터 교환

워크플로 실행이 시작되면 워크플로 실행에 입력 데이터를 제공할 수 있습니다. 마찬가지로, 입력 데이터는 활동 작업자가 활동 작업을 예약할 때 활동 작업자에게 제공할 수 있습니다. 활동 작업이 완료되면 활동 작업자는 Amazon SWF에 결과를 반환할 수 있습니다. 마찬가지로, 결정자는 실행이 완료되면 워크플로 실행의 결과를 보고할 수 있습니다. 각 액터는 사용자가 정의한 형식의 문자열을 통해 Amazon SWF에서 데이터를 전송하고 수신할 수 있습니다. 데이터의 크기 및 민감도에 따라 데이터를 직접 전달하거나 다른 시스템 또는 서비스(예: Amazon S3 또는 DynamoDB)에 저장된 데이터에 대한 포인터를 전달할 수 있습니다. 직접 전달된 데이터와 다른 데이터에 대한 포인터는 둘 다 워크플로 실행 내역에 기록되지만 Amazon SWF에서는 내역의 일부로 외부 저장소에서 데이터를 복사하거나 캐시하지 않습니다.

Amazon SWF에서는 입력 및 작업 결과를 비롯해 각 워크플로 실행의 전체 실행 상태를 유지관리하기 때문에 모든 액터는 상태 비저장일 수 있습니다. 따라서 워크플로 처리는 확장성이 매우 뛰어납니다. 시스템에 대한 로드가 증가하면 액터를 추가해 용량을 늘릴 수 있습니다.