본문 바로가기

AWS Design Pattern/일괄 처리 패턴

Priority Queue - 작업 우선 순위 변경

ㅁ  풀어야 할 문제

많은 일괄 작업을 처리해야 하고 거기에 작업의 우선순위가 있는 경우를 생각할 수 있다. 예를 들어, 프레젠테이션 파일을 웹브라우저로 업로드하여 공개할 수 있는 서비스로, 무료 사용자와 회원 사용자의 서비스 레벨(공개까지 시간)이 다른 경우가 이 경우에 해당된다.

사용자가 프레젠테이션 파일을 업로드하면 시스템에서 공개하기 위해 변환 처리 등을 일괄 작업으로 하고, 변환 후 파일을 공개한다.

그 일괄 처리를 회원 종류별로 어떻게 우선 순위를 정할지가 문제다.

 

  해결/패턴

일괄 작업의 관리에는 큐를 사용할 수 있다. 큐를 우선순위 수만큼 준비하면 된다. 

작업 요청을 큐로 관리하고, 큐의 작업 요청을 일괄 작업으로 처리한다. 클라우드에는 높은 신뢰성을 가진 큐 서비스가 제공되고 있고, 그것을 이용하면 쉽게 높은 신뢰성을 가진 일괄 처리 시스템 구축을 할 수 있다.

큐를 우선순위에 따라 여러 대 준비하고, 작업 요청을 우선순위에 따라 큐에 나눠 넣으면 일괄 처리의 우선순위를 정할 수 있다. 

큐에 대응되는 일괄 처리 서버 성능()는 우선순위에 따라 준비할 필요가 있다.

 

  구현

AWS 큐 서비스는 [SQS]. SQS 큐를 여러 대 준비하면 우선 순위별 큐(우선순위 큐, 보조 큐)를 준비할 수 있다. 또한, 메시지 지연 송신 기능을 이용하면 처리 실행을 고의적으로 지연시킬 수 있다.

-       SQS를 이용해 우선순위별로 여러 대의 큐를 준비한다.

-       빨리 처리해야 하는 것(작업 요청)은 우선순위가 높은 큐에 넣는다.

-       우선순위에 맞춰 큐의 작업 요청을 처리하는 일괄 처리 서버를 준비한다.

-       큐에는 [메시지 지연 송신] 기능이 있다. 그것을 이용하면 처리 시작 시간을 지연시킬 수 있다.

ㅁ  장점

-       작업을 처리하는 서버를 추가하고 삭제하는 것으로 우선순위 큐, 보조 큐의 처리 속도를 동적으로 변경 시킬 수 있다.

-       성능이나 서비스 요구조건에 따라 작업 처리에 이용하는 EC2를 추가하고 삭제하는 것 만으로 대응할 수 있다.

-       EC2에 장애가 발생해도 큐 서비스에 메시지(작업)가 남아 있어 EC2가 복구되면 바로 처리가 가능하여 장애에 강한 시스템이 된다.

 

  주의점

-       처리하는 EC2 인스턴스의 수와 큐잉된 메시지 수의 균형에 따라 보조 큐 처리가 빨리 끝나는 경우도 있어서 주 큐와 보조 큐의 처리 속도를 감시해 두는 것이 좋다.

 

  기타

-       Queuing Chain 패턴을 참조한다.

-       Job Observer 패턴을 참조한다.