Queue and Worker
RequestQueue + Worker + ResponseQueue
장기 실행 작업(Long Running Task)을 처리하기 위해서는 작업이 완료되지 않더라도 요청을 계속 받을 수 있어야 하고, 받은 요청을 처리한 후 결과를 반환하거나 어딘가에 저장한 후 완료되었음을 알려야하는 경우가 많습니다.
이러한 요구사항을 충족시키기 위해 RequestQueue에 작업 지시사항을 메시지로 넣어두면, Worker가 RequestQueue에서 메시지를 가져와서 작업을 수행하고 ResponseQueue에 결과를 저장하는 방식을 사용할 수 있습니다.
Workflow orchestrator + ResponseQueue
단순한 작업의 경우 RequestQueue + Worker + ResponseQueue
로 충분하지만, 여러 작업을 순차적으로 실행하거나 병렬로 실행하고 결과를 얻어야 하는데 한 Worker에서 모든 작업을 수행하기에는 자원이 부족한 경우가 있습니다.
이런 경우 Workflow orchestrator에 DAG로 표현되는 작업 지시를 보내면, Workflow orchestrator가 작업을 수행하고 결과를 ResponseQueue에 저장하는 방식을 사용할 수 있습니다.
Stream Processing
Queue와 Worker들의 조합으로 한 Worker의 ResponseQueue가 다른 Worker의 RequestQueue가 되는 구조가 반복되는데, 이런식의 파이프라인을 처리하는 것을 Stream Processing이라고 합니다.
? + Worker
비즈니스 모델에 따른 요구사항이나 서버 자원의 제약으로 인해
- 요청량에 따라 Consumer 또는 실행되는 DAG의 수를 조절
- 과다 사용자의 자원 독점 방지(사용자별 최소 실행 보장)
- 비즈니스 모델에 따른 사용자별 최대 동시 실행 제한
해야하는 등의 경우가 생깁니다.