Simple Queue Service
해야 할 일을 나중에 처리하거나, 다른 시스템이 처리 할 수 있도록 하기 위한 비동기 메시징 서비스다.
SQS는 처리해야 할 업무에 대한 TODO 리스트와 같은 역할을 한다. 시스템에서는 이를 메시지라고 부른다. SQS는 이러한 메시지의 저장소다. SQS는 AWS에서 관리하는 서비스이기 때문에 이 시스템이 처리 할 수 있는 메시지의 양에 대해서 걱정하지 않아도 된다. 또한 매우 저렴한 가격에 메시징 서비스를 제공한다.
사례 1.
예를들어 Youtube를 AWS에서 구축한다고 해보자. Youtube는 대규모의 사용자가 전송하는 대용량의 데이터를 수신해서 처리해야 하는 서비스다. 이런 서비스는 여러개의 독립적인 시스템을 구축하고 각각의 시스템이 서로 협력하는 방식으로 구현하는 것이 보다 효율적이다. 예를들어 아래와 같은 시스템들이 있을 것이다.
- 사용자가 업로드한 동영상을 수신하는 시스템 - 수신자
- 업로드된 동영상을 전달 받아서 이를 인코딩하는 시스템 - 인코더
- 인코딩이 끝났음을 업로더에게 이메일로 발송하는 시스템 - 메일러
이러한 시스템들이 서로 협력하기 위해서는 서로의 진행상황을 공유해야 할 필요가 있다. 우선 수신자가 SQS 서비스에 업로드된 동영상을 추가한다. 인코더는 정기적으로 SQS를 확인한다. SQS에 추가된 동영상 파일이 발견되면 인코딩을 시작한다. 인코딩이 끝나면 SQS에 인코딩이 끝난 동영상을 추가한다. 메일러는 SQS에 인코딩이 끝난 동영상이 존재하는지 확인한다. 동영상이 발견되면 해당 동영상의 업로더에게 이메일을 발송한다.
사례 2.
신규글을 작성하면 그 글을 구독하는 사람들에게 새로운 글이 작성되었음을 이메일로 알려야 하는 시스템이 있다. 그런데 신규글을 작성했을 때 모든 구독자에게 이메일을 발송한다면 구독자가 많은 글의 경우에는 매우 오랜시간 사용자를 대기하게 해야 할 것이다. 이런 경우 신규글이 작성되었을 때 신규글이 작성되었음을 SQS에 발행하고, 백그라운드에서 SQS를 처리하도록하면 사용자의 대기 시간을 줄일 수 있을 것이다.