외로운 Nova의 작업실

aws - SQS 본문

Cloud/aws

aws - SQS

Nova_ 2023. 10. 21. 12:08

- SQS

Simple Queue Service는 서버들끼리 사용할 수 있는 메시지 큐를 제공하는 서비스입니다. 서비스가 점점 커질수록 서버 한대로는 처리가 힘들어집니다. 자연스럽게 각 기능들을 여러 서버에서 처리하게됩니다. 하지만 서버들끼리 주고받는 메시지를 잃어버리지 않고 정확하게 처리하는 것은 매우 까다로운 기술입니다. SQS는 서버들끼리 주고받는 메시지를 정확하게 처리해줍니다. 이런시스템을 개인이나 벤처기업 또는 스타트업과 같은 소규모 사업장에서 구현 및 구축하는 것은 상당한 노력과 시간, 비용이 소모됩니다.

 

얼핏 보면 AWS에서 가장 먼저 생긴 리소스는 EC2일것 같은데 SQS가 가장 먼저 생겼습니다 AWS는 태생적으로 모든 리소스가 아마존닷컴을 위해 개발되었는데 그중 SQS의 메시지 큐는 대형 인터넷 쇼핑몰에서 가장 중요한 기능이기 때문입니다.

 

예를들면 사용자가 상품을 주문하고 결제한 뒤 웹서버가 중단되더라도 결제 정보는 잃어버리지 않고 정확히 처리되어야합니다. SQS는 메시지를 손실 없이 정확하게 처리하고, 고가용성을 제공하기 때문에 대규모 서비스를 구축할 때 필수적인 시스템입니다. 

 

작동방식은 아주 간단합니다. 한 쪽에서 SQS 큐에 메시지를 넣고 다른 한쪽에서 메시지를 꺼내서 본 후 SQS에게 메시지 삭제 요청을 해서 메시지를 큐에서 메시지를 없애면 됩니다.

요약하자면 사용자에게 결과를 빨리 보여줘야하는 작업과 시간이 오래 걸리는 작업을 분리할 때 중요한 작업과 중요하지 않은 작업을 분리할때 SQS 큐를 유용하게 사용할 수 있습니다.

 

- SQS 의 기본 개념

메시지 : SQS의 기본 데이터 단위로 JSON과 같은 형태이며 메시지마다 고유한 ID가 부여됩니다.

큐 : 메시지를 담는 공간이며, HTTP프로토콜을 이용해서 다른 리전끼리도 메시지를 주고받을 수 있으며 담을 수 있는 메시지의 개수는 무제한입니다. 또한 큐와 이름을 같지만 FIFO를 보장하지 않습니다.

지연 전송 : 특정 시간 동안 메시지를 받지못하게 하는 기능입니다.

보기 제한 시간 : 메시지를 받은 뒤 특정 시간동안 다른 곳에서 동일한 메시지를 다시 꺼내볼 수 없게하는 기능입니다. 보기 제한 시간내에 메시지를 삭제하거나 처리해야합니다. 보기제한시간 이후에는 삭제하려면 오류가 납니다.

짧은 폴링 : 메시지 받기 요청을 하면 결과를 바로 받습니다. 메시지가 없으면 그냥 빠져나옵니다.

긴 폴링 : 메시지가 있으면 바로 가져오고, 없으면 메시지가 올때까지 기다립니다.

 

- SQS 생성

대기열 생성을 눌러줍니다.

이름을 설정해줍니다.

값을 설정해주고 다른것은 기본값으로 하고 생성해줍니다.

큐가 생성되었습니다.

 

- SQS 처리 실패 큐 생성

SQS 처리 실패 큐를 생성한 뒤 앞에서 생성한 SQS 큐와 연결해보겠습니다.

이름을 넣고

값을 넣고 만들어줍니다.

이제 SQS.fifo에서 편집을 눌러줍니다.

밑에 배달못한 편지열쪽에 아까만든 DLQ ARN을 넣어주고 최대 수신수를 2로 맞춰 큐에 있는 메시지를 다른 사람이 2번까지 폴링할 수 있도록 합니다. 이후 3번째에 폴링요청이 들어오면 DLQ로 보내게됩니다. 즉, 다른 사람이 못보게 하는 것입니다. 

 

- SQS 큐에 메시지 보내고 받기

이제 SQS 큐에 메시지를 보내보겠습니다.

메시지 전송 및 수신을 눌러줍니다.

이제 아래쪽에 보면

사용 가능한 메시지가 1개가 되었습니다. 이제 폴링으로 메시지를 받아보겠습니다. 메시지 폴링버튼을 누르고 메시지를 보면

잘 받아짐을 알 수 있습니다. 이와 같은 방법(똑같은 메시지, 폴링)으로 두번 더 메시지를 받아줍니다.

두번 더 했더니 DLQ쪽에 사용 가능한 메시지가 있습니다. 이제 이걸 확인하고 삭제요청해보겠습니다.

삭제를 눌러줘서 삭제를 해줍니다.

 

 

'Cloud > aws' 카테고리의 다른 글

aws - CLI(추가 예정)  (1) 2023.10.21
aws - Elastic Transcoder  (2) 2023.10.21
aws - SNS  (0) 2023.10.20
aws - CloudSearch  (1) 2023.10.20
aws - OpsWorks  (0) 2023.10.20
Comments