ㅁ 풀어야 할 문제
많은 일괄 작업을 처리해야 하고 거기에 작업의 우선순위가 있는 경우를 생각할 수 있다. 예를 들어, 프레젠테이션 파일을 웹브라우저로 업로드하여 공개할 수 있는 서비스로, 무료 사용자와 회원 사용자의 서비스 레벨(공개까지 시간)이 다른 경우가 이 경우에 해당된다.
사용자가 프레젠테이션 파일을 업로드하면 시스템에서 공개하기 위해 변환 처리 등을 일괄 작업으로 하고, 변환 후 파일을 공개한다.
그 일괄 처리를 회원 종류별로 어떻게 우선 순위를 정할지가 문제다.
ㅁ 해결/패턴
일괄 작업의 관리에는 큐를 사용할 수 있다. 큐를 우선순위 수만큼 준비하면 된다.
작업 요청을 큐로 관리하고, 큐의 작업 요청을 일괄 작업으로 처리한다. 클라우드에는 높은 신뢰성을 가진 큐 서비스가 제공되고 있고, 그것을 이용하면 쉽게 높은 신뢰성을 가진 일괄 처리 시스템 구축을 할 수 있다.
큐를 우선순위에 따라 여러 대 준비하고, 작업 요청을 우선순위에 따라 큐에 나눠 넣으면 일괄 처리의 우선순위를 정할 수 있다.
큐에 대응되는 일괄 처리 서버 성능(수)는 우선순위에 따라 준비할 필요가 있다.
AWS 큐 서비스는 [SQS]다. SQS 큐를 여러 대 준비하면 우선 순위별 큐(우선순위 큐, 보조 큐)를 준비할 수 있다. 또한, 메시지 지연 송신 기능을 이용하면 처리 실행을 고의적으로 지연시킬 수 있다.
- SQS를 이용해 우선순위별로 여러 대의 큐를 준비한다.
- 빨리 처리해야 하는 것(작업 요청)은 우선순위가 높은 큐에 넣는다.
- 우선순위에 맞춰 큐의 작업 요청을 처리하는 일괄 처리 서버를 준비한다.
- 큐에는 [메시지 지연 송신] 기능이 있다. 그것을 이용하면 처리 시작 시간을 지연시킬 수 있다.
- 작업을 처리하는 서버를 추가하고 삭제하는 것으로 우선순위 큐, 보조 큐의 처리 속도를 동적으로 변경 시킬 수 있다.
- 성능이나 서비스 요구조건에 따라 작업 처리에 이용하는 EC2를 추가하고 삭제하는 것 만으로 대응할 수 있다.
- EC2에 장애가 발생해도 큐 서비스에 메시지(작업)가 남아 있어 EC2가 복구되면 바로 처리가 가능하여 장애에 강한 시스템이 된다.
- 처리하는 EC2 인스턴스의 수와 큐잉된 메시지 수의 균형에 따라 보조 큐 처리가 빨리 끝나는 경우도 있어서 주 큐와 보조 큐의 처리 속도를 감시해 두는 것이 좋다.
ㅁ 기타
- Queuing Chain 패턴을 참조한다.
- Job Observer 패턴을 참조한다.
'AWS Design Pattern > 일괄 처리 패턴' 카테고리의 다른 글
Scheduled Autoscaling 패턴 - 배치 처리 서버의 자동 가동/정지 (0) | 2021.02.05 |
---|---|
Job Observer - 작업 감시와 서버 추가 삭제 (0) | 2021.02.05 |
Queuing Chain - 큐를 통한 시스템간의 낮은 의존도 구성 (0) | 2021.02.05 |