[AWS] Amazon SQS
2023. 7. 26. 09:52ใDevops/AWS
https://jeidiiy.notion.site/Amazon-SQS-05252e50f928441d991991383cabe98d?pvs=4
๐ก๋ ธ์ ์ ์ต์ ํ๋ ๊ธ์ ๋๋ค. ์ ๋งํฌ๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ต๋๋ค.
- Simple Queue Service
1. SQS๋?
- AWS์์ ์ ๊ณตํ๋ ํ์ค ๋๊ธฐ์ด(queue)์ฉ ์์ ๊ด๋ฆฌํ ์๋น์ค
- AWS์์ ์ ๊ณตํ๋ ๊ฐ์ฅ ์ค๋๋ ์๋น์ค ์ค ํ๋ (10๋ ์ด์)
- ์ ํ๋ฆฌ์ผ์ด์ ์ **๋ถ๋ฆฌ(decouple)**ํ๋ ๋ฐ ์ฌ์ฉ
2. ํน์ง
- ๋ฌด์ ํ ์ฒ๋ฆฌ๋, ํ์ ์๋ ๋ฉ์์ง ์ ๋ํ ๋ฌด์ ํ
- ๋ฉ์์ง ์๋ช - 4์ผ, ์ต๋ 14์ผ
๐ก ํ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์๋ง์ ์ปจ์๋จธ๊ฐ ์ฝ๊ณ ํด๋น ๋ณด์กด ๊ธฐ๊ฐ ๋ด์ ์ฒ๋ฆฌํ ํ ํ์์ ์ญ์ ํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ค๋๋ค.
- ์งง์ ์ง์ฐ ์๊ฐ - SQS์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ฑฐ๋ ์ฝ์ ๋๋ง๋ค 10ms ์ด๋ด๋ก ๋งค์ฐ ๋น ๋ฅด๊ธฐ ์ฒ๋ฆฌ
- ๋ฉ์์ง ํฌ๊ธฐ - ์ต๋ 256KB
- ์ค๋ณต ๋ฉ์์ง ์กด์ฌ ๊ฐ๋ฅ
- best effort ordering์ด๋ผ๋ ๋ป์ผ๋ก out of order ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์๋ ์์
3. Producing Messages
- Producer๋ SDK (SendMessage API)๋ฅผ ์ฌ์ฉํ์ฌ SQS์ ๋ฉ์์ง ์ ์ก
- ํ์ ๋ฉ์์ง๊ฐ ๋ค์ด๊ฐ๋ฉด Consumer๊ฐ ๋ฉ์์ง๋ฅผ ์ฝ๊ณ ์ญ์ ํ ๋๊น์ง ํ์์ ์ ์ง
4. Consuming Messages
- Consumers (EC2 ์ธ์คํด์ค ์์ ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ , AWS Lambda ๋ฑ)
- Consumer๋ SQS ๋ฉ์์ง๋ฅผ ํด๋ง
- Consumer๋ ํ ๋ฒ์ ์ต๋ 10๊ฐ์ ๋ฉ์์ง ์์ ๊ฐ๋ฅ
- DeleteMessage API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์์ง ์ญ์
5. Multiple EC2 Instances Consumers
- ์ฌ๋ฌ ๊ฐ์ ์ปจ์๋จธ ์ด์ ๊ฐ๋ฅ
- ๊ฐ ์ปจ์๋จธ๋ poll ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ค๋ฅธ ๋ฉ์์ง ์ธํธ ์์
- At-least once delivery
- ๋ฉ์์ง๊ฐ ์ปจ์๋จธ์ ์ํด ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋์ง ์์ผ๋ฉด ๋ค๋ฅธ ์ปจ์๋จธ๊ฐ ์์
- Best-effort message ordering
- ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ปจ์๋จธ๋ ๋ฉ์์ง๋ฅผ ์ง์์ผ ํจ
- ๋ ๋ง์ ๋ฉ์์ง๊ฐ ์์ด ์ฒ๋ฆฌ๋์ ๋๋ ค์ผ ํ๋ค๋ฉด ์ปจ์๋จธ๋ฅผ ์ถ๊ฐํ๊ณ ์ํ ํ์ฅ์ ํตํด ์ฒ๋ฆฌ๋ ๊ฐ์ ๊ฐ๋ฅ
6. SQS with Auto Scaling Group (ASG)
- ์ปจ์๋จธ๊ฐ ASG ๋ด๋ถ์์ EC2 ์ธ์คํด์ค๋ฅผ ์คํํ๊ณ SQS ํ์์ ๋ฉ์์ง ํด๋ง
- ASG๋ ํ์ ๊ธธ์ด(ApproximateNumberOfMessages)๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฅ
- ์ด๋ ๋ชจ๋ SQS ํ์์ ์ธ ์ ์๋ CloudWatch ๋ฉํธ๋ฆญ
- ์๋ ์ค์ ๋ ๊ฐ๋ฅ
- ์ผ์ ์์ค์ด ๋์ด๊ฐ๋ฉด CloudWatch Alarm์ ํตํด ASG์ ์ฉ๋ ์ฆ๊ฐ
7. SQS to decouple between application tiers
- ํ๋ก ํธ์๋์ ๋น๋์ค ์ฒ๋ฆฌ ๋ฐฑ์๋ ๋ถ๋ฆฌ
- ํ๋ก ํธ์๋์์ ๋น๋์ค๋ฅผ ์ ๋ก๋ํ๋ฉด SQS์ ๋ฉ์์ง๋ฅผ ์ ์ก
- ๋ฐฑ์๋๋ ๋ฉ์์ง๋ฅผ ์์ ํ์ฌ ๋น๋์ค ์ฒ๋ฆฌ
- ํ๋ก ํธ์๋์ ๋ฐฑ์๋์ ๋ ๋ฆฝ์ ํ์ฅ ๊ฐ๋ฅ
- SQS ๋ํ ๋ฌด์ ํ์ ์ฒ๋ฆฌ๋๊ณผ ํ์ ๋ฉ์์ง ์ ๋๋ถ์ ์์
8. Security
- ์ํธํ
- HTTPS API๋ฅผ ์ฌ์ฉํ ๋คํธ์ํน ๊ฐ ์ํธํ
- KMS ํค๋ฅผ ์ฌ์ฉํ ๋ฏธ์ฌ์ฉ ์ํธํ
- ํด๋ผ์ด์ธํธ ์ํธํ - SQS์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง๋ ์์
- ์ ๊ทผ ์ ์ด: IAM ์ ์ฑ
- SQS ์ ๊ทผ ์ ์ฑ : S3 ๋ฒํท ์ ์ฑ ๊ณผ ๋น์ทํ ์ ์ฑ
9. Message Visibility Timeout
- ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ํด๋งํ๋ฉด ๊ทธ ๋ฉ์์ง๋ ๋ค๋ฅธ ์ปจ์๋จธ์๊ฒ ๋ณด์ด์ง ์์
- 0์ด ~ 12์๊ฐ๊น์ง ์ค์ ๊ฐ๋ฅ. ๊ธฐ๋ณธ๊ฐ - 30์ด
- ๋ง์ฝ ์๊ฐ์ด ๊ฒฝ๊ณผ๋๊ณ ๋ฉ์์ง๊ฐ ํ์์ ์ญ์ ๋์ง ์์๋ค๋ฉด ๋ค์ ๋ฉ์์ง๋ฅผ ํ์ ๋ฃ์
- ๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ ์ปจ์๋จธ ๋๋ ๊ฐ์ ์ปจ์๋จธ๊ฐ ๋ค์ ๋ฐ์
๐ก ๋ง์ฝ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์์ง๋ง ์๊ฐ์ด ๋ ํ์ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ ์๊ฐ์ด ์ด๊ณผ๋ ๊ฒ ๊ฐ์ผ๋ฉด ์๊ฐ์ ๋ ์ป๊ธฐ ์ํด ChangeMessageVisibility๋ผ๋ API๋ฅผ ํธ์ถํ์ฌ SQS์ ์๋ ค์ผ ํ๋ค.
- visibility timeout์ด ๋์ผ๋ฉด ๋ฉ์์ง๊ฐ ํ์ ๋ค์ ๋ํ๋๋๋ฐ ์ค๋ ๊ฑธ๋ฆผ
- visibility timeout์ด ๋ฎ์ผ๋ฉด ์ฌ๋ฌ ์๋น์๊ฐ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฝ์ ๊ฒ์ด๋ฉฐ ์ค๋ณต ์ฒ๋ฆฌ๋ ์๋ ์์
- ๋ฐ๋ผ์ message visiblity timeou ๊ฐ์ ํฉ๋นํ๊ฒ ์ค์ ํด์ผ ํจ
10. Long Polling
- ์ปจ์๋จธ๊ฐ ํ์ ๋ฉ์์ง๋ฅผ ์์ฒญํ๋๋ฐ ํ์ ์๋ฌด๊ฒ๋ ์๋ค๋ฉด ๋ฉ์์ง ๋์ฐฉ์ ๊ธฐ๋ค๋ฆฌ๋๋ก ํ๋ ๊ธฐ๋ฅ
- ๋ชฉ์ - ์ง์ฐ ์๊ฐ ๋ฐ SQS๋ก ๋ณด๋ด๋ API ํธ์ถ ํ์ ์ ๊ฐ
- 1์ด ~ 20์ด ์ค์ ๊ฐ๋ฅ (20์ด ์ ํธ)
- Long Polling์ด Short Polling ๋ณด๋ค ๊ถ์ฅ๋จ
๋กฑ ํด๋ง ๊ตฌ์ฑ ๋ฐฉ๋ฒ
- ํ ๋ ๋ฒจ์์ ๊ตฌ์ฑํ์ฌ ์ฌ๋ฌ ์ปจ์๋จธ์ Long Polling์ ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
- WaitTimeSeconds๋ฅผ ์ง์ ํจ์ผ๋ก์จ ์ปจ์๋จธ๊ฐ ์ค์ค๋ก Long Polling์ ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
11. FIFO Queue
- FIFO ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ SQS
- ์๊ฒฉํ ๋ฉ์์ง ์์ ๋ณด์ฅ
- ์ฒ๋ฆฌ๋ ์ ํ - ๋ฌถ์(batch)์ด ์๋ ๊ฒฝ์ฐ 300 msg/s, ๋ฌถ์์ผ ๊ฒฝ์ฐ 3000 msg/s
- ์ค๋ณต ์ ๊ฑฐ ๊ธฐ๋ฅ ์ ๊ณต์ ํตํด ์ ํํ ํ ๋ฒ๋ง ๋ณด๋ผ ์ ์์
- ๋ถ๋ฆฌ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๋ฉ์์ง์ ์์๋ฅผ ์ ์งํ ํ์๊ฐ ์์ ๋ ์ฌ์ฉ
Amazon SQS
- Simple Queue Service
1. SQS๋?
- AWS์์ ์ ๊ณตํ๋ ํ์ค ๋๊ธฐ์ด(queue)์ฉ ์์ ๊ด๋ฆฌํ ์๋น์ค
- AWS์์ ์ ๊ณตํ๋ ๊ฐ์ฅ ์ค๋๋ ์๋น์ค ์ค ํ๋ (10๋ ์ด์)
- ์ ํ๋ฆฌ์ผ์ด์ ์ **๋ถ๋ฆฌ(decouple)**ํ๋ ๋ฐ ์ฌ์ฉ
2. ํน์ง
- ๋ฌด์ ํ ์ฒ๋ฆฌ๋, ํ์ ์๋ ๋ฉ์์ง ์ ๋ํ ๋ฌด์ ํ
- ๋ฉ์์ง ์๋ช - 4์ผ, ์ต๋ 14์ผ</aside>
๐ก ํ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์๋ง์ ์ปจ์๋จธ๊ฐ ์ฝ๊ณ ํด๋น ๋ณด์กด ๊ธฐ๊ฐ ๋ด์ ์ฒ๋ฆฌํ ํ ํ์์ ์ญ์ ํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ค๋๋ค.
- ์งง์ ์ง์ฐ ์๊ฐ - SQS์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ฑฐ๋ ์ฝ์ ๋๋ง๋ค 10ms ์ด๋ด๋ก ๋งค์ฐ ๋น ๋ฅด๊ธฐ ์ฒ๋ฆฌ
- ๋ฉ์์ง ํฌ๊ธฐ - ์ต๋ 256KB
- ์ค๋ณต ๋ฉ์์ง ์กด์ฌ ๊ฐ๋ฅ
- best effort ordering์ด๋ผ๋ ๋ป์ผ๋ก out of order ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์๋ ์์
3. Producing Messages
- Producer๋ SDK (SendMessage API)๋ฅผ ์ฌ์ฉํ์ฌ SQS์ ๋ฉ์์ง ์ ์ก
- ํ์ ๋ฉ์์ง๊ฐ ๋ค์ด๊ฐ๋ฉด Consumer๊ฐ ๋ฉ์์ง๋ฅผ ์ฝ๊ณ ์ญ์ ํ ๋๊น์ง ํ์์ ์ ์ง
4. Consuming Messages
- Consumers (EC2 ์ธ์คํด์ค ์์ ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ , AWS Lambda ๋ฑ)
- Consumer๋ SQS ๋ฉ์์ง๋ฅผ ํด๋ง
- Consumer๋ ํ ๋ฒ์ ์ต๋ 10๊ฐ์ ๋ฉ์์ง ์์ ๊ฐ๋ฅ
- DeleteMessage API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์์ง ์ญ์
5. Multiple EC2 Instances Consumers
- ์ฌ๋ฌ ๊ฐ์ ์ปจ์๋จธ ์ด์ ๊ฐ๋ฅ
- ๊ฐ ์ปจ์๋จธ๋ poll ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ค๋ฅธ ๋ฉ์์ง ์ธํธ ์์
- At-least once delivery
- ๋ฉ์์ง๊ฐ ์ปจ์๋จธ์ ์ํด ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋์ง ์์ผ๋ฉด ๋ค๋ฅธ ์ปจ์๋จธ๊ฐ ์์
- Best-effort message ordering
- ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ปจ์๋จธ๋ ๋ฉ์์ง๋ฅผ ์ง์์ผ ํจ
- ๋ ๋ง์ ๋ฉ์์ง๊ฐ ์์ด ์ฒ๋ฆฌ๋์ ๋๋ ค์ผ ํ๋ค๋ฉด ์ปจ์๋จธ๋ฅผ ์ถ๊ฐํ๊ณ ์ํ ํ์ฅ์ ํตํด ์ฒ๋ฆฌ๋ ๊ฐ์ ๊ฐ๋ฅ
6. SQS with Auto Scaling Group (ASG)
- ์ปจ์๋จธ๊ฐ ASG ๋ด๋ถ์์ EC2 ์ธ์คํด์ค๋ฅผ ์คํํ๊ณ SQS ํ์์ ๋ฉ์์ง ํด๋ง
- ASG๋ ํ์ ๊ธธ์ด(ApproximateNumberOfMessages)๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฅ
- ์ด๋ ๋ชจ๋ SQS ํ์์ ์ธ ์ ์๋ CloudWatch ๋ฉํธ๋ฆญ
- ์๋ ์ค์ ๋ ๊ฐ๋ฅ
- ์ผ์ ์์ค์ด ๋์ด๊ฐ๋ฉด CloudWatch Alarm์ ํตํด ASG์ ์ฉ๋ ์ฆ๊ฐ
7. SQS to decouple between application tiers
- ํ๋ก ํธ์๋์ ๋น๋์ค ์ฒ๋ฆฌ ๋ฐฑ์๋ ๋ถ๋ฆฌ
- ํ๋ก ํธ์๋์์ ๋น๋์ค๋ฅผ ์ ๋ก๋ํ๋ฉด SQS์ ๋ฉ์์ง๋ฅผ ์ ์ก
- ๋ฐฑ์๋๋ ๋ฉ์์ง๋ฅผ ์์ ํ์ฌ ๋น๋์ค ์ฒ๋ฆฌ
- ํ๋ก ํธ์๋์ ๋ฐฑ์๋์ ๋ ๋ฆฝ์ ํ์ฅ ๊ฐ๋ฅ
- SQS ๋ํ ๋ฌด์ ํ์ ์ฒ๋ฆฌ๋๊ณผ ํ์ ๋ฉ์์ง ์ ๋๋ถ์ ์์
8. Security
- ์ํธํ
- HTTPS API๋ฅผ ์ฌ์ฉํ ๋คํธ์ํน ๊ฐ ์ํธํ
- KMS ํค๋ฅผ ์ฌ์ฉํ ๋ฏธ์ฌ์ฉ ์ํธํ
- ํด๋ผ์ด์ธํธ ์ํธํ - SQS์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง๋ ์์
- ์ ๊ทผ ์ ์ด: IAM ์ ์ฑ
- SQS ์ ๊ทผ ์ ์ฑ : S3 ๋ฒํท ์ ์ฑ ๊ณผ ๋น์ทํ ์ ์ฑ
9. Message Visibility Timeout
- ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ํด๋งํ๋ฉด ๊ทธ ๋ฉ์์ง๋ ๋ค๋ฅธ ์ปจ์๋จธ์๊ฒ ๋ณด์ด์ง ์์
- 0์ด ~ 12์๊ฐ๊น์ง ์ค์ ๊ฐ๋ฅ. ๊ธฐ๋ณธ๊ฐ - 30์ด
- ๋ง์ฝ ์๊ฐ์ด ๊ฒฝ๊ณผ๋๊ณ ๋ฉ์์ง๊ฐ ํ์์ ์ญ์ ๋์ง ์์๋ค๋ฉด ๋ค์ ๋ฉ์์ง๋ฅผ ํ์ ๋ฃ์
- ๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ ์ปจ์๋จธ ๋๋ ๊ฐ์ ์ปจ์๋จธ๊ฐ ๋ค์ ๋ฐ์
๐ก ๋ง์ฝ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์์ง๋ง ์๊ฐ์ด ๋ ํ์ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ ์๊ฐ์ด ์ด๊ณผ๋ ๊ฒ ๊ฐ์ผ๋ฉด ์๊ฐ์ ๋ ์ป๊ธฐ ์ํด ChangeMessageVisibility๋ผ๋ API๋ฅผ ํธ์ถํ์ฌ SQS์ ์๋ ค์ผ ํ๋ค.
- visibility timeout์ด ๋์ผ๋ฉด ๋ฉ์์ง๊ฐ ํ์ ๋ค์ ๋ํ๋๋๋ฐ ์ค๋ ๊ฑธ๋ฆผ
- visibility timeout์ด ๋ฎ์ผ๋ฉด ์ฌ๋ฌ ์๋น์๊ฐ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฝ์ ๊ฒ์ด๋ฉฐ ์ค๋ณต ์ฒ๋ฆฌ๋ ์๋ ์์
- ๋ฐ๋ผ์ message visiblity timeou ๊ฐ์ ํฉ๋นํ๊ฒ ์ค์ ํด์ผ ํจ
10. Long Polling
- ์ปจ์๋จธ๊ฐ ํ์ ๋ฉ์์ง๋ฅผ ์์ฒญํ๋๋ฐ ํ์ ์๋ฌด๊ฒ๋ ์๋ค๋ฉด ๋ฉ์์ง ๋์ฐฉ์ ๊ธฐ๋ค๋ฆฌ๋๋ก ํ๋ ๊ธฐ๋ฅ
- ๋ชฉ์ - ์ง์ฐ ์๊ฐ ๋ฐ SQS๋ก ๋ณด๋ด๋ API ํธ์ถ ํ์ ์ ๊ฐ
- 1์ด ~ 20์ด ์ค์ ๊ฐ๋ฅ (20์ด ์ ํธ)
- Long Polling์ด Short Polling ๋ณด๋ค ๊ถ์ฅ๋จ
๋กฑ ํด๋ง ๊ตฌ์ฑ ๋ฐฉ๋ฒ
- ํ ๋ ๋ฒจ์์ ๊ตฌ์ฑํ์ฌ ์ฌ๋ฌ ์ปจ์๋จธ์ Long Polling์ ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
- WaitTimeSeconds๋ฅผ ์ง์ ํจ์ผ๋ก์จ ์ปจ์๋จธ๊ฐ ์ค์ค๋ก Long Polling์ ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
11. FIFO Queue
- FIFO ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ SQS
- ์๊ฒฉํ ๋ฉ์์ง ์์ ๋ณด์ฅ
- ์ฒ๋ฆฌ๋ ์ ํ - ๋ฌถ์(batch)์ด ์๋ ๊ฒฝ์ฐ 300 msg/s, ๋ฌถ์์ผ ๊ฒฝ์ฐ 3000 msg/s
- ์ค๋ณต ์ ๊ฑฐ ๊ธฐ๋ฅ ์ ๊ณต์ ํตํด ์ ํํ ํ ๋ฒ๋ง ๋ณด๋ผ ์ ์์
- ๋ถ๋ฆฌ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๋ฉ์์ง์ ์์๋ฅผ ์ ์งํ ํ์๊ฐ ์์ ๋ ์ฌ์ฉ
'Devops > AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS] Kinesis Data Stream (0) | 2023.07.26 |
---|---|
[AWS] Amazon SNS (0) | 2023.07.26 |
[AWS] AWS DataSync (0) | 2023.07.04 |
[AWS] AWS Transfer Family (0) | 2023.07.04 |
[AWS] AWS Storage Gateway (0) | 2023.07.04 |