SWF를 선택해야 하는 이유
개발자는 Amazon Simple Workflow Service(Amazon SWF)를 사용하여 병렬 또는 순차 단계가 있는 백그라운드 작업을 구축, 실행, 확장할 수 있습니다. Amazon SWF는 클라우드의 완전 관리형 상태 추적기이자 작업 코디네이터라고 생각할 수 있습니다.
앱 단계가 완료되기까지 500밀리초 이상이 걸릴 경우 처리 상태를 추적해야 하며, 작업이 실패하는 경우 복구하거나 재시도해야 합니다. 이러한 일련의 작업을 Amazon SWF가 지원합니다.
AWS 서비스 오케스트레이션, 비즈니스 프로세스를 자동화, 서버리스 애플리케이션 구축을 위한 로우 코드 비주얼 프로세스 흐름 서비스를 찾고 있다면 AWS Step Functions에 대해 자세히 알아보세요.
장점
Amazon SWF는 백그라운드 작업의 단계별 로직에 대한 제어 흐름과 고유의 비즈니스 로직이 포함된 실제 작업 단위 간 분리를 촉진합니다. 이렇게 하면 차별화에 사용되는 핵심 비즈니스 로직에서 애플리케이션의 '상태 기계'를 별도로 관리, 유지, 확장할 수 있습니다. 기업에서의 요구 사항이 변경됨에 따라 기본 상태 기계, 작업 디스패치, 흐름 제어에 대한 걱정 없이 애플리케이션 로직을 쉽게 변경할 수 있습니다.
Amazon SWF는 Amazon의 고가용성 데이터 센터에서 실행되므로 애플리케이션에서 필요할 때마다 상태 추적 및 작업 처리 엔진을 사용할 수 있습니다. Amazon SWF는 작업을 중복 저장하여 이를 안정적으로 애플리케이션 구성 요소에 디스패치하고, 진행 상황을 추적하며, 최신 상태로 유지합니다.
Amazon SWF는 완전관리형 클라우드 프로세스 흐름 웹 서비스로서, 복잡한 사용자 정의 코딩 프로세스 흐름 솔루션 및 처리 자동화 소프트웨어를 대체합니다. 개발자는 프로세스 자동화의 기초 인프라 작업을 관리할 필요가 없으므로 애플리케이션의 기능 개발에 모든 노력을 집중할 수 있습니다.
Amazon SWF는 애플리케이션 사용에 따라 원활하게 확장할 수 있습니다. 애플리케이션에 더 많은 클라우드 프로세스 흐름을 추가하거나 프로세스 흐름의 복잡성이 커져도 프로세스 흐름 서비스 관리를 위한 수작업이 필요 없습니다.
Amazon SWF에서는 애플리케이션 구성 요소 및 코디네이션 로직을 모든 프로그래밍 언어로 작성할 수 있으며 클라우드나 온프레미스에서 실행할 수 있습니다.
Amazon SWF 제품 세부 정보
애플리케이션에서 Amazon SWF를 사용하여 쉽게 워크플로를 관리할 수 있습니다.
Amazon SWF 기능
Amazon SWF는 다음과 같은 애플리케이션의 모든 개별 구성 요소에 대해 코디네이션 허브 역할을 합니다.
- 애플리케이션 상태 유지관리
- 워크플로 실행 추적 및 진행 상황 로깅
- 작업 중지 및 디스패치
- 각 애플리케이션 호스트에 할당하여 실행할 작업 제어
Amazon SWF를 사용하려면 다음을 수행하면 됩니다.
- AWS Management Console 또는 Amazon SWF API를 사용하여 워크플로 이름을 지정합니다.
- Amazon SWF API를 사용하여 새 워크플로를 "시작"합니다. 그러면 "워크플로 실행"이라고 부르는 일련의 특정 워크플로 작업이 시작됩니다.
- 워커 시스템에서 Amazon SWF API를 사용하여 워크플로 실행에 대한 작업 순서 확정, 조건부 흐름 관리, 루프 실행을 수행합니다. 참고로 워커 시스템에서 "워커"는 특정 작업을 처리하는 애플리케이션의 한 구성 요소를 지칭합니다.
- 워커 시스템의 Amazon SWF API를 사용하여 클라우드 또는 온 프레미스에서 워크플로 작업을 요청하고 실행합니다.
- AWS Management Console에서 워크플로 실행 및 관련 작업의 상태와 진행 상황을 모니터링합니다.
AWS Management Console의 연습용 샘플을 통해 샘플 애플리케이션을 등록하고 실행하는 단계를 진행해 볼 수 있습니다. 자세한 내용은 설명서를 참조하세요.
자세한 설명
Amazon SWF는 확장성과 복원력이 뛰어난 애플리케이션 구축용 워크플로 서비스로서 완전한 관리성을 제공합니다. Amazon SWF가 제공하는 간단한 API 호출 기능은 모든 종류의 언어로 작성된 코드로 실행될 수 있으며, EC2 인스턴스는 물론 인터넷에 액세스할 수 있는 전 세계 모든 장소의 모든 컴퓨터에서 실행 가능합니다.
Amazon SWF는 애플리케이션 호스트와 상호 작용하는 코디네이션 허브 역할을 합니다. 사용자는 관련 작업과 함께 워크플로를 만들고 적용할 조건 논리가 있는 경우 지정하여 Amazon SWF에 저장합니다. 워크플로를 실행할 때마다 각 워크플로 실행은 개별적으로 이루어진 것으로 간주됩니다. 워크플로 실행 시에 수행할 다양한 태스크를 요청하도록 애플리케이션 구성 요소를 프로그래밍하십시오. 그러면 Amazon SWF가 호스트에서 사용자가 지정한 순서대로 작업이 실행되도록 조정합니다. 호스트가 클라우드에 있든 온 프레미스에 있든 상관 없습니다. 애플리케이션은 API를 사용하여 Amazon SWF와 통신하여 작업의 성공 또는 실패 여부를 기록합니다. Amazon SWF는 다음 워크플로 작업을 애플리케이션 호스트에 할당하거나 실패한 작업을 사용자의 비즈니스 논리에 따라 다시 실행함으로써 일련의 작업을 계속 진행하게 됩니다.
Amazon SWF의 워크플로 실행을 시작하려면 AWS Management Console에 로그인하십시오. 또는 Amazon SWF API를 통해 워크플로 실행을 시작할 수 있습니다. Amazon SWF의 단순한 웹 서비스 인터페이스는 사용이 간편하고 유연성이 뛰어납니다.
- StartWorkflowExecution: 일련의 워크플로우 작업을 시작하고 애플리케이션 호스트 중 하나에서 첫 번째 작업을 사용할 수 있도록 합니다.
- 워크플로우 실행 설명: 워크플로우 실행 및 작업의 상태를 제공합니다.
- PollForActivityTask: 애플리케이션 호스트 (클라우드 또는 온프레미스) 는 연속 루프에서 워크플로우 작업을 요청하고 실행합니다.
- RespondActivity작업 완료: 애플리케이션 호스트가 Amazon SWF에 작업을 성공적으로 완료했다고 알립니다. Amazon SWF는 다음 작업을 애플리케이션 호스트에서 실행 가능한 상태로 만들어 워크플로 실행을 계속 진행합니다.
- 워크플로우 실행 종료: 특정 워크플로우 실행을 중단합니다. Amazon SWF는 더 이상 이 특정 워크플로 실행을 애플리케이션 호스트에 할당하지 않습니다.
용도 및 제한
이 서비스 사용에는 Amazon Web Services 이용계약이 적용됩니다.
사용 사례
Amazon S3 및 Amazon EC2를 사용하여 동영상 인코딩. 이 사용 사례에서는 큰 동영상을 여러 개의 청크로 나누어 Amazon S3로 업로드합니다. 이 청크의 업로드를 모니터링해야 합니다. 업로드된 청크는 Amazon EC2 인스턴스로 다운로드되어 인코딩됩니다. 인코딩된 청크는 다른 Amazon S3 위치에 저장됩니다. 이러한 방법으로 모든 청크가 인코딩되면, 인코딩된 청크를 결합하여 하나의 인코딩된 파일을 만들고 그대로 Amazon S3에 저장합니다. 하나 이상의 청크에 인코딩 오류가 있는 경우, 이 프로세스 도중에 장애가 발생할 수 있습니다. 이러한 장애는 Amazon SWF의 클라우드 프로세스 흐름 관리를 통해 탐지되고 처리되어야 합니다.
구성 요소를 데이터 센터에서 클라우드로 마이그레이션. 비즈니스 크리티컬 작업이 프라이빗 데이터 센터에서 호스팅되고 있지만 서비스 중단 없이 전체를 클라우드로 이전해야 합니다. Amazon SWF 기반 애플리케이션은 데이터 센터에서 실행되는 구성 요소를 포함한 워커와 클라우드에서 실행되는 워커를 연결합니다. 데이터 센터 워커를 원활하게 이전하려면 같은 종류의 새 워커를 먼저 클라우드에 배포합니다. 데이터 센터의 워커는 새 클라우드 기반 워커와 함께 계속 정상적으로 실행됩니다. 작업 부하의 일부를 라우팅하여 클라우드 기반 워커를 테스트하고 검증합니다. 이 테스트를 진행하는 동안에도 데이터 센터의 워커는 계속 실행되고 있으므로 애플리케이션은 중단되지 않습니다. 테스트가 완료되면 데이터 센터의 워커는 점진적으로 실행이 중지되고 클라우드에 있는 워커는 확장되어 워커는 클라우드 프로세스 흐름 관리 애플리케이션으로 완전히 이전됩니다. 이러한 클라우드 프로세스 흐름 프로세스를 데이터 센터에 있는 다른 모든 워커에 대해서도 동일하게 실행하면 애플리케이션을 완전히 클라우드로 이전할 수 있습니다. 비즈니스의 이유로 특정 작업 단계를 계속 프라이빗 데이터 센터에서 실행해야 하는 경우, 워커를 계속 프라이빗 데이터 센터에서 실행하면서도 애플리케이션에 참여하도록 할 수 있습니다.
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는 다시 배치에 포함되고 다시 파이프라인에 보내집니다.
AWS Flow Framework
AWS Flow Framework는 Amazon Simple Workflow를 사용하여 더 빠르고 쉽게 애플리케이션을 구축할 수 있게 해주는 편리한 라이브러리의 모음입니다.
작동 방식
AWS Flow Framework에서는 여러 시스템에서 작업을 수행하는 애플리케이션을 쉽게 구축할 수 있도록 간단한 프로그래밍 모델을 사용합니다. 일반적인 프로그램에서와 마찬가지로, 프레임워크를 사용하여 신속하게 작업을 생성하고 조정하며 이러한 작업이 서로 어떻게 종속되는지 표현합니다. 예를 들어 별도의 "로컬" 컴퓨터에 호스팅된 사용자 애플리케이션 로직에서 한 메서드를 호출하여 "원격" 컴퓨터에 있는 다른 애플리케이션의 메서드를 실행할 수 있습니다. AWS Flow Framework는 원격 메서드를 실행하는 데 필요한 복잡한 작업을 처리하고 Amazon Simple Workflow Service에 저장된 정보를 사용하여 로컬 애플리케이션에 그 결과를 반환합니다. 실행된 모든 메서드의 출력은 서로 종속성이 있는 별도의 사용자 로직 부분을 연결하는 데 사용될 수 있습니다. 프레임워크에서는 간편한 "콜백 차단 및 대기" 접근 방식을 사용하여 간단한 구문으로 메서드 간 종속성을 표현할 수 있습니다. 또한, 원격 컴퓨터 상의 오류를 마치 로컬 오류인 것처럼 처리할 수 있으며, 오류가 발생할 경우에 애플리케이션에서 중요 메서드를 재시도하는 방법을 손쉽게 정의할 수 있습니다.
- AWS SDK for Java에 포함되어 제공
- Java 버전에 대한 웨비나 보기
- 개발자 안내서 읽기
- API 레퍼런스 보기
참고
Ruby용 AWS Flow Framework는 더 이상 개발 중이 아닙니다. 기존 코드는 무기한으로 계속 작동하지만 새로운 기능이나 버전은 없을 것입니다. 루비용 Flow Framework의 소스 코드는 AWS SWF GitHub 아카이브에서 계속 사용할 수 있습니다. Ruby 기반 Simple Workflow 애플리케이션이 발전하고 변화하고 있는 경우, AWS Step Functions로 마이그레이션하거나 네이티브 Simple Workflow API를 사용하는 등 여러 가지 옵션을 고려해 볼 수 있습니다. 자세한 내용은 AWS Simple Workflow 개발자 안내서를 참조하세요.
AWS Flow Framework를 사용하여 간단한 코드를 작성하고, 프레임워크의 사전 구축된 객체 및 클래스가 Amazon Simple Workflow API의 세부 내용을 처리하도록 합니다. AWS Flow Framework는 애플리케이션의 단계를 생성하고 실행하는 작업을 처리하고, 진행 상황을 추적하며, 단계가 실패할 경우에 대한 재시도 규칙을 사용자가 정의할 수 있게 하는 등 여러 가지 작업을 처리합니다. 한편 Amazon Simple Workflow Service는 애플리케이션의 실행 상태를 유지하고, 사용 가능한 작업자에게 작업을 나누어 주며, 모든 작업의 감사 내역을 보관합니다.
AWS Flow Framework는 AWS에서 개발하고 관리하는 Java 오픈 소스입니다. 아래 링크에서 라이브러리, 소스 코드, 설명서, 샘플 등을 받을 수 있습니다.