Simple Queue Service(SQS)를 이해하기 위해서는 Queue를 이해해야 한다. Queue는 줄, 열을 의미한다.
음식점에서 줄을 서면 먼저 온 사람이 먼저 음식을 서비스 받듯 Queue는 FIFO(first in first out) 구조로 되어 있다.
AWS SQS의 목적은 서버가 할 일의 목록을 Queue의 방식으로 저장하는 것이라고 보면 된다.
AWS SQS의 사용 사례를 살펴봄으로써 SQS를 이해해보자.
출처 - https://opentutorials.org/module/328/4909
사례1)
사용자가 신규글을 작성하면 그 글을 구독하는 사람들에게 새로운 글이 작성되었음을 이메일로 알려야 하는 시스템이 있다. 그런데 신규글을 작성했을 때 모든 구독자에게 이메일을 발송한다면 구독자가 많은 글의 경우에는 매우 오랜시간 사용자를 대기하게 해야 할 것이다. 이런 경우 신규글이 작성되었을 때 신규글이 작성되었음을 SQS에 발행하고, 백그라운드에서 SQS를 처리하도록하면 사용자의 대기 시간을 줄일 수 있을 것이다.
사례 2)
Youtube를 AWS에서 구축한다고 해보자. Youtube는 대규모의 사용자가 전송(업로드)하는 대용량의 데이터를 수신해서 처리(인코딩)해야 하는 서비스다. 이런 서비스는 여러개의 독립적인 시스템을 구축하고 각각의 시스템이 서로 협력하는 방식으로 구현하는 것이 보다 효율적이다. 예를들어 아래와 같은 시스템들이 있을 것이다.
- 사용자가 업로드한 동영상을 수신하는 시스템 - 수신자
- 업로드된 동영상을 전달 받아서 이를 인코딩하는 시스템 - 인코더
- 인코딩이 끝났음을 업로더에게 이메일로 발송하는 시스템 - 메일러
이러한 시스템들이 서로 협력하기 위해서는 서로의 진행상황을 공유해야 할 필요가 있다. 우선 수신자가 SQS 서비스에 업로드된 동영상을 추가한다. 인코더는 정기적으로 SQS를 확인한다. SQS에 추가된 동영상 파일이 발견되면 인코딩을 시작한다. 인코딩이 끝나면 SQS에 인코딩이 끝난 동영상을 추가한다. 메일러는 SQS에 인코딩이 끝난 동영상이 존재하는지 확인한다. 동영상이 발견되면 해당 동영상의 업로더에게 이메일을 발송한다.
사례 2번을 더 자세하게 살펴서 SQS를 이해해보자
1. 파일수신자는 업로드된 파일 저장 후 인코더 서버에 작업을 지시하는 메세지는 encoding Queue에 Send.
2. encoding Queue에 비디오를 인코딩하라는 메세지를 인코더 1이 수행한다.
3. 인코더 1이 명령을 수행하는 동안 encoding queue에는 visibility timeout (기본값 30초)의 영향을 받아 메세지가 30초 동안 보이지 않는다.
* visibility timeout의 존재 의의는 메세지가 지정 시간 내에 삭제되지 않으면 처리 과정에 에러가 발생한 것으로 간주하고 다른 서버가 (혹은 같은 서버가 다시) 메세지 수행을 할 수 있게 하기 위함이다.
4. 인코더 1이 인코딩을 완료하면 encoding queue의 메세지를 삭제한 후 email queue에게 이메일을 보내라는 메세지를 Send.
5. 메일러 서버는 email queue의 메세지를 수행한 후 메세지를 삭제한다.
'AWS > ☁️ AWS' 카테고리의 다른 글
S3 CORS 구성 (0) | 2020.06.22 |
---|---|
AWS Certificate Manager(ACM)를 이용 SSL 인증서 등록 및 ELB를 이용한 https force redirection (0) | 2020.06.01 |
AWS ElastiCache (0) | 2020.02.19 |
AWS IAM 그룹, 사용자 생성 (0) | 2020.02.19 |
AWS Route 53 (0) | 2020.02.16 |