

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

# AWS Flow Framework 기본 개념: 애플리케이션 구조
<a name="awsflow-basics-application-structure"></a>

개념적으로 AWS Flow Framework 애플리케이션은 *워크플로 스타터*, *워크플로 작업자*, *활동 작업자*의 세 가지 기본 구성 요소로 구성됩니다. 한 개 이상의 호스트 애플리케이션에서 작업자(워크플로 및 활동)를 Amazon SWF에 등록하고 작업자를 시작하고 정리하는 작업을 담당합니다. 작업자는 워크플로 실행 메커니즘을 처리하며 여러 호스트에서 구현될 수 있습니다.

이 다이어그램은 기본 AWS Flow Framework 애플리케이션을 나타냅니다.

![스키마 AWS Flow Framework 애플리케이션](http://docs.aws.amazon.com/ko_kr/amazonswf/latest/awsflowguide/images/swf-application-model.png)


**참고**  
세 가지 애플리케이션에서 이들 구성 요소를 구현하는 것이 개념상 편리하지만, 애플리케이션을 생성하여 이 기능을 다양한 방식으로 구현할 수 있습니다. 예를 들어 활동 및 워크플로 작업에 대해 단일 호스트 애플리케이션을 사용하거나 별도 활동 및 워크플로 호트를 사용할 수 있습니다. 또한 각기 별도 호스트에서 일련의 다른 활동을 처리하는 등의 작업을 수행하는 여러 개의 활동 작업자를 보유할 수 있습니다.

세 구성 AWS Flow Framework 요소는 요청을 관리하는 Amazon SWF로 HTTP 요청을 전송하여 간접적으로 상호 작용합니다. Amazon SWF는 다음을 수행합니다.
+ 워크플로 작업자가 수행할 다음 작업을 결정하는 하나 이상의 결정 작업 목록을 유지 관리합니다.
+ 활동 작업자가 수행할 작업을 결정하는 하나 이상의 활동 작업 목록을 유지 관리합니다.
+ 상세한 단계별 워크플로 실행 내역을 유지 관리합니다.

를 사용하면 AWS Flow Framework애플리케이션 코드가 Amazon SWF로 HTTP 요청을 보내는 등 그림에 표시된 많은 세부 정보를 직접 처리할 필요가 없습니다. AWS Flow Framework 메서드를 호출하기만 하면 프레임워크가 백그라운드에서 세부 정보를 처리합니다.

## 활동 작업자의 역할
<a name="aws-flow-concepts-activity-worker"></a>

활동 작업자는 워크플로에서 완수해야 하는 다양한 작업을 수행합니다. 작업자는 다음 요소로 구성되어 있습니다.
+ 워크플로를 위해 특정 작업을 수행하는 일련의 활동 메서드가 포함된 활동 구현
+ [ActivityWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/ActivityWorker.html) 객체는 HTTP 긴 폴링 요청을 사용하여 수행할 활동 작업에 대해 Amazon SWF를 폴링하는 데 사용됩니다. 작업이 필요한 경우 Amazon SWF는 작업 수행에 필요한 정보를 전송하여 요청에 응답합니다. 그러면 [ActivityWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/ActivityWorker.html) 객체에서 적절한 활동 메서드를 호출하여 그 결과를 Amazon SWF로 반환합니다.

## 워크플로 작업자의 역할
<a name="aws-flow-concepts-workflow-worker"></a>

워크플로 작업자는 다양한 활동의 실행을 조율하고 데이터 흐름을 관리하며 실패한 활동을 처리합니다. 작업자는 다음 요소로 구성되어 있습니다.
+ 활동 조율 로직을 포함하고 실패한 활동을 처리하는 등의 역할을 하는 워크플로 구현
+ 활동 작업자의 프록시 역할을 하고 워크플로 작업자가 비동기식으로 실행할 활동을 예약할 수 있게 해주는 활동 클라이언트
+ [WorkflowWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/WorkflowWorker.html) 객체는 HTTP 긴 폴링 요청을 사용하여 의사 결정 작업을 위해 Amazon SWF를 폴링합니다. 워크플로 작업 목록에 작업이 있는 경우 Amazon SWF는 작업 수행에 필요한 정보를 반환하여 요청에 응답합니다. 그러면 프레임워크에서는 워크플로를 실행하여 작업을 수행하고 그 결과를 Amazon SWF에 반환합니다.

## 워크플로 시작자의 역할
<a name="aws-flow-concepts-workflow-starter"></a>

워크플로 시작자는 *워크플로 실행*이라고도 하는 워크플로 인스턴스를 시작하고, 워크플로 작업자에게 추가 데이터를 전송하거나 현재 워크플로 상태를 얻기 위해 실행 중에 인스턴스와 상호 작용할 수 있습니다.

워크플로 시작자는 워크플로 클라이언트를 사용하여 워크플로 실행을 시작하고, 실행 중에 필요에 따라 워크플로와 상호 작용하며, 정리 작업을 합니다. 워크플로 시작자는 로컬에서 실행되는 애플리케이션, 웹 애플리케이션, AWS CLI 또는가 될 수 있습니다 AWS Management Console.

## Amazon SWF가 애플리케이션과 상호 작용하는 방식
<a name="aws-flow-concepts-swf-app-interaction"></a>

Amazon SWF는 워크플로 구성 요소 간의 상호 작용을 조정하고 상세한 워크플로 기록을 유지합니다. Amazon SWF는 구성 요소와의 통신을 시작하지 않고 구성 요소의 HTTP 요청을 기다린 다음 필요에 따라 요청을 관리합니다. 예:
+ 요청이 작업자에게서 발신된 것이면 Amazon SWF는 사용 가능 작업에 대해 폴링하면서 작업이 사용 가능한 경우 작업자에게 직접 응답합니다. 폴링 작동 방식에 대한 자세한 내용은 *Amazon Simple* Workflow Service 개발자 [안내서의 태스크 폴링을](https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-comm-proto) 참조하십시오.
+ 요청이 활동 작업자가 보낸 작업 완료 알림인 경우 Amazon SWF는 실행 이력에 정보를 기록하고 작업을 결정 작업 리스트에 추가하여 워크플로 작업자에게 작업이 완료되었음을 알림으로써 다음 작업을 계속 진행하도록 합니다.
+ 요청이 워크플로 작업자가 보낸 것으로서 활동을 실행하라는 알림인 경우 Amazon SWF는 실행 이력에 정보를 기록하고 작업을 활동 작업 리스트에 추가하여 활동 작업자에게 적절한 활동 메서드를 실행하도록 지시합니다.

이 접근 방식을 통해 작업자는 Amazon EC2 인스턴스, 기업 데이터 센터, 클라이언트 컴퓨터 등 인터넷이 연결된 모든 시스템에서 실행할 수 있습니다. 작업자는 동일한 운영 체제를 실행할 필요조차 없습니다. HTTP 요청은 작업자에서 시작되므로 외부에 보이는 포트가 필요 없습니다. 따라서 작업자는 방화벽 뒤에서 실행될 수 있습니다.

## 자세한 정보
<a name="for-more-information"></a>

Amazon SWF의 작동 방식에 대한 자세한 내용은 [Amazon Simple Workflow Service 개발자 안내서](https://docs.aws.amazon.com/amazonswf/latest/developerguide/)를 참조하십시오.