[AWS] SQS Message Queue 사용하기

반응형

이번 글에서는 AWS의 Message Queue 서비스인 SQS를 사용해보도록 하겠습니다.

0. SQS(Simple Queue Service)란?

서버들끼리 사용할 수 있는 메세지 큐를 제공하는 서비스입니다.

그렇다면 메세지 큐란 무엇일까요?😅

간단히 요약하자면 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할때 사용하는 방법이라고 할 수 있습니다. 이러한 데이터를 교환할 떄는 AMQP(Advanced Message Queuing Protocol) 프로토콜을 사용하게됩니다.

이러한 메세지 큐는 메시지를 손실 없이 정확하게 처리하고, 고가용성을 제공하기 때문에 대규모 서비스를 구축할 때 필수적입니다. 사용자에게 결과를 빨리 보여줘야 하는 작업과 시간이 오래 걸리는 작업을 분리할때, 중요한 작업과 중요하지 않은 작업을 분리할 때 메세지 큐를 유용하게 사용할 수 있습니다.

자세한 내용은 아래의 책을 참고하시길 바랍니다.

 

아마존 웹 서비스를 다루는 기술:실무에서 알아야 할 기술은 따로 있다!

COUPANG

www.coupang.com

1. SQS 큐 생성하기

SQS 큐를 한번 생성해보도록 하겠습니다.

SQS로 들어가 화면 중앙의 Get Started Now 버튼을 클릭합니다.

image.png

사용할 Queue의 이름과 종류를 선택합니다. FIFO를 선택하면 선입선출 즉 먼저 들어간 메세지는 먼저 빼내오게됩니다. 저는 Standard를 선택하겠습니다.

image.png

화면 우측 하단의 Configure Queue 버튼을 클릭해 상세 설정을 입력하고 Create 버튼을 클릭해 큐를 생성합니다.

image.png

저는 기본값 그대로 사용하겠습니다.

image.png

아래와 같이 Queue가 생성되었습니다. 생성된 Queue의 URL을 사용해 다른 리전이나 AWS 외부에서도 SQS 큐를 사용할 수 있습니다.

image.png

2. SQS 처리 실패 큐 생성하기

보통 큐에선 메세지를 받고 작업이 완료되면 메세지를 삭제합니다. 하지만, 설정 횟수를 초과하여 메세지를 받았는데 삭제되지 않고 남아 있다면 처리 실패 큐로 보내집니다. 이번에는 처리 실패 Queue를 만들어 앞서 생성한 SQS 큐와 연결해보겠습니다.

동일하게 Create New Queue 버튼을 클릭합니다.

image.png

처리실패 큐의 이름을 입력 후 동일하게 Standard Queue 를 선택해 Queue를 생성합니다.

image.png

큐가 생성되었습니다.

image.png

생성한 처리실패 큐를 앞서 생성한 메세지 큐에 연결해보도록 하겠습니다.

메세지 큐로 사용할 큐와 처리실패 큐로 사용할 큐를 동시에 선택 후 Queue Actions 버튼의 Configure Queues 탭을 클릭합니다.

image.png

Dead Letter Queue Settings에서 Use Redrive Policy 를 선택해 처리실패 큐를 사용하겠습니다. Dead Letter Queue에는 처리실패로 사용할 큐를 입력합니다. 메세지큐에 동일 메세지를 3번이상 받으면 처리실패 큐로 보내도록 Maximun Receives에 2를 입력합니다.

앞서 설명했듯이 메세지큐는 메세지를 받아 작업 완료 후 해당 메세지를 삭제합니다. 따라서, 설정 횟수를 초과하여 메세지를 받는다는 의미는 해당 메세지를 처리하는데 실패해 계속해서 메세지를 요청하는 것 입니다. 그러므로 해당 메세지들은 처리실패 메세지로 분류 후 처리실패 큐로 보내 추가적인 작업을 수행해야 합니다.

image.png

자 이제 처리실패 큐가 메세지 큐에 연결되었습니다. 화면에서 메세지 큐를 선택 후 Redrive Policy 탭을 클릭해보면, 메세지 큐(minhoQueue)의 Dead Letter Queue로 처리실패 큐(minhoDLQ)가 생성된 것을 확인할 수 있습니다. 이제 메세지 큐에서 3번이상 메세지를 받으면 해당 메세지들은 처리실패 큐로 보내집니다.

image.png

3. 결론

대규모 서비스의 기능별로 서버를 분리하고, 각 서버들끼리 손실없는 메세지를 주고 받고 싶다면?
-> SQS(Simple Queue Service)를 사용하자.


파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY