Q: Amazon SWF란 무엇입니까?
Amazon Simple Workflow Service(Amazon SWF)는 분산 애플리케이션 구성 요소에서 작업을 쉽게 조정할 수 있도록 해주는 웹 서비스입니다. Amazon SWF를 사용하면 광범위한 사용 사례, 예를 들어 미디어 프로세싱, 웹 애플리케이션의 백 엔드, 비즈니스 프로세스 워크플로우, 분석 파이프라인 등에 대한 애플리케이션을 여러 작업의 조정으로 설계할 수 있습니다. 작업은 애플리케이션의 다양한 처리 단계의 호출을 의미하며 실행 코드, 웹 서비스 호출, 사람의 활동 및 스크립트 등을 통해 수행할 수 있습니다.

작업의 조정은 구체적으로 실행 종속성, 일정 및 동시성을 애플리케이션의 논리적 흐름에 따라 관리하는 것입니다. Amazon SWF에서 처리 단계 구현과 단계를 계속 진행할 작업의 조정을 개발자가 제어할 수 있습니다. 진행 상황을 추적하여 상태 정보를 유지하는 등 기본적으로 복잡한 작업은 개발자가 수행할 필요가 없습니다. 또한, Amazon SWF의 AWS Flow Framework를 사용하면 개발자가 비동기 프로그래밍을 통해 애플리케이션을 개발할 수 있습니다. Amazon SWF는 프로그래밍의 편이성뿐만 아니라 애플리케이션의 리소스 사용량, 지연 및 처리량 개선이 가능하다는 장점이 있습니다.

무료로 AWS 시작하기

무료 계정 생성
또는 콘솔에 로그인

AWS 프리 티어에는 Amazon ElastiCache와 함께 750시간의 마이크로 캐시 노드가 포함되어 있습니다.

AWS 프리 티어 세부 정보 보기 »

Q: 여러 작업을 연계하는 형태로 애플리케이션을 설계할 때의 장점은 무엇입니까? 이를 통해 Amazon SWF로부터 얻게 되는 도움은 무엇입니까?
Amazon SWF에서 작업은 애플리케이션의 논리적 단계 호출을 의미합니다. 작업은 워커가 처리합니다. 워커는 Amazon SWF와 상호 작용하여 작업을 받아 처리하고 그 결과를 반환하는 프로그램입니다. 하나의 워커는 하나의 애플리케이션 처리 단계를 구현합니다. 여러 프로그래밍 언어로 워커로 만들 수 있으며 기존 구성 요소를 다시 사용하여 빠르게 워커를 만들 수도 있습니다. 예를 들어, 클라우드 서비스, 엔터프라이즈 애플리케이션, 레거시 시스템 및 간단한 스크립트로도 워커를 구현할 수 있습니다. 각 작업 유형 처리에 사용되는 워커의 수를 독립적으로 제어하여 애플리케이션 처리량을 효율적으로 제어할 수 있습니다.

여러 워커 간의 애플리케이션 실행을 조정하기 위해 다양한 프로그래밍 언어로 디사이더라는 프로그램을 작성할 수 있습니다. 이렇게 처리 단계와 조정을 분리하여 애플리케이션을 제어된 상태로 관리할 뿐만 아니라, 각각을 독립적으로 배치, 실행, 확장 및 업데이트할 수 있으므로 유연성이 높아집니다. 워커와 디사이더를 클라우드(예: Amazon EC2 또는 Lambda)에 배치하거나 회사 방화벽 뒤의 시스템에 배치할 수 있습니다. 워커와 디사이더는 분리되어 있으므로, 비즈니스 로직을 동적으로 변경할 수 있고 애플리케이션을 새로운 요구 사항에 맞춰 신속하게 업데이트할 수 있습니다. 예를 들어, 디사이더를 변경함으로써 간단하게 특정 작업을 제거하거나, 건너뛰거나, 다시 시도하고 새로운 애플리케이션 흐름을 만들 수 있습니다.

워커와 디사이더를 구현하여 개발자는 실제 작업 단계 실행 및 조정과 관련한 차별화된 애플리케이션 로직에 집중할 수 있습니다. 할당 가능해질 때까지 작업 보관, 할당된 작업 모니터링, 작업 완료 시까지 지속적인 정보 제공 등과 같은 관련 세부 사항은 Amazon SWF가 처리합니다. 또한, Amazon SWF는 API와 콘솔을 통해 각 작업 수준에서 지속적인 가시성을 제공합니다.

Q: Amazon SWF로 할 수 있는 작업은 무엇입니까?
Amazon SWF를 사용하면 애플리케이션을 개발할 때 분산된 구성 요소에서 발생하는 다양한 문제를 해결할 수 있습니다. 예를 들어, Amazon SWF 및 이와 동반된 AWS Flow Framework를 사용하면 다음을 수행할 수 있습니다.

  • 간단한 프로그래밍 구문을 사용하여 애플리케이션을 비동기 프로그램으로 작성합니다. 이 프로그래밍 구문은 원격으로 실행되는 태스크를 생성하고 프로그램의 런타임 상태를 추적하는 등의 세부 작업을 담고 있습니다.
  • 애플리케이션의 실행 상태(예: 완료된 단계 정보, 실행 중인 단계 정보 등)를 지속적으로 유지 관리합니다. 사용자는 실행 상태를 유지하기 위해 데이터베이스, 사용자 정의 시스템 또는 임시 솔루션 등을 사용할 필요가 없습니다.
  • 애플리케이션 구성 요소 간의 작업 흐름과 통신하며 관리합니다. Amazon SWF를 사용하면 메시징 프로토콜을 사용자가 설계하거나 작업 손실이나 중복을 걱정할 필요가 없습니다.
  • 애플리케이션에서 단계 조정을 중앙 집중화할 수 있습니다. 조정 로직은 여러 구성 요소에 분산되어 있을 필요가 없으며, 하나의 프로그램에 캡슐화될 수 있습니다.
  • 레거시 시스템 및 타사 클라우드 서비스를 비롯한 다양한 프로그램과 구성 요소를 애플리케이션에 통합할 수 있습니다. Amazon SWF라면 애플리케이션 구성 요소를 어디에 어떤 조합으로 배치할지 유연하게 결정할 수 있으므로, 애플리케이션 가용성과 성능 손상 없이 애플리케이션 구성 요소를 프라이빗 데이터 센터에서 퍼블릭 클라우드 인프라로 단계적으로 마이그레이션할 수 있습니다.
  • 실행 시간이 긴 인적 작업(예: 승인, 검토, 조사 등)이 포함된 워크플로를 자동화합니다. Amazon SWF는 완료하는 데 며칠 또는 몇 달이 걸리는 작업 단계의 상태를 확실하게 추적합니다.
  • Amazon SWF에 애플리케이션 계층을 구축해 최종 사용자의 도메인 특정 언어를 지원합니다. Amazon SWF에서는 프로그래밍 언어를 유연하게 선택할 수 있으므로, XPDL 같은 특수 언어용 인터프리터와 사용자 정의 사용자 인터페이스(모델링 도구 등)도 간편하게 구축할 수 있습니다.
  • 애플리케이션의 실행 중인 모든 인스턴스에 대해 상세한 감사 추적 및 가시성을 확보할 수 있습니다. 또한, Amazon SWF의 API를 사용하여 Amazon SWF에서 제공하는 가시성 기능을 자체 사용자 인터페이스에 통합할 수 있습니다.

실제로 고객이 Amazon SWF를 사용하여 구축한 애플리케이션에는 동영상 인코딩, 소셜 커머스, 인프라 프로비저닝, MapReduce 파이프라인, 비즈니스 프로세스 관리 등 여러 가지가 있습니다. 사용 사례에 대한 자세한 내용은 "SWF를 사용하여 해결할 수 있는 몇 가지 사용 사례는 무엇입니까?"를 참조하십시오. 현재 고객이 Amazon SWF를 어떻게 사용하고 있는지 알아보려면 AWS의 사례 연구를 읽어 보십시오.

Q: 자사 개발 솔루션 및 기존의 워크플로 제품과 비교할 때 Amazon SWF의 장점은 무엇입니까?
분산 환경에서 작업을 조정하기 위한 솔루션을 구축할 때 다양한 변수를 고려할 필요가 있습니다. 처리 단계에 있는 작업은 완료하는 데 오래 걸릴 수 있고, 실패하거나 제한 시간이 종료되거나 다시 시작해야 할 수도 있습니다. 작업 완료 시 처리량과 지연 시간에 차이가 있는 경우가 많습니다. 이러한 모든 상황을 고려하여 작업을 추적하고 시각화하는 것은 어려울 뿐만 아니라 획일적인 작업이기도 합니다. 애플리케이션 및 작업을 확장할 때 개발자는 쉽지 않은 분산 시스템의 문제에 부딪히게 됩니다. 예를 들어, 하나의 작업은 한 번만 할당되고 예상치 못한 장애 및 중단이 발생해도 작업의 결과가 확실하게 추적되도록 해야 합니다. Amazon SWF를 사용하면 개발자는 차별화된 애플리케이션 로직(예: 작업 처리 방법 및 조정 방법)에 집중할 수 있습니다.

기존의 워크플로 제품 중에는 개발자가 특수 언어를 습득하고 비싼 데이터베이스 호스팅을 하며 여러 작업 실행을 제어해야만 하는 것도 있습니다. 특수 언어는 복잡한 애플리케이션의 표현이 어렵고 유연성이 부족하므로 변경을 반영하는 데 시간이 걸릴 수 있습니다. 이와 반대로, 클라우드 기반 서비스인 Amazon SWF는 일반 프로그래밍 언어를 사용할 수 있으며 개발자가 어디에서든 작업 진행을 제어할 수 있습니다. Amazon SWF는 분산 애플리케이션용으로 느슨하게 결합된 모델을 채택함으로써 변경 사항도 민첩하게 적용할 수 있습니다.

Q: 워커와 디사이더란 무엇입니까?
Amazon SWF에서는 서비스와 직접 통신하는 워커와 디사이더를 통해 애플리케이션을 구현합니다. 워커는 Amazon SWF와 상호 작용하여 작업을 받아 처리하고 그 결과를 반환하는 프로그램입니다. 디사이더는 여러 작업의 조정을 제어하는 프로그램입니다. 즉 작업의 실행 순서, 동시성 및 일정을 애플리케이션 로직에 따라 제어합니다. 워커와 디사이더는 Amazon EC2와 같은 클라우드 인프라에서 실행하거나 시스템의 방화벽 뒤에서 실행할 수 있습니다. Amazon SWF는 워커와 디사이더 간의 상호 작용을 중개합니다. 이를 통해 디사이더는 작업 진행 상황을 계속해서 지켜보면서 새 작업을 순차적으로 시작할 수 있습니다. 이와 동시에 Amazon SWF는 작업을 저장하고 실행 가능 작업을 워커에 할당하며 작업 진행 상황을 모니터링합니다. 이를 통해 작업 할당이 중복 없이 한 번만 이루어지도록 보장할 수 있습니다. Amazon SWF은 애플리케이션의 상태 정보를 항상 유지하고 있으므로 워커와 디사이더가 실행 상태를 추적할 필요가 없습니다. 워커와 디사이더는 서로 독립적으로 실행될 수 있으며 확장도 빠르게 할 수 있습니다. Amazon SWF를 사용하여 애플리케이션을 개발하는 단계에 대한 자세한 내용은 Amazon SWF 세부 정보 페이지의 기능 섹션을 참조하십시오.

여러 개의 워크플로를 Amazon SWF에서 동시에 실행할 수 있습니다. 각 실행은 워크플로 실행 또는 실행이라고 합니다. 실행을 구별하기 위해 고유의 이름이 지정됩니다. Amazon SWF Management Console(또는 시각화 API)을 사용하면 전반적인 실행 상황을 볼 수 있으며, 특정 실행 작업을 드릴다운하여 작업 수준의 상세 정보를 볼 수 있습니다.

Q: 애플리케이션 제작 시 Amazon SWF는 어떠한 프로그래밍 편이성을 제공합니까?
다른 AWS 서비스와 마찬가지로 Amazon SWF는 웹 서비스 API의 핵심 SDK를 제공합니다. 또한, Amazon SWF에서는 AWS Flow Framework라고 부르는 SDK도 제공하여 Amazon SWF 기반 애플리케이션을 빠르고 쉽게 개발할 수 있습니다. AWS Flow Framework는 작업 수준 조정 정보를 익숙한 프로그래밍 구문으로 표현할 수 있습니다. 프로그램을 실행할 때, AWS Flow Framework에서 Amazon SWF를 호출하고, Amazon SWF가 보유하고 있는 실행 기록을 사용하여 프로그램의 실행 상태를 추적하며, 개발자가 작성한 관련 코드 부분을 적시에 호출합니다. AWS Flow Framework에서 Amazon SWF에 액세스하는 직관적인 프로그래밍 프레임워크를 제공함으로써 개발자는 워크플로에 구조화된 비동기 상호 작용으로 전체 애플리케이션을 작성할 수 있습니다. 자세한 내용은 "AWS Flow Framework란 무엇입니까?"를 참조하십시오.

Q: Amazon SWF와 AWS Step Functions는 각각 언제 사용해야 합니까?

AWS Step Functions는 시각적 워크플로를 사용하여 분산 애플리케이션과 마이크로 서비스의 구성 요소를 손쉽게 조정할 수 있게 해주는 완전관리형 서비스입니다. Decider 프로그램을 작성하는 대신 JSON으로 상태 시스템을 정의합니다. AWS 고객은 새로운 애플리케이션에 Step Functions를 사용하도록 고려해야 합니다. Step Functions가 요건에 맞지 않는다면 Amazon Simple Workflow(SWF)를 고려해야 합니다. Amazon SWF는 오케스트레이션 로직에 대한 완벽한 제어를 제공하지만, 애플리케이션 개발의 복잡성을 높입니다. 원하는 프로그래밍 언어로 Decider 프로그램을 작성하거나 Flow Framework를 통해 동기식 상호 작용을 구성하는 프로그래밍 구문을 사용할 수 있습니다. AWS는 Amazon SWF 서비스, Flow Framework, 그리고 모든 Amazon SWF 고객에 대한 지원을 계속 제공할 것입니다.

Q: Amazon SWF는 Amazon SQS와 어떻게 다릅니까?

Amazon SQS와 Amazon SWF는 모두 애플리케이션 또는 마이크로서비스를 통합하는 서비스입니다.

  • Amazon Simple Queue Service(Amazon SQS)는 메시지가 애플리케이션 또는 마이크로서비스 사이를 이동하는 동안 메시지 저장을 위한 안정적이고 확장성이 뛰어난 호스팅된 대기열을 제공합니다. Amazon SQS를 통해 분산된 애플리케이션 구성 요소 간 데이터 이동이 가능하며, 이들 구성 요소를 분리할 수 있습니다.
  • Amazon Simple Workflow Service(Amazon SWF)는 분산된 애플리케이션 구성 요소에서 쉽게 작업을 조정할 수 있도록 하는 웹 서비스입니다.

Amazon SQS와 Amazon SWF의 주요 차이점은 다음과 같습니다.

  • Amazon SWF API 동작은 작업 지향적입니다. Amazon SQS API 동작은 메시지 지향적입니다.
  • Amazon SWF는 애플리케이션의 모든 작업과 이벤트를 추적합니다. Amazon SQS에서는 특히 애플리케이션이 여러 대기열을 사용하는 경우, 애플리케이션 수준 추적을 사용자가 구현해야 합니다.
  • Amazon SWF 콘솔과 가시성 API에서 애플리케이션 중심의 보기가 제공되므로, 특정 실행에 대한 검색, 특정 실행의 자세한 정보에 대한 드릴다운, 실행 관리 등을 할 수 있습니다. Amazon SQS에서는 이런 추가 기능을 구현해야 합니다.
  • Amazon SWF는 애플리케이션 개발에 유용한 몇 가지 기능(예: 작업 간 데이터 전달, 신호 처리, 유연한 작업 분산 등)을 제공합니다. Amazon SQS에서는 일부 애플리케이션 수준 기능을 구현해야 합니다.
  • Amazon SWF는 서비스 API를 호출하는 핵심 SDK뿐만 아니라 비동기 상호 작용을 구조화하는 프로그래밍 구문을 사용하여 손쉽게 분산 애플리케이션을 작성할 수 있도록 AWS Flow Framework를 제공합니다.

Amazon SQS를 사용하여 분산 애플리케이션을 조정하는 기본 워크플로를 구축할 수 있지만, Amazon SWF를 사용하면 다른 애플리케이션 수준의 기능과 함께 이 기능을 바로 확보할 수 있습니다.

사용자 필요에 가장 적합한 솔루션을 결정하려면 Amazon SQS와 Amazon SWF 둘 다 사용해 보는 것이 좋습니다.

Q: Amazon SWF로 지원할 수 있는 사용 사례에는 어떤 것이 있습니까? 

Amazon SWF는 미디어 프로세싱, 비즈니스 프로세스 자동화, 데이터 분석, 클라우드로 마이그레이션, 배치성 프로세스 등에 사용되고 있습니다. 다음은 몇 가지 예입니다.

사용 사례 1: Amazon S3 및 Amazon EC2를 사용하여 동영상 인코딩. 이 사용 사례에서는 큰 동영상을 여러 개의 청크로 나누어 Amazon S3로 업로드합니다. 이 청크의 업로드를 모니터링해야 합니다. 업로드된 청크는 Amazon EC2 인스턴스로 다운로드되어 인코딩됩니다. 인코딩된 청크는 다른 Amazon S3 위치에 저장됩니다. 이러한 방법으로 모든 청크가 인코딩되면, 인코딩된 청크를 결합하여 하나의 인코딩된 파일을 만들고 그대로 Amazon S3에 저장합니다. 하나 이상의 청크에 인코딩 오류가 있는 경우, 이 프로세스 도중에 장애가 발생할 수 있습니다. 이러한 장애는 탐지되고 처리되어야 합니다.

Amazon SWF에서는 전체 애플리케이션을 하나의 워크플로로 구축하고 각 동영상 파일을 하나의 워크플로 실행으로 취급합니다. 하나의 청크를 Amazon S3에 업로드, 하나의 청크를 Amazon S3에서 Amazon EC2 인스턴스로 다운로드하여 인코딩, 하나의 청크를 Amazon S3에 다시 저장, 여러 청크를 결합하여 하나의 파일 만들기, 완성된 파일을 Amazon S3에 업로드 등의 개별 작업은 별도의 워커가 각각 진행합니다. 이 사용 사례는 병렬 처리가 가능하므로 디사이더가 여러 작업을 동시에 시작합니다. 업로드된 청크 하나를 인코딩하는 작업을 시작할 때 다른 청크 업로드가 완료될 때까지 기다릴 필요가 없습니다. 청크를 처리하는 작업이 실패한 경우에 디사이더가 해당 청크만 다시 실행합니다. Amazon SWF에서 보관하는 애플리케이션 상태 정보는 디사이더가 워크플로를 제어할 때 도움이 됩니다. 예를 들어 디사이더는 이 정보를 사용하여 모든 청크 인코딩이 완료되었음을 탐지하고 각 Amazon S3 위치를 추출하여 인코딩된 청크가 결합될 수 있도록 합니다. 실행 진행 상황은 언제든지 Amazon SWF Management Console에서 볼 수 있습니다. 작업이 실패한 경우, 실패한 해당 작업을 파악하여 실패한 청크를 정확히 찾아냅니다.

사용 사례 2: 대형 제품 카탈로그를 Amazon Mechanical Turk를 사용하여 처리. 대형 카탈로그의 데이터를 확인할 때, 카탈로그의 제품을 배치로 나누어 처리합니다. 여러 배치를 동시에 처리할 수 있습니다. 배치마다, 제품 데이터를 데이터 센터 서버에서 추출하여 CSV(쉼표 구분 값) 파일로 변환합니다. 이것은 Amazon Mechanical Turk의 RUI(Requester User Interface)에서 요구되는 형식입니다. 이 CSV를 업로드하여 HIT(Human Intelligence Task)를 채워 실행합니다. HIT가 완료되면 생성된 CSV를 역변환하여 데이터를 원본 형태로 되돌립니다. 이 결과를 평가하고 결과가 합격한다면 Amazon Mechanical Turk의 워커에게 보상이 지급됩니다. HIT 결과가 실패일 때는 제거 후 재처리하지만 합격일 때는 그 결과를 사용하여 카탈로그를 업데이트합니다. 배치가 처리될 때, 시스템은 Amazon Mechanical Turk 워커의 품질을 추적하여 보상을 적절하게 조정해야 합니다. 실패한 HIT는 다시 배치에 포함되고 다시 파이프라인에 보내집니다.

Amazon SWF를 사용하는 경우: 위의 사용 사례는 워크플로의 세트로 구현됩니다. BatchProcess 워크플로는 단일 배치성 프로세스를 처리하며, 워커가 데이터를 추출하고 변환하여 Amazon Mechanical Turk를 통해 전송하도록 합니다. BatchProcess 워크플로의 결과물은 합격 HIT와 실패 HIT입니다. 이것은 MTurkManager, UpdateCatalogWorkflow, RerunProducts라는 3가지 워크플로에 대한 입력값으로 사용됩니다. MTurkManager 워크플로는 합격 HIT에 대해 지불하고, 실패 HIT을 담당한 작업자에게 통지하며, 결과 품질 추적용 자체 데이터베이스를 업데이트합니다. UpdateCatalogWorkflow는 합격 HIT에 따라 마스터 카탈로그를 업데이트합니다. RerunProducts 워크플로는 실패 HIT의 제품이 일정 수에 도달할 때까지 기다립니다. 그 후 배치를 생성하여 BatchProcess 워크플로로 다시 보냅니다. CleanupCatalog 워크플로에서 전체 카탈로그 처리를 수행하며, 위에 언급한 워크플로의 하위 실행을 시작합니다. 명확하게 정의된 워크플로를 갖는 시스템을 구축하는 이 사용 사례를 통해 제품 수가 수백만인 카탈로그를 구조적으로 설계, 감사 및 실행할 수 있습니다.

사용 사례 3: 구성 요소를 데이터 센터에서 클라우드로 마이그레이션. 비즈니스 크리티컬 작업이 프라이빗 데이터 센터에서 호스팅되고 있지만 서비스 중단 없이 전체를 클라우드로 이전해야 합니다.

Amazon SWF를 사용하는 경우: Amazon SWF 기반 애플리케이션은 데이터 센터에서 실행되는 구성 요소를 포함한 워커와 클라우드에서 실행되는 워커를 연결합니다. 데이터 센터 워커를 원활하게 이전하려면 같은 종류의 새 워커를 먼저 클라우드에 배포합니다. 데이터 센터의 워커는 새 클라우드 기반 워커와 함께 계속 정상적으로 실행됩니다. 작업 부하의 일부를 라우팅하여 클라우드 기반 워커를 테스트하고 검증합니다. 이 테스트를 진행하는 동안에도 데이터 센터의 워커는 계속 실행되고 있으므로 애플리케이션은 중단되지 않습니다. 테스트 결과가 합격이라면, 데이터 센터의 워커를 단계적으로 중지하고 클라우드의 워커를 확장하여 최종적으로 모든 워커를 클라우드에서 실행합니다. 이러한 프로세스를 데이터 센터에 있는 다른 모든 워커에 대해서도 동일하게 실행하면 애플리케이션을 완전히 클라우드로 이전할 수 있습니다. 비즈니스의 이유로 특정 작업 단계를 계속 프라이빗 데이터 센터에서 실행해야 하는 경우, 워커를 계속 프라이빗 데이터 센터에서 실행하면서도 애플리케이션에 참여하도록 할 수 있습니다.

개발자와 엔터프라이즈가 Amazon SWF를 사용하여 구축한 다양한 애플리케이션 및 시스템은 AWS 사례 연구를 참조하십시오.

Q: Amazon은 자체 애플리케이션에 Amazon SQS를 사용하고 있습니까?
예. Amazon의 개발자는 Amazon SWF를 매우 다양한 프로젝트에 사용하고 있으며, 매일 수백만 개의 워크플로를 실행합니다. 주요 사용 사례로는 Amazon.com과 AWS 웹 사이트를 뒷받침하고 있는 주요 비즈니스 프로세스, AWS의 다양한 웹 서비스와 API 구현, 운영 의사 결정을 위한 MapReduce 분석, 사용자를 위한 콘텐츠(웹 페이지, 동영상, Kindle 도서 등) 관리를 들 수 있습니다.

Q: Amazon SWF를 시작하려면 어떻게 해야 합니까?
Amazon SWF에 로그인하려면 Amazon SWF 세부 정보 페이지로 이동한 후 “지금 가입” 버튼을 클릭합니다. Amazon Web Services 계정이 없는 경우 계정을 만들라는 메시지가 나타납니다. 가입 후 AWS Management Console의 샘플 연습을 실행하면 Amazon SWF에서 간단한 이미지 변환 애플리케이션을 실행하는 단계를 연습할 수 있습니다. 또한 다양한 서비스 기능을 익힐 수 있는 AWS Flow Framework 샘플을 다운로드할 수 있습니다. 애플리케이션에서 Amazon SWF를 사용하여 시작하려면 Amazon SWF 설명서를 참조하십시오.

Q: Amazon SWF를 체험해 볼 수 있는 샘플 워크플로가 있습니까?
예. Amazon SWF를 처음 사용하는 경우 AWS Management Console의 샘플 연습이 도움이 될 것입니다. 이 연습에서는 도메인과 유형 등록, 워커와 디사이더 배포, 워크플로 실행 시작 방법 등을 안내하고 있습니다. 이 연습에서 사용되는 워커와 디사이더용 코드를 다운로드하여 사용자의 인프라에서 실행할 수 있으며 이 코드를 수정하여 자신만의 애플리케이션을 만들 수도 있습니다. 또한 AWS Flow Framework 샘플도 다운로드할 수 있습니다. 이 샘플에서는 Amazon SWF의 사용 방법을 분산 데이터 처리, Cron 작업 및 애플리케이션 스택 배포 등 다양한 사용 사례를 통해 소개합니다. 소스 코드가 포함되어 있으므로, Amazon SWF 기능 및 AWS Flow Framework를 사용하여 분산 애플리케이션을 구축하는 방법을 자세히 살펴볼 수 있습니다.

Q: SWF에 액세스하는 방법에는 어떤 것이 있습니까?
다음의 여러 가지 방법으로 SWF에 액세스할 수 있습니다.

  • Java, Ruby, .NET 및 PHP용 AWS SDK
  • Java용 AWS Flow Framework(Java용 AWS SDK에 포함)
  • Amazon SWF 웹 서비스 API
  • AWS Management Console


Q: 등록이란 무엇입니까?
등록은 일회성 단계로 워크플로 및 활동의 각 유형에 대해 수행합니다. 프로그래밍 방식이나 Amazon SWF Management Console을 통해 등록할 수 있습니다. 등록 시 각 활동 또는 워크플로 유형에 고유한 유형 ID를 지정합니다. 또한 워크플로를 실행할 때 사용되는 기본 정보(예: 시간제한 값, 작업 분산 파라미터 등)를 지정합니다.

Q: 도메인이란 무엇입니까?
SWF에서는 애플리케이션 리소스에 대한 논리적 컨테이너를 정의하는데 이 논리적 컨테이너를 도메인이라고 합니다. 도메인은 AWS 계정 수준에서만 만들 수 있고 중첩될 수 없습니다. 도메인은 모든 사용자 정의 이름을 지정할 수 있습니다. 개별 애플리케이션 리소스, 예를 들어 워크플로 유형, 활동 유형, 실행은 각각 하나의 도메인에 속합니다. 등록 진행 시 어떤 워크플로와 작업 유형으로 도메인을 등록할지를 지정합니다. 실행을 시작하면 자동으로 워크플로 유형과 동일한 도메인에 만들어집니다. 리소스 식별자(예: 유형 ID, 실행 ID 등)의 고유 범위는 하나의 도메인입니다. 즉, 동일한 식별자를 다른 도메인에서 다시 사용할 수 있습니다.

Q: 여러 환경과 그룹에 분산되어 있는 애플리케이션 리소스를 어떻게 관리합니까?
도메인을 사용하여 애플리케이션 리소스를 정리하면 관리가 편하고 리소스 간의 의도하지 않은 영향을 피할 수 있습니다. 예를 들어, 개발, 테스트, 프로덕션의 세 가지 환경에 대해 각각 다른 도메인을 만들고 각 도메인에 해당하는 리소스를 만듭니다. 각 도메인에 동일한 워크플로 유형을 등록할 수 있지만 각 도메인에서 별개의 리소스로 처리됩니다. 개발 도메인에서 설정을 변경하거나 테스트 도메인에서 실행을 관리할 때 프로덕션 도메인의 해당 리소스에 영향을 주지 않습니다.

Q: 디사이더는 어떻게 Amazon SWF의 워크플로를 조정합니까?
디사이더는 특수한 유형의 워커로 볼 수 있습니다. 워커와 마찬가지로 디사이더는 모든 언어로 작성할 수 있고 Amazon SWF에 작업을 요청합니다. 그러나 디사이더는 의사 결정 작업이라고 불리는 특수한 작업을 처리합니다. Amazon SWF는 워크플로 실행이 활동 작업 완료 또는 시간 초과로 전환될 때 의사 결정 작업을 지시합니다. 의사 결정 작업은 입력, 출력 및 이전에 시작된 활동 작업의 현재 상태 정보를 담고 있습니다. 디사이더는 이 데이터를 사용하여 새 활동 작업을 포함한 다음 단계를 결정한 후 Amazon SWF에 반환합니다. Amazon SWF는 수신된 결정에 따라 적절한 새 활동 작업을 시작하고 모니터링합니다. 의사 결정 작업에 대한 응답을 계속 실시하여 디사이더는 활동 작업의 순서, 시점 및 동시성은 물론, 결과적으로 애플리케이션에서 처리 단계의 실행을 제어합니다. 실행이 시작되면 SWF가 최초의 의사 결정 작업을 지시합니다. 그 이후에는 Amazon SWF는 디사이더가 내린 결정에 따라 실행을 진행해 나갑니다. 디사이더가 실행을 완료하도록 의사 결정을 내릴 때까지 실행이 지속됩니다.

디사이더의 의사 결정에 도움이 되도록 SWF는 실행 중인 모든 작업의 상세 정보를 지속적으로 기록합니다. 이 기록을 내역이라고 부르며 각 실행에 대해 고유하게 작성됩니다. 실행이 시작되면 새 내역이 시작됩니다. 이 시점에 내역에는 실행의 입력 데이터와 같은 초기 정보가 포함됩니다. 그 이후에 워커가 활동 작업 진행하면 Amazon SWF가 입력 및 출력 데이터를 반영하여 최신 상태 정보로 내역을 업데이트합니다. 디사이더가 의사 결정 작업을 받을 때, 그 실행 내역을 검사할 수 있습니다. Amazon SWF는 의사 결정 작업 지시 시점의 실행 상태가 내역에 정확하게 반영되도록 합니다. 디사이더는 이 내역을 사용하여 이 실행에서 어떤 사항이 발생했는지 확인하고 다음 단계를 적절하게 결정할 수 있습니다.

Q: 워커 또는 디사이더가 자신이 이해한 작업만을 받을 수 있도록 하려면 어떻게 해야 합니까?
작업 목록을 사용하여 작업 할당 방법을 결정합니다. 작업 목록은 Amazon SWF 리소스이고, 작업이 시작되면 이 목록에 추가되며 이 목록에있는 작업이 요청됩니다. 작업 목록에는 사용자 정의 이름이 지정됩니다. 작업 목록에 있는 작업 유형 ID가 동일하지 않아도 상관없지만, 모든 작업은 활동 작업 또는 의사 결정 작업이어야 합니다. 등록 시 각 활동 또는 워크플로 유형에 기본 작업 목록을 지정합니다. Amazon SWF에서는 작업 목록을 런타임에 만들 수 있습니다. 이름을 지정하고 시작함으로써 간단히 작업 목록을 만들어 사용합니다. 작업 목록은 다음과 같이 사용됩니다.

  • 활동 작업을 시작할 때 디사이더가 작업을 특정 작업 목록에 추가하거나 활동 유형의 기본 작업 목록에 작업을 추가하도록 Amazon SWF에 요청합니다.
  • 실행을 시작할 때 모든 의사 결정 작업을 특정 작업 목록에 추가하거나, 워크플로 유형에 대한 기본 작업 목록에 추가하도록 Amazon SWF에 요청할 수 있습니다.
  • 작업을 요청하면 디사이더와 워커는 어떤 작업 목록에서 작업을 받을지를 지정합니다. 그 목록에서 작업을 사용할 수 있는 경우 SWF가 응답하며 작업과 작업 유형 ID를 전송합니다.

위의 내용에 따라 작업을 추가할 작업 목록과 각 목록에서 작업을 요청할 워커를 제어합니다. 이렇게 하면 워커와 디사이더는 각각 이해할 수 있는 작업만 받게 됩니다.

Q: AWS Flow Framework란 무엇입니까? 워크플로 조정에 어떻게 도움이 됩니까?
AWS Flow Framework는 Amazon SWF 기반 애플리케이션을 빠르고 쉽게 개발할 수 있도록 도와주는 프로그래밍 프레임워크입니다. 이 프레임워크는 작업 수준의 조정 정보와 비동기 상호 작용의 정보를 간단한 프로그래밍 구문으로 표현합니다. Amazon SWF에서 워크플로를 조정하려면 원격 작업을 시작해야 합니다. 원격 작업은 완료 시간이 다양하며(예: 활동 작업) 작업 간의 종속 관계를 올바르게 구현해야 합니다.

AWS Flow Framework를 사용하면 조정의 두 양상을 익숙한 프로그래밍 개념을 사용하여 쉽게 표현할 수 있습니다. 예를 들어, 활동 작업 시작은 메서드에 대한 호출과 같이 간단합니다. AWS Flow Framework가 자동으로 호출을 활동 작업 시작 의사 결정으로 해석하고, Amazon SWF가 작업을 워커에게 할당하고 모니터링하며 완료 시 보고를 반환합니다. 프레임워크는 출력 데이터를 포함한 작업 결과를 사용자가 메서드 호출의 반환 값으로 사용할 수 있도록 합니다. 일반적인 메서드 호출에서와 마찬가지로 이 반환 값을 코드에서 사용하여 작업에 대한 종속 관계를 표현합니다. 작업이 완료될 때까지 프레임워크의 런타임이 자동으로 중지되고 결과를 사용할 수 있는 상태가 되면 실행을 재개합니다. 내부적으로는 프레임워크의 런타임이 Amazon SWF로부터 워커 및 의사 결정 작업을 받고 프로그램에서 적시에 해당 메서드를 호출하여 의사 결정 후 Amazon SWF로 반환합니다. 직관적인 프로그래밍 프레임워크로 Amazon SWF에 대한 액세스를 제공하는 AWS Flow Framework를 사용하면 애플리케이션 개발에 간편하게 비동기 이벤트 기반 프로그래밍을 통합할 수 있습니다.

Q: 워커와 디사이더는 Amazon SWF와 어떻게 통신합니까? 폴링 프로토콜은 리소스를 많이 사용하지 않습니까?
일반적인 폴링 기반 프로토콜의 경우 개발자가 최적의 폴링 빈도를 찾아야합니다. 폴링 빈도가 너무 높으면 폴링 결과가 비어있는 횟수가 늘어날 수 있습니다. 이 경우 애플리케이션 및 네트워크 리소스가 폴링에 많이 사용되지만 실행을 진행할 의미 있는 성과는 얻을 수 없는 상황이 됩니다. 폴링 빈도가 너무 낮으면 메시지의 보관 시간이 길어지고 애플리케이션 지연 시간이 증가할 수 있습니다.

폴링에 내재된 비효율성을 해소하기 위해 Amazon SWF는 긴 폴링을 채택하고 있습니다. 긴 폴링을 사용하면 아무것도 반환하지 않는 폴링의 수가 크게 감소합니다. 워커와 디사이더가 Amazon SWF에 작업 요구 폴링을 수행할 때 작업이 없으면 연결이 1분 동안 유지됩니다. 이 시간이 경과하기 전에 사용 가능한 작업이 생기면 해당 작업이 긴 폴링 요청에 대한 응답으로 반환됩니다. 연결이 일정 시간 유지되기 때문에 그 시간이 경과할 때까지 결과가 없는 폴링은 실행되지 않습니다. 긴 폴링을 통해, 푸시 기반의 웹 서비스가 가지는 지연 시간과 효율성 측면의 장점을 유지하면서 폴링의 보안 및 흐름 제어 측면의 장점을 애플리케이션에 활용할 수 있습니다.

Q: 기존 웹 서비스를 워커로 사용할 수 있습니까?
워커는 표준 HTTP GET 요청을 사용하여 Amazon SWF에서 작업을 받고 결과를 반환합니다. 기존 웹 서비스를 워커로 사용하려면 Amazon SWF에서 작업을 받고, 필요에 따라 웹 서비스 API를 호출하며, 결과를 Amazon SWF에 반환하는 래퍼를 작성합니다. 이 래퍼에서 작업과 함께 전달되는 입력 데이터를 웹 서비스 API의 파라미터로 변환합니다. 마찬가지로 웹 서비스 API의 출력 데이터는 작업 결과로 변환하여 Amazon SWF에 반환합니다.

Q: Amazon SWF에 사용할 수 있는 언어에 제한이 있습니까?
아니요, 웹 서비스 API를 사용하여 Amazon SWF와 통신할 수 있다면 워커나 디사이더를 작성할 때 어떤 프로그래밍 언어를 사용하든 상관없습니다. AWS SDK는 현재 Java, .NET, PHP 및 Ruby를 사용할 수 있습니다. Java용 AWS SDK에는 AWS Flow Framework가 포함되어 있습니다.

Q: 단 한 번의 실행으로 비즈니스 프로세스(예: 트랜잭션, 제출 또는 배정)의 활성화를 보장하고 싶습니다. 어떻게 해야 가능합니까?
새 워크플로 실행을 시작할 때 해당 워크플로 실행에 ID를 부여합니다. 이러면 실행을 특정 비즈니스 엔터티 또는 작업(예: 고객 ID, 파일 이름, 일련번호)에 연결할 수 있습니다. 실행되는 동안 실행 ID의 중복이 없도록 Amazon SWF가 보장합니다. 이 동안에는 동일한 ID를 사용하는 다른 실행의 시작 시도는 실패하게 됩니다. 이를 통해 트랜잭션, 제출, 배정 등과 같은 하나의 비즈니스 작업에 대해 2개 이상의 실행을 허용하지 않는다는 비즈니스 요구를 충족할 수 있습니다. 예를 들어, 특정 웹 사이트의 새 사용자 등록 작업 흐름을 생각해 보겠습니다. 사용자가 제출 버튼을 클릭하면 해당 사용자의 고유 이메일 주소가 실행에 대한 이름으로 사용될 수 있습니다. 그 실행이 이미 존재하면 실행 시작 호출이 실패합니다. 등록 과정이 진행되는 동안 사용자가 이 버튼을 두 번 이상 클릭할 수도 있지만 이 경우 충돌을 막기위한 추가 코드는 필요하지 않습니다.

이 워크플로 실행이 완료되면(성공 또는 실패와 관계없이) 동일한 ID를 갖는 다른 워크플로 실행을 시작할 수 있습니다. 이 경우 해당 워크플로 실행의 새 작업은 동일한 실행 ID를 갖지만 작업 ID는 다르게 됩니다. 이 작업 ID는 Amazon SWF에 의해 생성되는 것이며, 동일한 워크플로 실행 ID의 실행이 여러 개 있는 경우에도 작업 ID로 구분할 수 있습니다. Amazon SWF에서는 이와 같이 워크플로 실행 ID를 다시 사용할 수 있으므로, 재시도와 같은 사례에도 대응 가능합니다. 위에서 살펴본 사용자 등록 예에서는 사용자의 데이터베이스 레코드 작성 시 워크플로 실행이 실패했다고 가정했습니다. 이 워크플로 실행을 다시 시작할 때 동일한 실행 ID(사용자 이메일 주소)를 사용할 수 있으므로 등록 재시도를 위한 새로운 ID를 만들 필요가 없습니다.

Q: Amazon SWF는 애플리케이션 확장에 어떻게 도움이 됩니까?
Amazon SWF에서는 사용자가 각 활동 유형에 대해 실행할 워커 수 및 디사이더에 대해 실행할 인스턴스 수를 지정함으로써 애플리케이션 확장이 가능하도록 합니다. 워커 수 또는 디사이더 인스턴스 수를 늘리면 해당 처리 단계에 할당된 컴퓨팅 리소스가 증가하고, 따라서 그 단계의 처리량이 증가하게 됩니다. 자동 크기 조정을 할 경우, Amazon SWF가 API를 통해 제공하는 런타임 데이터를 사용할 수 있습니다. 예를 들어, Amazon SWF는 한 작업 목록의 작업 수를 제공합니다. 이 수치가 증가하면 워커가 작업 부하를 처리하지 못할 우려가 있으므로 처리 대기 작업 숫자가 임계값을 초과하면 자동으로 새 워커를 추가하도록 설정할 수 있습니다.

Q: 많은 미션 크리티컬 애플리케이션을 실행하고 있습니다. 이러한 애플리케이션을 모니터링 및 확장하려면 어떻게 해야 합니까?
Management Console뿐만 아니라 Amazon SWF에는 포괄적인 기능을 갖춘 시각화 API가 포함되어 있습니다. 이 API가 제공하는 런타임 정보를 사용하여 모든 실행을 모니터링하고 부하에 따라 실행 규모를 자동으로 조정할 수 있습니다. 지정한 시간 범위 내에 오픈된 실행 수와 종료된 실행 수 등 워크플로우 유형별로 상세 데이터를 검색할 수 있습니다. 이 시각화 API를 사용하여 사용자만의 모니터링 애플리케이션을 구축할 수도 있습니다.

Q: 항상 많은 실행을 동시에 진행하고 있으며 그중 일부가 종종 중단 또는 중지됩니다. 이러한 문제가 있는 실행을 탐지하고 문제를 해결하려면 어떻게 해야 합니까?
Amazon SWF에서는 Management Console 및 시각화 API를 사용하여 실행을 검색할 수 있습니다. 사용자는 다양한 검색 조건을 지정할 수 있습니다. 예를 들어, 실행 시작 또는 완료까지의 시간 간격, 현재 상태(예: open 또는 closed), 표준 장애 모드(예: timed out, terminated) 등이 있습니다. 여러 워크플로 실행을 그룹화하기 위해 태그를 최대 5개까지 사용할 수 있습니다. 이 태그를 사용하여 워크플로 실행을 시작할 때 사용자 정의 텍스트를 그 실행에 연결합니다. AWS Management Console에서 이 태그를 워크플로 실행의 검색에 사용할 수 있습니다.

정지되었을 수 있는 실행을 찾으려면 시간 기준 검색 조건으로 시간이 예상보다 긴 실행을 추출합니다. 그다음, 추출한 실행 각각에 대해 작업 수준의 상세 정보를 확인하여 실행 시간이 너무 길거나 실패한 작업인지, 아니면 단순히 아직 디사이더가 작업을 시작하지 않은 것인지를 확인할 수 있습니다. 이렇게 하면 작업 수준의 문제를 확인할 수 있습니다.

Q: 여러 애플리케이션에서 사용할 수 있는 활동 유형을 보유하고 있습니다. 이 활동 유형을 여러 애플리케이션 간에 공유할 수 있습니까?
예. 애플리케이션과 활동이 모두 동일한 도메인에 등록되어 있으면 여러 애플리케이션이 동일한 활동 유형을 공유할 수 있습니다. 이를 구현하려면 다양한 디사이더가 그 활동 유형의 작업을 시작할 때 그 활동을 담당하는 워커가 폴링하는 작업 목록에 작업을 추가합니다. 이제 그 활동 유형의 워커는 다양한 모든 애플리케이션에서 활동 작업을 받을 수 있습니다. 활동 작업이 어떤 애플리케이션에서 오는지 알 수 있도록 하거나 애플리케이션마다 다른 워커를 배포하려면 다중 작업 목록을 사용할 수 있습니다. 자세한 내용은 워커 또는 디사이더가 그들이 이해한 작업만을 받을 수 있도록 하려면 어떻게 해야 합니까?를 참조하십시오.

Q: AWS Identity and Access Management(IAM)를 사용하여 Amazon SWF에 대한 액세스를 관리할 수 있습니까?
예. IAM 사용자에게 Amazon SWF에 액세스할 수 있는 권한을 부여할 수 있습니다. IAM 사용자는 SWF 도메인 및 사용자가 지정한 API에만 액세스할 수 있습니다.

Q: 워커를 방화벽 밖에서 실행할 수 있습니까?
예. 워커는 표준 HTTP GET 요청을 사용하여 Amazon SWF에서 작업을 요청하고 처리 결과를 반환합니다. 항상 워커가 Amazon SWF에 요청을 시작하므로 인바운드 요청을 허용하도록 방화벽을 구성할 필요가 없습니다.

Q: 비즈니스 로직을 워커와 디사이더에 노출하는 것은 보안상 위험하지 않습니까?
워커는 표준 HTTP GET 요청을 사용하여 Amazon SWF에서 작업을 요청하고 처리 결과를 반환합니다. 따라서 워커에 대한 엔드포인트를 노출할 필요가 없습니다. 또한, 디사이더가 작업을 시작한 경우에만 Amazon SWF에서 워커에게 작업을 전달하게 됩니다. 디사이더는 사용자가 작성하기 때문에, 작업을 만드는 시점과 방법은 물론이고 작업과 함께 워커에게 전달되는 입력 데이터도 사용자가 완전히 제어할 수 있습니다.

Q: Amazon SWF는 애플리케이션에서 작업을 안정적으로 조정하는 데 어떤 도움이 됩니까?
Amazon SWF에는 작업 배정을 보장하는 유용한 기능이 있습니다. 이를 통해 작업 배정이 중복 없이 한 번만 이루어지도록 보장할 수 있습니다. 따라서 특정 활동 유형에 대해 여러 워커가 있는 경우라도(또는 한 디사이더에 여러 인스턴스가 있는 경우), Amazon SWF에서 하나의 특정 작업은 하나의 워커(또는 하나의 디사이더 인스턴스)에게만 전달될 것입니다. 또한 Amazon SWF에서는 한 워크플로우 실행에 대해 한 번에 최대 하나의 의사 결정 작업만 보관합니다. 즉, 여러 디사이더 인스턴스를 실행하는 경우에도 동일한 실행에 두 인스턴스가 동시에 작동하지는 않습니다. 이러한 기능을 통해 워크플로를 조정하면 작업의 중복, 손실, 충돌 등에 대해 걱정할 필요가 없습니다.

Q: Amazon SWF에 등록할 수 있는 워크플로 유형, 활동 유형 및 도메인의 수는 얼마나 됩니까?
각 도메인에서 가질 수 있는 워크플로 유형과 활동 유형의 수는 등록된 상태와 폐지 예정 상태를 합해 최대 10,000개입니다. AWS 계정에 만들 수 있는 Amazon SWF 도메인은 최대 100개입니다(등록된 도메인과 폐지 예정 도메인 포함). 위의 제한을 초과할 것으로 예상하는 경우 이 양식을 작성하여 Amazon SWF 팀에 문의하시면 사용자 시나리오와 한도 증가 요청에 대해 안내해 드립니다.

Q: 동시에 실행할 수 있는 워크플로우의 수에 제한이 있습니까?
하나의 도메인에서 동시에 가질 수 있는 오픈 실행수는 최대 100,000개입니다. 누적 실행 수와 Amazon SWF에서 보관하는 실행 개수에는 제한이 없습니다. 위의 제한을 초과할 것으로 예상하는 경우 이 양식을 작성하여 Amazon SWF 팀에 문의하시면 사용자 시나리오와 한도 증가 요청에 대해 안내해 드립니다.

Q: 워크플로우를 계속 실행하는 시간에 제한이 있습니까?
각 워크플로 실행은 최대 1년 동안 실행할 수 있습니다. 워크플로 실행 내역은 최대 25,000개의 이벤트까지 포함할 수 있습니다. 이 제한보다 더 많은 이벤트가 필요한 경우 Amazon SWF에서 제공하는 하위 워크플로 실행 기능을 사용하여 애플리케이션 실행 및 구조화를 계속 진행할 수 있습니다.

Q: 워크플로 실행이 장시간 유휴 상태가 되면 어떻게 됩니까?
Amazon SWF는 워크플로 실행이 오랫동안 유휴 상태로 있어도 특별한 조치를 취하지 않습니다. 유휴 실행에 대해서는 귀하가 설정한 시간제한이 적용됩니다. 예를 들어, 하나의 실행을 수행할 수 있는 최대 시간을 1일로 설정하는 경우 유휴 실행이 1일 제한을 초과하면 시간 초과가 됩니다. 하나의 실행이 진행될 수 있는 시간에 대한 Amazon SWF의 제한(1년)도 유휴 실행에 적용됩니다.

Q: 워커가 하나의 작업을 처리하는 데 얼마나 걸립니까?
Amazon SWF에서는 워커가 하나의 작업 처리에 소요하는 시간에 대한 특별한 제한이 없습니다. 고객이 지정한 활동 작업 기간의 최대치에 따라 제한이 적용됩니다. Amazon SWF에서 하나의 실행 처리 시간은 최대 1년으로 제한됩니다. 워커의 작업 처리 시간은 이 제한을 초과할 수 없습니다.

Q: 아직 워커에 요청되지 않은 작업을 Amazon SWF에서 얼마 동안 유지합니까?
Amazon SWF에서 아직 워커가 폴링하지 않은 작업의 유지 시간에 대한 특별한 제한은 없습니다. 그러나 사용자가 활동 유형을 등록할 때 Amazon SWF가 해당 유형의 활동 작업을 유지할 기본 시간 초과 제한을 설정할 수 있습니다. 활동 작업을 예약할 때 디사이더 코드에서 기본값보다 우선되는 시간 초과 제한을 지정할 수도 있습니다. Amazon SWF는 워크플로 실행을 수행할 수 있는 시간을 최대 1년으로 제한하기 때문에 시간 초과 값이 지정되지 않은 경우 작업이 유지되는 시간은 최대 1년입니다.

Q: 한 번의 의사 결정으로 여러 활동 작업을 예약할 수 있습니까?
예. 한 번의 의사 결정으로 최대 100개의 활동 작업을 예약할 수 있습니다. 또한 한 번에 하나씩 여러 번의 의사 결정을 내릴 수 있습니다.

Q: 한 번의 워크플로 실행과 실행 전체에 사용할 수 있는 워커 작업, 신호 및 마커의 수는 얼마입니까?
단일 워크플로 실행에 사용되는 활동 작업, 신호 및 타이머 수에 대한 제한은 없습니다. 그러나 현재 오픈된 활동 작업은 워크플로 실행당 최대 1,000개만 가질 수 있습니다. 여기에는 이미 시작된 활동 작업과 워커가 진행 중인 활동 작업이 포함됩니다. 마찬가지로 오픈된 타이머는 워크플로 실행당 최대 1,000개, 오픈된 하위 실행은 워크플로 실행당 최대 1,000개만 가질 수 있습니다.

Q: 단일 워크플로 실행에서 전송할 수 있는 데이터의 양은 얼마입니까?
단일 워크플로 실행 시 데이터의 총 전송량에 대한 제한은 없습니다. 그러나 Amazon SWF API는 하나의 실행에서 데이터 전송에 사용되는 파라미터에 대한 상한을 정하고 있습니다. 예를 들어, 활동 작업에 전송되는 입력 데이터 그리고 신호와 함께 전송되는 입력 데이터의 크기는 각각 최대 32,000자로 제한됩니다.

Q: Amazon SWF는 완료된 실행을 보관합니까? 그 경우 얼마 동안 보관합니까?

Amazon SWF는 고객이 지정한 기간까지 완료한 실행 내역을 보관합니다. 지정할 수있는 최대 기간은 90일(약 3개월)입니다. 보존 기간 동안 내역에 액세스할 수 있으며 프로그램 또는 콘솔을 통해 실행을 검색할 수 있습니다.

Q: 어떤 경우에 API 호출이 제한됩니까?
드물게 발생하는 스파이크 수준을 넘어 매우 짧은 기간 동안 너무 많은 API 호출을 하면 제한이 발생할 수 있습니다. 제한이 자주 발생하거나 사용자 애플리케이션에 스파이크가 자주 있는 경우 이 양식을 작성하여 Amazon SWF 팀에 문의하시면 사용자 계정에 대한 별도 한도 설정 요청과 사용 시나리오에 대해 안내해 드립니다.

Q: Amazon SWF를 사용할 수 있는 리전은 어디입니까?
Amazon SWF(SWF)는 미국 동부(버지니아 북부), 미국 서부(오레곤), 미국 서부(캘리포니아 북부), EU(아일랜드), EU(프랑크푸르트), 아시아 태평양(싱가포르), 아시아 태평양(도쿄), 아시아 태평양(시드니), 남아메리카(상파울루) 및 AWS GovCloud(미국) 리전에서 사용할 수 있습니다.

Q: Amazon SWF를 여러 가용 영역에서 사용할 수 있습니까?
예. Amazon SWF는 워크플로 실행 내역과 기타 워크플로에 대한 자세한 정보를 3개의 가용 영역에서 관리하기 때문에, 가용 영역 한 곳에 장애가 발생해도 애플리케이션에서 계속 Amazon SWF를 사용할 수 있습니다.

Q: Amazon SWF 서비스 액세스 포인트란 무엇입니까?
액세스 엔드포인트에 대한 자세한 내용은 AWS General Reference 설명서를 참조하십시오.

Q: 요금에 세금이 포함되어 있습니까?

별도의 언급이 없는 한, 요금에는 VAT 및 해당 판매세를 비롯한 관련 조세 공과가 포함되지 않습니다. 청구지 주소가 일본으로 되어 있는 고객의 경우 AWS 서비스 사용 시 일본 소비세의 적용을 받게 됩니다. 자세히 알아보기.