Skip to content

Latest commit

ย 

History

History
426 lines (267 loc) ยท 25.6 KB

SQS.md

File metadata and controls

426 lines (267 loc) ยท 25.6 KB

๋ชฉ์ฐจ



AWS SQS ๋™์ž‘ ์ดํ•ดํ•˜๊ธฐ (How to works?!)

SQS๋Š” AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ถ„๋ฆฌํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ๋ฉ”์‹œ์ง€ ํ(๋Œ€๊ธฐ์—ด) ์„œ๋น„์Šค์ด๋‹ค.

์‚ฌ์šฉ์ž๋กœํ•˜์—ฌ๊ธˆ ํ๋ฅผ ๋”ฐ๋กœ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ˆ˜๊ณ ๋ฅผ ๋œ์–ด์ค€๋‹ค. ํŽธ๋ฆฌํ•˜๊ธดํ•˜์ง€๋งŒ SQS์˜ ํŠน์ง•์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด SQS๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜๋Š” ์ธก๋ฉด์—์„œ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค.

์ด๋ฒˆ ๊ธ€์€ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์‹œ์ž‘์œผ๋กœ SQS๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณธ๋‹ค.

๋ชจ๋“  ๊ธ€์˜ ์ถœ์ฒ˜๋Š” AWS SQS docs์ด๋‹ค.


1 ๋ฐฐ๊ฒฝ - ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค

SQS์— ๊ฐœ๋…๊ณผ ๋™์ž‘ ๋ฐฉ์‹์„ ์•Œ์•„๋ณด๊ธฐ์ „์—, ์šฐ์„  ์™œ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•œ์ง€ ์‚ดํŽด๋ณธ๋‹ค.


๐Ÿ’โ€โ™‚๏ธ ์ผ์ • ๊ทœ๋ชจ์ด์ƒ์˜ ํŠธ๋ž˜ํ”ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ์„œ๋น„์Šค๋Š” ๋Œ€๋ถ€๋ถ„ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

์ผ์ • ๊ทœ๋ชจ์ด์ƒ์˜ ํŠธ๋ž˜ํ”ฝ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋Œ€ํ•œ ์‹œ์Šคํ…œ์€ ๋Œ€๋ถ€๋ถ„ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

์ด๋•Œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š”๋ฐ ๊ผญ ํ•„์š”ํ•œ ์„œ๋น„์Šค๊ฐ€ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค์ด๋‹ค.

์ฆ‰, ์„œ๋กœ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(์ปดํฌ๋„ŒํŠธ)๋“ค์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ณ  ์ˆ˜์‹ ํ•˜๋Š”๋ฐ์žˆ์–ด์„œ์˜ ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๋‹ค.


๐Ÿค” ์™œ ์„œ๋น„์Šค๋“ค์€ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

๋ฐ”๋กœ ์˜์กด์„ฑ, ์„ฑ๋Šฅ, ํŠธ๋žœ์žญ์…˜๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, SNS ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์›๊ฐ€์ž…ํ•˜๋ฉด ์ด๋ฉ”์ผ๋กœ ๊ฐ€์ž… ์ถ•ํ•˜ ์•ˆ๋‚ด๋ฅผํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.


๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

ํšŒ์›๊ฐ€์ž…์‹œ ํšŒ์›๊ฐ€์ž…๊ณผ ์ด๋ฉ”์ผ ์ „์†ก์„ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

@Transactional
public void register(RegisterUserCommand registerUserCommand) {
    ํšŒ์›_๊ฐ€์ž…();

    ์ด๋ฉ”์ผ ์ „์†ก();
}

์œ„ ๋กœ์ง์˜ ๋ฌธ์ œ์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ์˜์กด์„ฑ
    • ํšŒ์›๊ฐ€์ž… ์„œ๋น„์Šค๋Š” 2๊ฐ€์ง€์˜ ๋กœ์ง์ด ์„œ๋กœ ๊ฐ•ํ•˜๊ฒŒ ์˜์กด์ ์ด๋‹ค. (ํšŒ์›๊ฐ€์ž…, ์ด๋ฉ”์ผ ์ „์†ก)
    • ์ฆ‰, ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋ฉ”์ผ ์ฝ”๋“œ ์ˆ˜์ •๋งŒ์œผ๋กœ๋„ ํšŒ์› ๊ฐ€์ž… ๋กœ์ง์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ์„ฑ๋Šฅ
    • ํšŒ์›๊ฐ€์ž…ํ•˜๋Š”๋ฐ 0.1์ดˆ๋ฉด ๋˜์ง€๋งŒ, ์ด๋ฉ”์ผ ์ „์†ก์— 5๋ถ„ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, ํšŒ์›๊ฐ€์ž…์ด๋ผ๋Š” ์ „์ฒด ๋กœ์ง์€ 5๋ถ„๋„˜๊ฒŒ ์†Œ์š”๋œ๋‹ค. (๋™๊ธฐ ์ฒ˜๋ฆฌ)
    • ํšŒ์›๊ฐ€์ž…์ด๋ผ๋Š” ํ•ต์‹ฌ ๋กœ์ง์„ ์ œ์™ธํ•œ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ๋กœ์ง์œผ๋กœ์ธํ•ด ํšŒ์›๊ฐ€์ž…์— ๋Œ€ํ•œ ์š”์ฒญ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฒŒ๋˜๋Š” ๊ฒƒ.
  • ํŠธ๋žœ์žญ์…˜
    • ํšŒ์›๊ฐ€์ž…, ์ด๋ฉ”์ผ ์ „์†ก ๋กœ์ง์ด ์„œ๋กœ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์—ฌ์žˆ๊ธฐ์— ์ด๋ฉ”์ผ์—์„œ์˜ ์˜ˆ์™ธ๋กœ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค์ธ ํšŒ์›๊ฐ€์ž…์ด ์ฒ˜๋ฆฌ ์•ˆ๋  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ๋ฐ˜๋Œ€๋กœ, ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ๊ฐ€๋˜์—ˆ์Œ์—๋„ ์ด๋ฉ”์ผ์ด ์ „์†ก๋  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ์ฆ‰, ํ•˜๋‚˜๋ผ๋„ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•  ๊ฒฝ์šฐ

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ„ 3๊ฐ€์ง€์˜ ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์˜์กด์„ฑ
    • ํšŒ์›๊ฐ€์ž…์‹œ ํšŒ์›๊ฐ€์ž…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ด๋ฉ”์ผ ์ „์†ก์„ ์ด๋ฒคํŠธ๋กœ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค์— ์ „์†กํ•œ๋‹ค.
    • ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ Consumer (Event Handler)๊ฐ€ ์ด๋ฉ”์ผ ์ „์†ก ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • ์ด๋ ‡๊ฒŒ๋˜๋ฉด ํšŒ์›๊ฐ€์ž…๊ณผ ์ด๋ฉ”์ผ ์ „์†ก์˜ ๋กœ์ง์„ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„(์ปดํฌ๋„ŒํŠธ)์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ, ๊ฐ•๊ฒฐํ•ฉ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ฑ๋Šฅ
    • ๊ธฐ์กด์˜ ๋™๊ธฐ์ฒ˜๋ฆฌ๋Š” ํšŒ์›๊ฐ€์ž…์˜ ์ „์ฒด ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ํšŒ์›๊ฐ€์ž… ์‹œ๊ฐ„ + ์ด๋ฉ”์ผ ์ „์†ก ์‹œ๊ฐ„์ด์—ˆ๋‹ค.
    • ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฉ”์ผ ์ „์†ก์„ ๋น„๋™๊ธฐ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด, ํšŒ์›๊ฐ€์ž…์˜ ์ „์ฒด ์†Œ์š”์‹œ๊ฐ„์€ ์˜ค์ง ํšŒ์›๊ฐ€์ž… ์‹œ๊ฐ„๋งŒ ์†Œ์š”๋˜๊ฒŒ๋œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜
    • ํ•ต์‹ฌ ํšŒ์›๊ฐ€์ž… ๋กœ์ง์ด ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ COMMITํ•˜๊ณ , ๋น„๋™๊ธฐ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ „์†กํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’โ€โ™‚๏ธ ๊ฒฐ๋ก  - ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•œ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ .

  • ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„ (Decoupling)
    • ํ•œ๊ฐ€์ง€ ๋น„์ฆˆ๋‹ˆ์Šค ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„œ๋ฒ„์˜ ์ž‘์—…์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ฒŒํ•จ์œผ๋กœ์จ ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค.
  • ๋น„๋™๊ธฐ (Asynchronous)
    • ๋ถ€๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค (ex. ์ด๋ฉ”์ผ ์ „์†ก, SMS)๋“ฑ์„ ๋ฉ”์‹œ์ง€ ํ์— ์ €์žฅํ•˜์—ฌ, ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰, ๋ฉ”์‹œ์ง€ ํ๋Š” ์ƒ์„ฑ๋œ ๋ฉ”์‹œ์ง€์˜ ์ €์žฅ, ์ „์†ก์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋™๊ธฐํ™”๋กœ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ , ํ์— ๋„ฃ์–ด๋‘๊ณ  ๋‚˜์ค‘์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ธฐ์กด ๋™๊ธฐํ™” ๋ฐฉ์‹์€ ๋งŽ์€ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋  ๊ฒฝ์šฐ ๋ณ‘๋ชฉ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ณ , ๋’ค์— ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์ง€์—ฐ๋œ๋‹ค.
  • ํ™•์žฅ์„ฑ (Scalable)
    • ์ƒ์‚ฐ์ž ์„œ๋น„์Šค ํ˜น์€ ์†Œ๋น„์ž ์„œ๋น„์Šค๋ฅผ ์›ํ•˜๋Š” ๋Œ€๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™•์žฅ์„ฑ์ด ์ข‹๋‹ค.
  • ํƒ„๋ ฅ์„ฑ (Resilience)
    • ์†Œ๋น„์ž ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋Š” ๋ฉ”์‹œ์ง€ ํ์— ๋‚จ์•„ ์žˆ๋‹ค. ์†Œ๋น„์ž ์„œ๋น„์Šค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค ์ถ”๊ฐ€ ์„ค์ •์ด๋‚˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณด์žฅ์„ฑ (Guarantees)
    • ๋ฉ”์‹œ์ง€ ํ๋Š” ํ์— ๋ณด๊ด€๋˜๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฒฐ๊ตญ ์†Œ๋น„์ž ์„œ๋น„์Šค์—๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค๋Š” ์ผ๋ฐ˜์ ์ธ ๋ณด์žฅ์„ ์ œ๊ณตํ•œ๋‹ค.

์ด์™ธ์—๋„ AWS Lambda๋“ฑ์„ ํ™œ์šฉํ•œ ์‚ฌ๋ก€๋“ฑ๋“ฑ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์‚ฌ๋ก€๋Š” ๋งŽ๋‹ค.


2 SQS ๋ž€?

Amazon Simple Queue Service (Amazon SQS) ๋Š” ๋‚ด๊ตฌ๋ ฅ ์žˆ๊ณ  ๊ฐ€์šฉ์„ฑ์ด ๋›ฐ์–ด๋‚œ ๋ณด์•ˆ ํ˜ธ์ŠคํŒ… ๋Œ€๊ธฐ์—ด์„ ์ œ๊ณตํ•˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ๋ถ„์‚ฐ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ๊ณผ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ†ตํ•ฉ ๋ฐ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html

AWS SQS๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ถ„๋ฆฌํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด ์„œ๋น„์Šค์ด๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด ์™„์ „ ๊ด€๋ฆฌํ˜• ๋ฉ”์‹œ์ง€ ๋ถ„์‚ฐ ๋Œ€๊ธฐ์—ด ์„œ๋น„์Šค์ด๋‹ค.

๋ฉ”์‹œ์ง€๋Š” ์ˆ˜์‹ ์ž์—๊ฒŒ Push๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ˆ˜์‹ ์ž๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ธฐ์œ„ํ•ด SQS๋ฅผ Polling ํ•ด์•ผํ•œ๋‹ค. ์ด๋•Œ ๋ฉ”์‹œ์ง€๋Š” ์ตœ๋Œ€ 14์ผ๋™์•ˆ SQS์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ํŠน์ง•์œผ๋กœ SQS๋Š” ์—ฌ๋Ÿฌ ์ˆ˜์‹ ์ž๊ฐ€ ๋™์‹œ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰, Point-to-Point ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ˆ˜์‹ ์ž๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ , ์ฒ˜๋ฆฌ ๋ฐ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.


3 SQS ์•„ํ‚คํ…์ฒ˜์™€ ๋™์ž‘ ๋ฐฉ์‹

SQS๋Š” ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑ(Produce)ํ•˜๊ณ , ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ถ„์‚ฐ ํ ์‹œ์Šคํ…œ์ด๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ SQS๋„ ๋ถ„์‚ฐ๋œ ํ ์‹œ์Šคํ…œ์ด๋ผ๋Š” ๊ฒƒ์ด๋ฉฐ, ์ž ์žฌ์ ์ธ ๋ฉ”์‹œ์ง€ ์ €์žฅ์†Œ ์—ญํ• ์„ํ•œ๋‹ค.


SQS ๋™์ž‘ ๋ฐฉ์‹

SQS ๋ฉ”์‹œ์ง€ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€๋‹ค.

  • ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋“ค (Producer์™€ Consumer)
  • SQS ํ
  • ๋ฉ”์‹œ์ง€ (message in the queue)

3-1 ๋ถ„์‚ฐ ํ


์ถœ์ฒ˜: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-architecture.html

์œ„์™€ ๊ฐ™์ด SQS๋Š” ํ•œ ํ์˜ ๋ฉ”์‹œ์ง€๋„ ์—ฌ๋Ÿฌ SQS ์„œ๋ฒ„์— ๋ถ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์—์„œ Component๋Š” Producer์™€ Comsumer๋ฅผ ์˜๋ฏธํ•œ๋‹ค.


๐Ÿค” ์™œ ์ค‘๋ณต๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ถ„์‚ฐ๋œ ์‹œ์Šคํ…œ์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ €์žฅํ• ๊นŒ?

๊ณต์‹๋ฌธ์„œ์—์„œ๋Š” ๊ด€๋ จํ•˜์—ฌ ๋ช…ํ™•ํ•˜๊ฒŒ ์–˜๊ธฐํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์„ ์•„์ง ์ฐพ์ง€๋ชปํ–ˆ์œผ๋‚˜, ํ•„์ž ์ƒ๊ฐ์—” ๋ณดํ†ต์˜ ์ค‘๋ณตํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„  ์•„๋ž˜ ์ด์œ ๋กœ ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑํ•œ๋‹ค๊ณ ๋ณธ๋‹ค.

  • High Availability (๊ณ ๊ฐ€์šฉ์„ฑ)
    • ์ค‘๋ณต์„ฑ์€ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€๊ฐ€ ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ๋ฐ ๊ฐ€์šฉ์„ฑ ์˜์—ญ์— ๊ฑธ์ณ ๋ณต์ œ๋˜๋„๋กํ•œ๋‹ค. ํ•œ ์„œ๋ฒ„์—์„œ ๋˜๋Š” ๊ฐ€์šฉ ์˜์—ญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์œ„์น˜์—์„œ ์ค‘๋‹จ์—†์ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Fault Tolerance
  • Durabilitry (๋‚ด๊ตฌ์„ฑ)
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต ์ €์žฅํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์†์‹ค ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ๊นŒ์ง€ ๋ฉ”์‹œ์ง€๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ์ €์žฅ๋˜๋„๋กํ•œ๋‹ค.
  • Load Balancing (๋ถ€ํ•˜ ๋ถ„์‚ฐ)
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต ์ €์žฅํ•จ์œผ๋กœ์จ ๋งŽ์€ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ์™€ ๋™์‹œ ์ปจ์Šˆ๋จธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • SQS๋„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๊ณ  ๋ฉ”์‹œ์ง€ ์กฐํšŒ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒํ•œ๋‹ค.
  • Geographical Distribution (์ง€๋ฆฌ์  ๋ถ„์‚ฐ)
    • ์—ฌ๋Ÿฌ ์ง€์—ญ์— ๊ฑธ์ณ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์ง€๋ฆฌ์  ๋ถ„์‚ฐ ๋ฐ ์žฌํ•ด ๋ณต๊ตฌ๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค.
    • ์ค‘๋ณต ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ์ง€์—ญ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณด์žฅํ•˜์—ฌ ๊ธฐ์—…์ด ๋ฐ์ดํ„ฐ ๋ณต์›๋ ฅ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ง€๋ฆฌ์  ์œ„์น˜์—์„œ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
    • AWS์˜ ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ๋ฆฌ์ „์—์„œ ์„œ๋น„์Šค๋˜๋ฏ€๋กœ, ๊ด€๋ จํ•ด์„œ ๋‹ค์–‘ํ•œ ์ง€์—ญ์—์„œ ์ ‘๊ทผ์‹œ ๋น ๋ฅด๊ฒŒ ์‘๋‹ต์„ ์ฃผ๊ธฐ์œ„ํ•ด์„œ๋„ ์‚ฌ์šฉ๋˜์ง€์•Š์„๊นŒ์‹ถ๋‹ค. (๋ฌผ๋ก  ์ถ”์ธก์ด๋‹ค.)

3-2 ๋ฉ”์‹œ์ง€ ์ˆ˜๋ช…์ฃผ๊ธฐ

SQS ํ์—์„œ ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ๋ถ€ํ„ฐ ์‚ญ์ œ๊นŒ์ง€์˜ ๋ฉ”์‹œ์ง€ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


์ถœ์ฒ˜: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-architecture.html

  1. ์ปดํฌ๋„ŒํŠธ 1 (Producer)๋Š” ๋ฉ”์‹œ์ง€ A๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ์— ์ „์†กํ•œ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๋Š” SQS ์„œ๋ฒ„๋“ค์— ์ค‘๋ณต ๋ถ„์‚ฐ๋˜์–ด ์ €์žฅ๋œ๋‹ค.
    • SQS๋Š” ํ•˜๋‚˜์˜ ๋ฉ”์„ธ์ง€๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ ์ €์žฅํ•œ๋‹ค.
  2. ์ปดํฌ๋„ŒํŠธ 2 (Consumer)๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ํ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์š”์ฒญํ•˜๊ณ  ํ๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€ A๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. (์ด๋•Œ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋Š” inflight ์ƒํƒœ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.) ์ด๋•Œ ๋ฉ”์‹œ์ง€ A๋Š” ์ฒ˜๋ฆฌ๋˜๋Š” ๋™์•ˆ ํ์— ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์œผ๋ฉฐ, ๋ฉ”์‹œ์ง€์— ์„ค์ •๋œ ์ œํ•œ ์‹œ๊ฐ„(Visibility timeout)์ด ์ดˆ๊ณผ๋˜๊ธฐ์ „๊นŒ์ง€ ํ›„์† ์ปจ์Š˜ ์š”์ฒญ์—์„  ๋ฉ”์‹œ์ง€ A๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€์•Š๋Š”๋‹ค. (๋ณด์—ฌ์ง€์ง€๋„์•Š๋Š”๋‹ค)
  3. ์ปดํฌ๋„ŒํŠธ 2 (Consumer)๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ •์ƒ ์ฒ˜๋ฆฌํ–ˆ๋‹ค๋ฉด, ์ง์ ‘ SQS์— ๋ฉ”์‹œ์ง€ A ์‚ญ์ œ๋ฅผ ์š”์ฒญํ•œ๋‹ค. ๋ฉ”์‹œ์ง€ A๋Š” ์‚ญ์ œ๋˜์–ด ์ œํ•œ ์‹œ๊ฐ„ (Visibility timeout)์ด ์ดˆ๊ณผ๋˜๊ณ ์„œ๋„ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์‹  ์ปจ์Š˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

4 SQS ํŠน์ง•

SQS๋Š” ํ™•์žฅ์„ฑ์ด ๋งค์šฐ ๋›ฐ์–ด๋‚œ ๋ธŒ๋กœ์ปค ์—ญํ• ์„ ํ•œ๋‹ค.

์ด๋ฒˆ์—” SQS์˜ ํŠน์ง•๋“ค์„ ์‚ดํŽด๋ณธ๋‹ค.


4-1 ๋‘ ๊ฐ€์ง€ ํ ์ข…๋ฅ˜

SQS๋Š” Standard ํ์™€ FIFO ํ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.


์ถœ์ฒ˜: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-types.html

๋น„์ฆˆ๋‹ˆ์Šค๋ณ„๋กœ ํƒ€์ž…์„ ๊ฒฐ์ •ํ•˜๋Š” ์š”์†Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • Message Ordering
    • Standard๋Š” ์ตœ๋Œ€ํ•œ ์ˆœ์„œ๋Œ€๋กœ (best-effort ordering) ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜์ง€๋งŒ, ์ˆœ์„œ๊ฐ€ ์™„๋ฒฝํžˆ ๋ณด์žฅ๋˜์ง„ ์•Š๋Š”๋‹ค.
    • FIFO๋Š” ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, first-in-first-out์œผ๋กœ ์ˆœ์„œ๋ฅผ ์™„๋ฒฝํžˆ ๋ณด์žฅํ•œ๋‹ค.
  • Delivery
    • Standard๋Š” ์ ์–ด๋„ ํ•œ๋ฒˆ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์„ ๋ณด์žฅํ•œ๋‹ค. ๋‹ค๋งŒ, ๊ฐ€๋”์”ฉ ์ค‘๋ณต๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • FIFO๋Š” ์ •ํ™•ํžˆ ํ•œ๋ฒˆ๋งŒ ์ „๋‹ฌ๋˜๋ฉฐ, ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ง€์šฐ๊ธฐ์ „๊นŒ์ง€ ํ์— ๋‚จ์•„์žˆ๋Š”๋‹ค.
  • Throughput
    • Standard๋Š” unlimited throughput์„ ์ง€์›ํ•œ๋‹ค. ์ฆ‰, ์ฒ˜๋ฆฌ๋Ÿ‰์— ๊ด€ํ•ด์„œ ์ œํ•œ์ด ์—†๋‹ค.
    • FIFO๋Š” ์ดˆ๋‹น ์ตœ๋Œ€ 300๊ฐœ์˜ API๋กœ ์ œํ•œํ•œ๋‹ค.
  • Use cases
    • ์ค‘๋ณต ๋ฐ ์ž˜๋ชป๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ํ•ญ์ƒ Standard๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • FIFO์˜ ํŠน์„ฑ๊ณผ ์ค‘๋ณต๋œ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์ด ์ ˆ๋Œ€ ๋˜๋ฉด ์•ˆ๋˜๋Š” ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

FIFO๋Š” ์–ด๋–ป๊ฒŒ ์—ฌ๋Ÿฌ ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ๋“ค์˜ ์š”์ฒญ์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ• ๊นŒ?

FIFO ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋‹ค๋ณด๋‹ˆ ํ•œ๊ฐ€์ง€ ์˜๋ฌธ์ด ์ƒ๊ฒผ๋‹ค.

FIFO ํ๋Š” ์–ด๋–ป๊ฒŒ ์—ฌ๋Ÿฌ ์ปจ์Šˆ๋จธ๋“ค์˜ ์š”์ฒญ์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ผ๊นŒ?

๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ์ฐพ๋‹ค๋ณด๋‹ˆ ์ž˜ ์ •๋ฆฌ๋œ ๊ธ€์ด ์žˆ์–ด์„œ ๊ฐ€์ ธ์™€ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.


๐Ÿค” ์—ฌ๋Ÿฌ ํ”„๋กœ๋“€์„œ์˜ ์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ํ์— ์ €์žฅํ• ๊นŒ?


์ถœ์ฒ˜: https://aws.amazon.com/ko/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/

์œ„์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ํ”„๋กœ๋“€์„œ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ์— ์ €์žฅ๋  ๋•Œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

SQS๋Š” ์œ„์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ํ”„๋กœ๋“€์„œ์˜ ๋ฉ”์‹œ์ง€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ทธ๋ฃน์„ ๋‚˜๋ˆ  ํ์— ์ €์žฅํ•จ์œผ๋กœ์จ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•œ๋‹ค


์ถœ์ฒ˜: https://aws.amazon.com/ko/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/

์ฆ‰, ๊ฐ ํ”„๋กœ๋“€์„œ๋ณ„๋กœ ์š”์ฒญํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์— ๋‹ด์•„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ๋˜๋ฉด ๊ฐ ํ”„๋กœ๋“€์„œ๋ณ„๋กœ ์ƒ์„ฑํ•œ ๋ฉ”์‹œ์ง€๋Š” ๋ชจ๋‘ ์ˆœ์„œ๋ฅผ ๋ณด์žฅ๋ฐ›๋Š”๋‹ค.


๐Ÿค” ์—ฌ๋Ÿฌ ์ปจ์Šˆ๋จธ์˜ ์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€?

๋ฐ˜๋Œ€๋กœ ์ปจ์Š˜ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ๋Š” ์–ด๋–ป๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ์ปจ์Š˜ํ•˜๋Š๋ƒ์ด๋‹ค.


์ถœ์ฒ˜: https://aws.amazon.com/ko/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/

AWS๋Š” ์œ„์™€ ๊ฐ™์ด ๊ทธ๋ฃน๋ณ„๋กœ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋กํ•œ๋‹ค.

์ฆ‰, ์ปจ์Šˆ๋จธ๋‹น ํ•œ ์‹œ์ ์— ํ•œ ๊ทธ๋ฃน์˜ ๋ฉ”์‹œ์ง€๋“ค๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ์œผ๋กœ์จ, ๊ทธ๋ฃน์•ˆ์—์„œ์˜ ๋ฉ”์‹œ์ง€๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฌผ๋ก  ๊ทธ๋ฃน๋ณ„๋กœ ๋ชจ๋‘ inflight (์ปจ์Š˜๋˜์—ˆ์ง€๋งŒ, ์•„์ง ํ์—์„  ์‚ญ์ œ๋˜์ง€์•Š๋Š” ์ƒํƒœ) ์ƒํƒœ๊ฐ€์•„๋‹Œ๊ฒฝ์šฐ ๊ทธ๋ฃน๋ณ„๋กœ ๋‚จ์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌถ์–ด์„œ ๋ฐ˜ํ™˜ํ•  ๋•Œ๋„ ์žˆ๋‹ค๊ณ ํ•œ๋‹ค.


4-2 Visibility timeout

๊ฐ€์‹œ์„ฑ (๋ณด๊ธฐ) ์‹œ๊ฐ„ ์ œํ•œ


์ถœ์ฒ˜: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html

  • ๋ฉ”์„ธ์ง€๊ฐ€ ์ปจ์Š˜๋์„ ๋•Œ ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ๊ฐ€ ํ•ด๋‹น ๋ฉ”์„ธ์ง€๊ฐ€ ์‚ญ์ œ๋˜๊ธฐ ์ „๊นŒ์ง€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๋ง‰์•„๋‘๋Š” ์‹œ๊ฐ„.
    • ์ปจ์Šˆ๋จธ๊ฐ€ ๋Œ€๊ธฐ์—ด์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ฉ”์‹œ์ง€๋Š” ๋Œ€๊ธฐ์—ด์— ๋‚จ์•„ ์žˆ๋Š”๋‹ค. SQS ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. SQS๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์ด๋ฏ€๋กœ ์ปจ์Šˆ๋จธ๊ฐ€ ์‹ค์ œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค. (์˜ˆ: ์—ฐ๊ฒฐ ๋ฌธ์ œ ๋˜๋Š” ์†Œ๋น„์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฌธ์ œ). ๋˜ํ•œ, ์ปจ์Šˆ๋จธ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ ํ›„ ๋Œ€๊ธฐ์—ด์—์„œ ์ด ๋ฉ”์‹œ์ง€๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.
    • ์ด์™€ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ ์งํ›„์—๋„ ๋ฉ”์‹œ์ง€๊ฐ€ ํ์— ๊ทธ๋Œ€๋กœ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋„๋ก ์ฐจ๋‹จํ•˜๋Š” ๊ธฐ๊ฐ„์ด Visibility timeout์ด๋‹ค.
  • ํ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ ์„œ๋ฒ„๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ๋•Œ ๋™์ผํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ์ปจ์Šˆ๋จธ์—์„œ ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„๋งŒํผ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค. (์ปจ์Šˆ๋จธ ํ‰๊ท  ์ฒ˜๋ฆฌ์‹œ๊ฐ„)

์ฐธ๊ณ 


4-3 Delivery delay

์ง€์—ฐ ์ „์†ก


์ถœ์ฒ˜: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html

  • Delivery delay๋Š” ์ƒˆ ๋ฉ”์„ธ์ง€๊ฐ€ ํ์— ์ „์†ก๋˜๊ณ  Consumer์—๊ฒŒ ์ „์†ก๋˜๊ธฐ๊นŒ์ง€ ์ผ์ • ์‹œ๊ฐ„ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
    • Consumer๋Š” ์ƒˆ ๋ฉ”์„ธ์ง€๊ฐ€ ํ์— ์ „์†ก๋˜๋”๋ผ๋„ ํ•ด๋‹น ์‹œ๊ฐ„๋™์•ˆ ์ด ๋ฉ”์„ธ์ง€๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์—†๋‹ค. (๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.)
  • ๋ฐœํ–‰๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ปจ์Šˆ๋จธ๊ฐ€ ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๊ฒŒํ•˜๋Š” ๊ธฐ๋Šฅ. (๋ฉ”์‹œ์ง€ ๊ฐ๊ฐ์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.)
  • ์‚ฌ์šฉ ์ด์œ 
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ณดํ†ต ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋Š” ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ โ†’ ์ด๋ฒคํŠธ ๋ฐœํ–‰ โ†’ ์ด๋ฒคํŠธ ์ปจ์Š˜ โ†’ ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ ์กฐํšŒ์ˆœ์œผ๋กœ ์ด๋ค„์ง„๋‹ค.
    • ์ด๋•Œ ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์™„์ „ํžˆ ์ปค๋ฐ‹๋˜๊ธฐ ์ „ ์ด๋ฒคํŠธ ์ปจ์Š˜๊นŒ์ง€ ์™„๋ฃŒ๋˜์–ด ๋ณ€๊ฒฝ๋˜์ง€ ์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
    • ๋ณดํ†ต replica lag์— ์˜ํ•ด replication ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๋‚˜ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

4-4 Message retention period

๋ฉ”์‹œ์ง€ ๋ณด๊ด€ ๊ธฐํ•œ. ๋ฉ”์‹œ์ง€๋ณ„ TTL๊ณผ ๊ฐ™์€ ๊ฐœ๋…

  • SQS๋Š” ์ž๋™์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ปจ์Šˆ๋จธ๊ฐ€ ์‚ญ์ œํ•˜๊ธฐ์ „๊นŒ์ง€์˜ ๋ฉ”์‹œ์ง€ ๋ณด๊ด€ ๊ธฐํ•œ์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด ๊ธฐํ•œ์ด ์ง€๋‚˜๋ฉด ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋Š” ์ž๋™์œผ๋กœ SQS์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

4-5 Short Polling๊ณผ Long Polling

๋ฉ”์‹œ์ง€ ์ˆ˜์‹  (ReceiveMessage) API์˜ Timeout ์„ค์ •์— ๋”ฐ๋ฅธ Polling ๋ฐฉ์‹์ด ๋‚˜๋‰˜์ ธ์žˆ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.


SQS๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ปจ์Š˜ํ•˜๊ธฐ์œ„ํ•ด Polling ์ „๋žต์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ Polling ์ „๋žต์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.


๐Ÿ’โ€โ™‚๏ธ Short Polling

Short Polling์€ Consumer์—์„œ ๋ฉ”์‹œ์ง€ Polling์‹œ SQS ์„œ๋ฒ„์˜ ํ•˜์œ„ ์„ธํŠธ (๊ฐ€์ค‘์น˜ ๊ธฐ๋ฐ” ๋ฌด์ž‘์œ„ ๋ฐฐํฌ ๊ธฐ์ค€)๋ฅผ ์ƒ˜ํ”Œ๋งํ•˜๊ณ  ํ•ด๋‹น ์„œ๋ฒ„์—์„œ๋งŒ ๋ฉ”์‹œ์ง€๋ฅผ ํƒ์ƒ‰ ๋ฐ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ํŠน์ • ReceiveMessage ์š”์ฒญ์€ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์š”์ฒญํ•˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋Œ€๊ธฐ์‹œ๊ฐ„ ์—†์ด ๋ฐ”๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.


์ถœ์ฒ˜: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-short-long-polling-differences

์œ„ ๊ทธ๋ฆผ์€ ํ•œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ (ReceiveMessage)์„ ์š”์ฒญํ•˜๊ณ , Standard ํ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฉ”์‹œ์ง€์˜ Short Polling ๋™์ž‘์„ ๋ณด์—ฌ์ค€๋‹ค.

SQS ๋ช‡ ๊ฐœ์˜ ์„œ๋ฒ„ (ํšŒ์ƒ‰)๋ฅผ ์ƒ˜ํ”Œ๋งํ•˜๊ณ  ์ด๋“ค ์„œ๋ฒ„์—์„œ ๋ฉ”์‹œ์ง€ A, C, D, B๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ฐ˜ํ™˜๋˜์ง€์•Š๋Š” E๋Š” ์ƒ˜ํ”Œ๋งํ•œ ์„œ๋ฒ„์— ์—†์–ด์„œ ํ•ด๋‹น ์š”์ฒญ์—์„  ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์ง€๋งŒ ์ดํ›„ ์š”์ฒญ์—์„œ ๋ฐ˜ํ™˜๋œ๋‹ค. (๋ฌผ๋ก  ์ƒ˜ํ”Œ๋ง์—์„œ ๋˜ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.)


๐Ÿ’โ€โ™‚๏ธ Long Polling

๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ์š”์ฒญ (ReceiveMessage) API์— ๋Œ€ํ•œ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์„ค์ •์ด 0๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ Long Polling ์ „๋žต์ด ์‚ฌ์šฉ๋œ๋‹ค. (์ตœ๋Œ€ 20์ดˆ)

Long Polling ์‚ฌ์šฉ์‹œ ๋นˆ ์‘๋‹ต์˜ ์ˆ˜๋ฅผ ์ค„์—ฌ SQS ์‚ฌ์šฉ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ ํ•œ๋‹ค.

Long Polling ์‚ฌ์šฉ์‹œ ์ผ์ • ์‹œ๊ฐ„๋™์•ˆ ์ƒ˜ํ”Œ๋ง์ด ์•„๋‹Œ ๋ชจ๋“  SQS ์„œ๋ฒ„๋ฅผ ์กฐํšŒํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์‘๋‹ตํ•œ๋‹ค.

์ด๋•Œ ๋ฉ”์„ธ์ง€๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ๊ฐ€์ ธ์˜ค๊ณ , ๋ฉ”์„ธ์ง€๊ฐ€ ์—†์œผ๋ฉด ๋ฉ”์„ธ์ง€๊ฐ€ ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ. ๋˜๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๊ณ„์† ์˜ค์ง€ ์•Š์œผ๋ฉด ๊ธด ํด๋ง ์‹œ๊ฐ„๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ.


Receive message wait time

Short Polling๊ณผ Long Polling์€ ํ ์ƒ์„ฑ์‹œ Receive message wait time ๊ฐ’์„ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Receive message wait time์€ ๋ฉ”์„ธ์ง€ ํด๋งํ•˜๊ธฐ ์œ„ํ•ด ํ(๋Œ€๊ธฐ์—ด)์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๋ฉ”์„ธ์ง€๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์–ผ๋งˆ์˜ ์‹œ๊ฐ„๋™์•ˆ ํ์— ๋จธ๋ฌด๋ฅผ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.
  • ๊ธฐ๋ณธ ๊ฐ’์„ 0์ดˆ์ด๋ฉฐ, Short Polling์„ ์‚ฌ์šฉํ•œ๋‹ค. 0์ด ์•„๋‹Œ ๊ฐ’์„ ์„ค์ •ํ•  ๊ฒฝ์šฐ Long Polling์„ ์‚ฌ์šฉํ•œ๋‹ค.

5 DLQ (Dead-Letter Queue)

๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด, ์ปจ์Š˜ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ด๊ฒฝ์šฐ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ ์ปจ์Š˜ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ์— ํฐ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด์†Œํ•ด์ฃผ๋Š” ๊ฒƒ์ด DLQ ์—ญํ• ์ด๋‹ค.


5-1 DLQ ๊ฐœ๋…๊ณผ ๋™์ž‘ ๋ฐฉ์‹

๋งŽ์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์€ SQS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค ์•ฑ์„ ๋ถ„๋ฆฌํ•˜๊ณ  ํ™•์žฅํ•˜๋Š” ๋ฉ”์‹œ์ง€ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•œ๋‹ค.

์ด๋•Œ ํ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ Dead-Letter Queue๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์˜ฎ๊ฒจ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Producer๋‚˜ Consumer ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์˜ ์ž˜๋ชป๋œ ์กฐ๊ฑด ๋˜๋Š” ์ฝ”๋“œ์ƒ ๋ฌธ์ œ๋กœ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํƒœ ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

๋‹ค์‹œ ๋งํ•ด ๋ฉ”์‹œ์ง€๋Š” ์ˆ˜์‹ ํ–ˆ์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋‚ด์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ํ์— ๋ฉ”์‹œ์ง€๋ฅผ ์‚ญ์ œํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

ex. ์ฃผ๋ฌธ๊ด€๋ จ๋œ ์ด๋ฒคํŠธ๋กœ ์ปจ์Š˜ํ–ˆ๋Š”๋ฐ ์ƒํ’ˆ์ด ์‚ญ์ œ๋˜์–ด ์ƒํ’ˆ ID๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๊ฑฐ๋‚˜..

์ด๋ ‡๊ฒŒ ์›๋ณธ ํ์—์„œ ์ง€์ •๋œ ํšŸ์ˆ˜๋งŒํผ ๋ฉ”์‹œ์ง€๋ฅผ Polling ํ•ด๊ฐ”์ง€๋งŒ, ๊ณ„์†ํ•ด์„œ ์‚ญ์ œ๋˜์ง€์•Š๋Š” ๋ฉ”์‹œ์ง€๋ฅผ DLQ๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.


DLQ๋„ ์ผ๋ฐ˜์ ์ธ ํ์™€ ๋™์ผํ•˜๋ฉฐ, ๋™์ž‘๋ฐฉ์‹์€ ์ผ์ • ํšŸ์ˆ˜ (maxReceiveCount)๋งŒํผ ์ˆ˜์‹  ์š”์ฒญ์œผ๋กœ ๋ฐ˜ํ™˜ํ–ˆ์œผ๋‚˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ (์ฝ์–ด๊ฐ”์ง€๋งŒ ํ•ด๋‹น ๋ฉ”์‹œ์ง€ ์‚ญ์ œ ์š”์ฒญ์ด ์˜ค์ง€ ์•Š์Œ)๋˜์ง€์•Š์•˜์„๋•Œ DLQ๋กœ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ๋ฐฉ์‹์ด๋‹ค.


5-2 ํ ์œ ํ˜•์— ๋”ฐ๋ฅธ DLQ ์‚ฌ์šฉ์ด์œ 

๐Ÿ’โ€โ™‚๏ธ ๊ณตํ†ต ์ด์œ  - ๋ฉ”์‹œ์ง€ ์˜ค๋ฅ˜ ์›์ธ ํŒŒ์•…

DLQ์˜ ํ•ต์‹ฌ ์—ญํ• ์€ ์™„๋ฒฝํžˆ ์†Œ๋น„๋˜์ง€์•Š์€ ๋ฉ”์‹œ์ง€์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

DLQ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋”ฐ๋กœ ๋ณด๊ด€ํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ฐ€ ์‹คํŒจํ•œ ์ด์œ ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ’โ€โ™‚๏ธ Standard ํ

Standard ํ์˜ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๊ณ„์†ํ•ด์„œ ์›๋ณธ ํ์— ๋‚จ์•„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ปจ์Š˜๋จ์œผ๋กœ์จ SQS ๋น„์šฉ ์ฆ๊ฐ€์™€ ์ปจ์Šˆ๋จธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ถ€ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์‹คํŒจํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์ฒ˜๋ฆฌ๋ฅผ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ๋ณด๋‹จ, ๋ช‡ ๋ฒˆ ์‹œ๋„ํ•œ ๋’ค DLQ๋กœ ์ด๋™์‹œ์ผœ์„œ ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


๐Ÿ’โ€โ™‚๏ธ FIFO ํ

FIFO ํ๋Š” ์ˆœ์„œ๋Œ€๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•˜์—ฌ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์ด๋ ‡๊ฒŒํ•˜๋ฉด ํ๋ฅผ ๊ฐ€๋กœ๋ง‰๊ณ ์žˆ๋Š” ์ปจ์Šˆ๋จธ์—์„œ ์ฒ˜๋ฆฌ๋ชปํ•  ๋ฉ”์‹œ์ง€๊ฐ€ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋  ๋•Œ๊นŒ์ง€ ์ฒซ ๋ฒˆ์งธ ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๊ฐ€ ๋˜์ง€๋งŒ, ์ปจ์Šˆ๋จธ๋Š” ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน์œผ๋กœ๋ถ€ํ„ฐ ์ •๋ ฌ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ณ„์† ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ํ•œ ๊ทธ๋ฃน์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๊ณ„์†ํ•ด์„œ ํ์— ๋‚จ์•„ ํ•ด๋‹น ๊ทธ๋ฃน์˜ ๋‹ค์Œ ๋ฐฐ์น˜์‚ฌ์ด์ฆˆ๋งŒํผ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๊ณ , ๋ฐ˜๋ณต์ ์œผ๋กœ ํ•ด๋‹น ๊ทธ๋ฃน์„ ์ปจ์Š˜ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ถ€ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ•ด๋‹น ๊ทธ๋ฃน์˜ ๋ฉ”์‹œ์ง€๋ฅผ DLQ๋กœ ๋ณด๋ƒ„์œผ๋กœ์จ ํ•ด๋‹น ๊ทธ๋ฃน์˜ ๋‹ค์Œ ๋ฐฐ์น˜ ์‚ฌ์ด์ฆˆ๋งŒํผ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค.

FIFO์˜ ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน ๊ด€๋ จํ•ด์„œ๋Š” ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ .


5-3 DQL๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๊ฐ€?

  • ์‚ฌ์šฉ ์ถ”์ฒœ
    • Standard ํ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ. ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, DLQํ๊ฐ€ ์ž˜๋ชป๋œ ๋ฉ”์‹œ์ง€ ์ „์†ก ์ž‘์—…์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€๋œ๋‹ค.
    • ์ˆ˜์‹ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€์— ๋…ธ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์ด๊ณ  ์‹ถ์„๋•Œ.
  • ์‚ฌ์šฉ ๋น„์ถ”์ฒœ
    • ์ข…์† ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ฑฐ๋‚˜ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๋ฉ”์‹œ์ง€ ์ „์†ก์„ ๋ฌด๊ธฐํ•œ์œผ๋กœ ๊ณ„์† ์žฌ์‹œ๋„ํ•ด์•ผํ•  ๋•Œ๋Š” ๋น„์ถ”์ฒœํ•œ๋‹ค.
    • ๋ฉ”์‹œ์ง€ ๋˜๋Š” ์ž‘์—…์˜ ์ •ํ™•ํ•œ ์ˆœ์„œ๋ฅผ ๊นจ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด FIFO ํ์— DLQ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

5-4 DLQ Redrive


DLQ ๋™์ž‘๋ฐฉ์‹
์ถœ์ฒ˜: https://aws.amazon.com/ko/blogs/korea/enhanced-dlq-management-sqs/

์ผ์ • ํšŸ์ˆ˜ (maxReceiveCount)๋งŒํผ ์ˆ˜์‹  ์š”์ฒญ์œผ๋กœ ๋ฐ˜ํ™˜ํ–ˆ์œผ๋‚˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ (์ฝ์–ด๊ฐ”์ง€๋งŒ ํ์—์„œ ์‚ญ์ œ๋˜์ง€์•Š์Œ)๋˜์ง€์•Š์•„ DLQ๋กœ ์ด๋™๋œ ๋ฉ”์‹œ์ง€๋Š” Redrive ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์›๋ณธ ํ๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค.