1. 개요
AWS SWF(Simple Workflow Service)에 대한 간략한 정리이다. SWF는 여러 단계로 이루어진 작업을 워크플로로 정의하고, 각 단계의 실행 상태와 이력을 관리해 주는 서비스다. 애플리케이션은 워크플로의 진행을 결정하는 Decider와 실제 작업을 수행하는 Activity Worker로 나누어 구현한다.
2. 특성
- Task는 단 한차례만 assign 되며 duplicated 되지 않는다.
- Task를 완료하기 위해 Decider와 Worker가 사용된다. Decider는 다음에 수행할 작업을 결정하고, Worker는 할당받은 Activity Task를 실제로 처리한다.
- Workflow는 최대 1년까지 실행될 수 있다.
3. Activity Worker란?
Activity Worker는 Activity Task를 받아 실제 작업을 수행하고, 그 결과를 SWF에 다시 전달하는 프로그램이다. 작업 자체가 반드시 프로그램으로만 처리되는 것은 아니며, 사람이 수행하는 업무를 Activity Worker 소프트웨어가 접수하고 완료 처리하는 형태도 가능하다.
예를 들어 통계 분석가가 데이터 세트를 전달받아 분석한 뒤 결과를 반환하는 업무를 생각할 수 있다. 이때 Activity Worker는 분석가에게 작업을 보여 주고, 분석 결과가 입력되면 해당 Activity Task를 완료 처리하는 역할을 한다.
4. SWF에 Activity 등록 시 제공 정보
SWF에 Activity Type을 등록할 때는 Activity를 식별하고 실행 조건을 정의하기 위한 정보가 필요하다. 대표적으로 다음 항목을 제공한다.
- name
- timeout
- version
name과 version은 Activity Type을 구분하는 데 사용된다. timeout은 작업이 일정 시간 안에 시작되거나 완료되지 않았을 때 어떻게 처리할지 판단하는 기준이 된다.
5. Marker
Marker는 Workflow 실행 중에 필요한 정보를 이력(history)에 기록할 수 있게 해준다. Decider는 이후 실행에서 이 Marker를 읽어 이전에 어떤 상태였는지 확인하고, 그에 따라 다음 결정을 내릴 수 있다.
예를 들어 외부 시스템에 요청을 보낸 시각, 특정 분기 처리를 선택한 이유, 재시도 여부와 같은 정보를 Marker로 남겨 두면 워크플로의 흐름을 추적하거나 복구 로직을 구현할 때 도움이 된다.