SQS
SQS
Amazon SQS(Simple Queue Service)๋ ํ ์คํธ ๋ฉ์์ง๋ฅผ ๊ฐํธํ๊ฒ ์์ฑ, ์ ์ฅ ๋ฐ ๊ฒ์ํ ์ ์๋ ์ ๋ขฐํ ์ ์์ผ๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ๋ฉ์์ง ํ๋ ์์ํฌ์ด๋ค.
SQS๋ Amazon Web Services ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ ํ๋ ์์ํฌ๋ก ์ฌ์ฉํ ์ ์๋ค.
๋ฉ์์ง ์ฌ์ฉ๋์ ๊ธฐ์ค์ผ๋ก ๋น์ฉ์ ์ง๋ถํ๊ฒ ๋๋ค.
์ ์ฒด ํ์ ํ๋ ์์ํฌ๋ Amazon ๋ฐ์ดํฐ ์ผํฐ์ ์์ ํ ํ๊ฒฝ ๋ด์์ ์คํ๋๋ค.
โฆ
ํ ๋ง๋๋ก ๋ฉ์ธ์ง ํ๋ค. ํ๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ Coupling์ ๋์ด์ฃผ๋ ์ญํ ์ ํ๋ค.
ํ๋ก๋์๊ฐ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ Queue์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ณ , ์ด๋ฅผ ์ปจ์๋จธ๊ฐ ๊ฐ์ ธ๊ฐ์ ํ๋ก์ธ์ฑ ํ๋ ๋ฐฉ์์ด๋ค.

์ ๋ฆฌ๋ฅผ ์ํด ํต์ฌ๋ง ์ง์ด๋ณด์.
์๋ฒ๋ค๋ผ๋ฆฌ ์ฌ์ฉํ ์ ์๋ ๋ฉ์ธ์ง ํ๋ฅผ ์ ๊ณตํ๋ ์๋น์ค
ํด์ผํ ์ผ์ ๋์ค์ ์ฒ๋ฆฌํ๊ฑฐ๋, ๋ค๋ฅธ ์์คํ ์ด ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๊ธฐ ์ํ ๋น๋๊ธฐ ๋ฉ์ธ์ง ์๋น์ค
์์คํ ์ด ์ฒ๋ฆฌํด์ผ ํ TODO List์ ๊ฐ๋ค.
์๋น์ค๊ฐ ์ปค์ง ์๋ก ์๋ฒ ํ ๋๋ก๋ ์ ์ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์์ง๋ค.
์์ฐ์ค๋ฝ๊ฒ ๊ธฐ๋ฅ์ ๋๋์ด๊ฐ์ง๊ฒ ๋๊ณ , ์ด ๋ ์๋ฒ๋ผ๋ฆฌ ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์ธ์ง๋ฅผ ์์ด๋ฒ๋ฆฌ์ง ์๊ณ ์ ํํ๊ฒ ์ฒ๋ฆฌํด์ผํ๋ฉฐ, ์ ํฉ์ฑ / ์์์ฑ ๋ฑ์ ๋ณด์ฅํด์ผํ๋ค.
SQS ์ ํ
SQS์๋ ๋ ๊ฐ์ง ์ ํ์ด ์๋ค.
์ฒซ ๋ฒ์งธ๋ Standard, ๋ ๋ฒ์งธ๋ FIFO์ด๋ค.

FIFO๋ ์ฐ๋ฆฌ๊ฐ ์๋ ํ์ ๊ฐ๋ ๊ณผ ๋์ผํ๋ค. ์ ์ ์ ์ถ์ ๋ฐ๋ฅธ๋ค.
Standard๋ Throughput์ ๊ทน๋ํํ๊ธฐ ์ํด์ ์์ ๋ณด์ฅ์ ํ์ง ์๋๋ค.
ํ์ค ๋๊ธฐ์ด (Standard Queue)
์ฅ์
๋ฌด์ ํ์ ๊ฐ๊น์ด ๋ฉ์์ง ์ ์ก ์ง์ (์ต๋ ์ฒ๋ฆฌ๋)
์ ํ์ด ์๋ TPS ์ต์ 1ํ ์ ๋ฌ ๋ณด์ฅ (At-Least-Once-Delivery)
๋จ ์ค๋ณต ์์ ์ด ๋ ์ ์๋ค.
Best-Effort-Ordering: ์ต๋ํ ์์๋ฅผ ๋ณด์ฅํ๊ณ ์ ๋ ธ๋ ฅํ๋ค. (ํ์ง๋ง ์ ๋ขฐํ ์ ์๋ค.)
๋จ์
๋ฉ์์ง ์์ ๋ณด์ฅ ์๋จ
๋ฐ๋์ 1๋ฒ๋ง ์ฝ๊ธฐ ๋ณด์ฅ ์๋จ (์ค๋ณต ์ฝ๊ธฐ ๊ฐ๋ฅ์ฑ ์กด์ฌ)
FIFO ๋๊ธฐ์ด (First In First Out Queue)
์ฅ์
๋ฉ์์ง ์์ ๋ณด์ฅ (First-In-First-Out Delivery)
Exactly-Once Processing: 1๋ฒ์ ์ ์ก, 1๋ฒ์ ์์ ์ง์ผ์ง (์ค๋ณต์์ ๋ฐฉ์ง)
Limited Throughput: ์ด๋น 300TPS ์ ํ ์กด์ฌ
๋จ์
์์๋ฅผ ์ํด ๋๋ฆฐ ํผํฌ๋จผ์ค (์ด๋น 300TPS)
SQS, SNS, Amazon MQ, Kinesis Stream
SQS์ ๋น์ทํ ์๋น์ค๊ฐ ์์ด์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ํท๊ฐ๋ฆด ์ ์๋ค.
๊ฐ๋จํ ํ๊ฒ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
SQS: Simple Queue Service
๊ฐ๋ฒผ์ด ๊ด๋ฆฌํ ๋ฉ์์ง ๋๊ธฐ์ด
pull(polling) ๊ธฐ๋ฐ์ผ๋ก ๋ฉ์์ง ์ฒ๋ฆฌ (์ฆ, ๋ฉ์์ง ๊ฐ์ ธ์ค๊ธฐ ๋ฐฉ์)
SNS: Simple Notification Service
push ๊ธฐ๋ฐ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ค์๊ฐ ์ ๋ฌ
์๊ฐ์ด ๊ด๊ฑด์ธ ๋ฉ์์ง ์ ๋ฌ
Amazon MQ
On-Promise์์ ์ฌ์ฉํ๋ Message Queue ๋ฅผ ์ด๊ด์ ์ ๋ฆฌ
MOM ๊ธฐ๋ฐ์ ์๋น์ค ํ์ค์ ์ด๋ ํ ๊ฒ์ด๋ผ๋ Amazon MQ๋ก ์ด๊ด ๊ฐ๋ฅ
Amazon Kinesis Stream
๋น ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌ
์ฌ๋ฌ Amazon Kinesis Application ์ ๋ ์ฝ๋ ์ฝ๊ณ ์๋ต ๊ฐ๋ฅ
Amazon Kinesis Client LIbrary(KCL) ์ ์ด์ฉํ์ฌ ํํฐ์ ํค์ ๋ํ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ๋์ผํ ๋ ์ฝ๋ ํ๋ก์ธ์์ ์ ๊ณต
์คํธ๋ฆผ์์ ๊ณ์ฐ, ์ง๊ณ, ํํฐ๋ง ์ํ ๊ฐ๋ฅ
SQS ๊ฐ๋
SQS๋ฅผ ์ด๋ฃจ๋ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๋ค์ด ์๋ค.
ํ๋์ฉ ์ดํด๋ณด์.
๋ฉ์ธ์ง (Message)
SQS ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋จ์
๋ฉ์ธ์ง๋ XML, JSON๊ณผ ๊ฐ์ ํ ์คํธ ํํ์ด๋ฉฐ ์ต๋ 64KB ๊น์ง ๋ณด๋ผ ์ ์๋ค.
์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ณด๊ด ๊ธฐ๊ฐ์ ์ด ๋จ์๋ก ์ค์ ํ ์ ์๋ค. ๊ธฐ๋ณธ ๋ณด๊ด ๊ธฐ๊ฐ์ 345,600์ด(4์ผ)์ด๋ฉฐ 60์ด(1๋ถ)๋ถํฐ 1,209,600(14์ผ)๊น์ง ์ค์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ์ธ์ง ๋ณด๊ด ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก ์ญ์ ๋๋ค.
๋ฉ์ธ์ง๋ง๋ค ๊ณ ์ ํ ID๊ฐ ๋ถ์ฌ๋๋ค.
3~4KB์ง๋ฆฌ ๋ฉ์ธ์ง๋ผ๋ 64KB๋ก ์ฑ ์ ๋๋ค. ๋ฐ๋ผ์ ์ฉ๋์ด ์์ ๋ฉ์ธ์ง๋ฅผ ์์ฃผ ์ฒ๋ฆฌํ๋ ๊ฒ๋ณด๋ค ๋ฉ์ธ์ง๋ฅผ ๋ชจ์์ ๋ฐฐ์น API ๋ก ์ฒ๋ฆฌํ๋ฉด ์๊ธ์ ์ ์ฝํ ์ ์๋ค.
ํ (Queue)
๋ฉ์ธ์ง๋ฅผ ๋ด๋ ๊ณต๊ฐ.
๋ฆฌ์ ๋ณ๋ก ์์ฑํด์ผ ํ๋ฉฐ, HTTP ํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ๋ค๋ฅธ ๋ฆฌ์ ๋ผ๋ฆฌ๋ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค. -> ๊ทธ๋ฌ๋ฏ๋ก, ํ์ ์ด๋ฆ์ ๋ชจ๋ ๋ฆฌ์ ์์ ์ ์ผํด์ผ ํ๋ค.
๋ด์ ์ ์๋ ๋ฉ์ธ์ง์ ๊ฐ์๋ ๋ฌด์ ํ.
์ฐ์ 30์ผ ๋์ ์๋ฌด ์์ฒญ์ด ๋ฐ์ํ์ง ์์ผ๋ฉด AWS๊ฐ ํ๋ฅผ ์ญ์ ํ ์ ์์ผ๋ฏ๋ก, ์ค๊ณ ๋จ๊ณ์์ ์ด ๋ถ๋ถ์ ๊ณ ๋ คํด์ผ ํ๋ค.
์ปดํจํฐ ์๋ฃํ์ ํ์ ์ด๋ฆ์ด ๊ฐ์ง๋ง, ์ ์ ์ ์ถ(FIFO)๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
๋ค์ํ ์ ๊ทผ ๊ถํ๊ณผ ์ ์ฑ ์ ์ค์ ํ ์ ์์ผ๋ฉฐ, AWS ๊ณ์ ๋ฒํธ๋ฅผ ์ด์ฉํ์ฌ ๋ค๋ฅธ AWS ๊ณ์ ๊ณผ๋ ํ๋ฅผ ๊ณต์ ํ ์ ์์.
๊ฐ์ ๋ฆฌ์ ์์์๋ ๋ฐ์ดํฐ ์ ์ก์ด ๋ฌด๋ฃ์ด๋ฉฐ, ๋ค๋ฅธ ๋ฆฌ์ ์ ์๋ ํ๋ EC2 ์ธ์คํด์ค์ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด ๋ฐ์ดํฐ ์๊ธ์ด ๋ถ๊ณผ๋จ.
ํ ์์ฑ ๊ฐ์๋ ๋ฌด์ ํ
๋ฐฐ์น API (Batch API)
ํ ๋ฒ์ ๋ฉ์ธ์ง๋ฅผ ์ต๋ 10๊ฐ ํน์ ์ต๋ 256KB๊น์ง ๋์์ ์ฒ๋ฆฌํ ์ ์์.
์ฌ๋ฌ ๋ฉ์ธ์ง๋ฅผ ํฉ์ณ์ 64KB ์ดํ์ผ ๋ ๋ฐฐ์น API๋ฅผ ์ด์ฉํ๋ฉด ์์ฒญ 1๊ฐ๋ก ์ฒญ๊ตฌ๋จ.
๋ณด๊ธฐ ์ ํ ์๊ฐ (Visibility Timeout)
๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ๋ค ํน์ ์๊ฐ ๋์ ๋ค๋ฅธ ๊ณณ์์ ๋์ผํ ๋ฉ์ธ์ง๋ฅผ ๋ค์ ๊บผ๋ด๋ณผ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฅ.
0์ด๋ถํฐ 12์๊ฐ ๊น์ง ์ค์ ํ ์ ์์.
ํ ํ๋์ ์ฌ๋ฌ ์๋ฒ๊ฐ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ๋ ๋์ผํ ๋ฉ์ธ์ง๋ฅผ ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ฐฉ์ง
Messages Available(Visible) : ๋ด์ฉ์ ๊บผ๋ด์ ๋ณผ ์ ์๋ ์ํ์ธ ๋ฉ์ธ์ง ๊ฐ์
Messages in Flight(Not Visible): ๋ค๋ฅธ ๊ณณ์์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๊ณ ์์ด์ ํ์ฌ๋ ๋ด์ฉ์ ๋ณผ ์ ์๋ ์ํ์ธ ๋ฉ์ธ์ง ๊ฐ์. ์ต๋ 120,000๊ฐ ๊น์ง์ด๋ฉฐ ์ต๋์น๋ฅผ ๋์ด์๋ฉด ์๋ฌ(OverLimit)๊ฐ ๋ฐ์.
์ง์ฐ ์ ์ก (Delay Delivery)
ํน์ ์๊ฐ ๋์ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ง ๋ชปํ๊ฒ ํ๋ ๊ธฐ๋ฅ.
์ง์ฐ๋๋ ์๊ฐ ๋์์๋ Messages in Flight์ ํฌํจ๋จ.
์ฒ๋ฆฌ ์คํจ ํ (Dead Letter Queues)
๋ณดํต ๋ฉ์ธ์ง๋ฅผ ๋ฐ๊ณ ์์ ์ด ์ฒ๋ฆฌ๋๋ฉด ๋ฉ์ธ์ง๋ฅผ ์ญ์ ํ๋ค. ํ์ง๋ง, ์ค์ ํ ํ์๋ฅผ ์ด๊ณผํ์ฌ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์๋๋ฐ ์ญ์ ๋์ง ์๊ณ ๋จ์์๋ค๋ฉด ์ฒ๋ฆฌ ์คํจ ํ๋ก ๋ณด๋.
๋ฉ์ธ์ง๋ฅผ ๋ฐ๋ ํ์๋ 1๋ฒ๋ถํฐ 1,000๋ฒ ๊น์ง ์ค์ ํ ์ ์์.
์ผ๋ฐ ํ ํ๋์ ์ฌ๋ฌ ๊ฐ์ ์ฒ๋ฆฌ ์คํจ ํ๋ฅผ ์ฐ๊ฒฐํ ์ ์์.
์ฒ๋ฆฌ ์คํจ ํ๋ ์ผ๋ฐ ํ์ ๊ฐ์ ๋ฆฌ์ ์ ์์ฑํด์ผ ํจ.
์งง์ ํด๋ง (Short Polling)
๋ฉ์ธ์ง ๋ฐ๊ธฐ ์์ฒญ์ ํ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ๋ฐ์. ์์ผ๋ฉด ๋ฉ์ธ์ง๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์์ผ๋ฉด ๊ทธ๋ฅ ๋น ์ ธ๋์จ๋ค.
ReceiveMessage ์์ฒญ์์ WaitTimeSeconds๋ฅผ 0์ผ๋ก ์ค์ ํ์ ๋
ํ ์ค์ ์ ReceiveMessageWaitTimeSeconds๋ฅผ 0์ผ๋ก ์ค์ ํ์ ๋
๊ธด ํด๋ง (Long Polling)
์์ผ๋ฉด ๋ฐ๋ก ๊ฐ์ ธ์ค๊ณ , ์์ผ๋ฉด ๋ฉ์ธ์ง๊ฐ ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆผ. ๋ฉ์ธ์ง๊ฐ ๊ณ์ ์ค์ง ์์ผ๋ฉด ๊ธด ํด๋ง ์๊ฐ๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
๊ธฐ๋ณธ ์ ํ์๊ฐ์ 20์ด์ด๋ฉฐ, 1์ด๋ถํฐ ์ต๋ 20์ด๊น์ง ์ค์ ํ ์ ์์.
ReceiveMesasge์์ฒญ์ WaitTimeSeconds๊ฐ 0๋ณด๋ค ํฌ๋ฉด ํ ์ค์ ์ ReceiveMessageWaitTimeSeconds ๊ฐ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์.
Last updated