๐Ÿ“‚ AWS/AWS Developer - Associate

[AWS] Developer Associate #8 ๋ฉ”์„ธ์ง•(SQS, SNS)

dhyuck 2024. 9. 22. 23:19
๋ฐ˜์‘ํ˜•

๋ฉ”์„ธ์ง•์ด๋ž€?

  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ†ต์‹  ๋ฐฉ์‹์—๋Š” ํฌ๊ฒŒ Synchronous communication(๋™๊ธฐ ํ†ต์‹ )๊ณผ Asynchronous communication(๋น„๋™๊ธฐ ํ†ต์‹ )์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋™๊ธฐ ํ†ต์‹ ์€ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹์ด๊ณ  ๋น„๋™๊ธฐ ํ†ต์‹ ์€ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ๋™๊ธฐ ํ†ต์‹ ์€ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๊ฐ€ ๋Š๋ ค์ง€๋ฉด ๋‹ค๋ฅธ ์„œ๋น„์Šค๋„ ์—ฐ์‡„์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฐ›๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋น„๋™๊ธฐ ํ†ต์‹ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”์„ธ์ง•์€ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ฃผ์š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • ๋Œ€ํ‘œ์ ์ธ ๋ฉ”์„ธ์ง• ํŒจํ„ด์œผ๋กœ Queue model๊ณผ์™€ Pub/Sub model์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • AWS๋Š” Messing Queue ์„œ๋น„์Šค๋กœ SQS, Pub/Sub ์„œ๋น„์Šค๋กœ SNS๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ ํ๋ž€?

  • ์ƒ์‚ฐ์ž(Producer)๋Š” ๋ฉ”์‹œ์ง€๋ฅผ Queue์— ์ „์†กํ•˜๊ณ  ์†Œ๋น„์ž(Consumer)๋Š” Queue์— ์žˆ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Message Queue๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ฐ„์˜ ์ง์ ‘์ ์ธ ์˜์กด์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Message Queue๋Š” ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฒ„ํผ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • Message Queue๋Š” ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ธ‰์ฆํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งŽ์€ ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ๋Œ€๊ธฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ ๋ฉ”์‹œ์ง€๋Š” ํ•˜๋‚˜์˜ ์†Œ๋น„์ž์— ์˜ํ•ด ํ•œ ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Message Queue๋ฅผ One-to-One(์ผ๋Œ€์ผ) ๋˜๋Š” Point-to-Point(์ ๋Œ€์ ) ํ†ต์‹ ์ด๋ผ๊ณ  ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

SQS(Simple Queue Service)๋ž€?

  • AWS SQS๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• Message Queue Service์ž…๋‹ˆ๋‹ค.
  • SQS๋Š” Standard queue์™€ FIFO queue๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์‹œ์ง€์˜ ํฌ๊ธฐ๋Š” ์ตœ์†Œ 1 byte์—์„œ ์ตœ๋Œ€ 256 KiB๊นŒ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์‹œ์ง€์˜ ๋ณด์กด ๊ธฐ๊ฐ„์€ ๊ธฐ๋ณธ 4์ผ์ด๊ณ  ์ตœ์†Œ 60์ดˆ์—์„œ ์ตœ๋Œ€ 14์ผ๊นŒ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SQS๋Š” ๋ฉ”์‹œ์ง€์˜ ์•ˆ์ „์„ฑ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • SQS๋Š” Access Policy๋กœ Queue์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” user์™€ role, ํ—ˆ์šฉ๋˜๋Š” ์ž‘์—…์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • SQS์˜ ๋™์ž‘ ๋ฐฉ์‹
    1. ์ƒ์‚ฐ์ž๊ฐ€ Queue๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†ก(SendMessage)ํ•ฉ๋‹ˆ๋‹ค.
    2. SQS๋Š” SQS ์„œ๋ฒ„๋“ค์— ๋ฉ”์‹œ์ง€๋ฅผ ์ค‘๋ณตํ•˜์—ฌ ๋ถ„์‚ฐ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    3. ์†Œ๋น„์ž๊ฐ€ Queue์— ๋ฉ”์‹œ์ง€๋ฅผ ์š”์ฒญํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ (ReceiveMessage)ํ•ฉ๋‹ˆ๋‹ค.
    4. ์†Œ๋น„์ž์—๊ฒŒ ์ „๋‹ฌ๋œ ๋ฉ”์‹œ์ง€๋Š” ์ฆ‰์‹œ ํ์—์„œ ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ , Visibility Timeout ๋™์•ˆ ๋‹ค๋ฅธ ์†Œ๋น„์ž์—๊ฒŒ ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    5. ์†Œ๋น„์ž๋Š” ๋ฐ›์€ ๋ฉ”์‹œ์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด SQS์— ์‚ญ์ œ๋ฅผ ์š”์ฒญ(DeleteMessage)ํ•ฉ๋‹ˆ๋‹ค.

SQS - Standard Queue

  • Standard Queue๋Š” ๋ฉ”์‹œ์ง€ ์ˆœ์„œ๋ฅผ ์ตœ์„ ์˜ ๋…ธ๋ ฅ(Best Effort)์œผ๋กœ ์œ ์ง€ํ•˜์ง€๋งŒ ์ •ํ™•ํ•œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Standard Queue๋Š” ์ตœ์†Œ 1ํšŒ ์ „๋‹ฌ(at-least-once delivery)๋˜๊ณ  ๊ฐ€๋” 2๊ฐœ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ 2๋ฒˆ ์ด์ƒ ์ฒ˜๋ฆฌํ•ด๋„ ์˜ํ–ฅ์ด ์—†๋„๋ก ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฉฑ๋“ฑ์ ์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Standard Queue๋Š” ๋ฌด์ œํ•œ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Standard Queue๋Š” ๋ช…๋ช… ๊ทœ์น™์ด ์—†์Šต๋‹ˆ๋‹ค.

SQS - FIFO Queue

  • FIFO Queue๋Š” ๋ฉ”์‹œ์ง€ ์ˆœ์„œ๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • FIFO Queue๋Š” ์ •ํ™•ํžˆ 1๋ฒˆ๋งŒ ์ „๋‹ฌ(Exactly-Once Delivery)๋˜๊ณ  ์ค‘๋ณต์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด์„œ Content-based deduplication๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋ฉ”์‹œ์ง€์— MessageDeduplicationId๋ฅผ ์‚ฝ์ž…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    FIFO Queue์— Content-based deduplication์„ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๊ณ  MessageDeduplicationId๋„ ์‚ฝ์ž…ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”์‹œ์ง€ ์ „์†ก์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  • FIFO Queue๋Š” ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๋Ÿ‰์— ์ œํ•œ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ์ˆœ์„œ๋กœ 1๋ฒˆ๋งŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • FIFO Queue๋Š” ์ด๋ฆ„ ๋์— .fifo ์ ‘๋ฏธ์‚ฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • FIFO Queue์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” MessageGroupId๋ฅผ ์ง€์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    MessageGroupId๋Š” FIFO Queue์—์„œ ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.

SQS - Visibility Timeout

  • SQS๋Š” ์†Œ๋น„์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐ€๋”๋ผ๋„ ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์†Œ๋น„์ž๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  DeleteMessage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์†Œ๋น„์ž๊ฐ€ Queue์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ๋ฉ”์‹œ์ง€๋Š” ๋Œ€๊ธฐ์—ด์— ๋‚จ์•„์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์†Œ๋น„์ž์—๊ฒŒ๋Š” ์ผ์‹œ์ ์œผ๋กœ ๋ณด์ด์ง€ ์•Š๊ฒŒ(temporarily invisible)๋˜๋Š”๋ฐ ์ด๋Š” Visibility Timeout์— ์˜ํ•ด ์ œ์–ด๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์†Œ๋น„์ž๊ฐ€ Visibility timeout์ด ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์— ๋ฉ”์‹œ์ง€๋ฅผ ์‚ญ์ œํ•˜์ง€ ๋ชปํ•˜๋ฉด Queue์— ๋‹ค์‹œ ๋ณด์ด๊ฒŒ ๋˜๊ณ  ๋‹ค๋ฅธ ์†Œ๋น„์ž๊ฐ€ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Standard Queue์—์„œ Visibility timeout์€ ์—ฌ๋Ÿฌ ์†Œ๋น„์ž๊ฐ€ ๋™์ผํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์ง€๋งŒ Visibility timeout ๋™์•ˆ์— ๋ฉ”์‹œ์ง€๊ฐ€ 2๋ฒˆ ์ด์ƒ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค.
  • FIFO Queue์—์„œ Visibility timeout์ด ๋งŒ๋ฃŒ๋˜์—ˆ์ง€๋งŒ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
    FIFO Queue์—์„œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ค์‹œ ๊ฒ€์ƒ‰๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋™์ผํ•œ Group id๋ฅผ ๊ฐ€์ง„ ์ƒˆ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    FIFO Queue์—์„œ๋Š” ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ž์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน ์ „์ฒด์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Visibility timeout์€ ๊ธฐ๋ณธ 30์ดˆ์ด๊ณ  ์ตœ์†Œ 0์ดˆ์—์„œ ์ตœ๋Œ€ 12์‹œ๊ฐ„๊นŒ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

SQS - Dead Letter Queue(DLQ)

  • DLQ(Dead Letter Queue)๋Š” ์‹œ์Šคํ…œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด์ž…๋‹ˆ๋‹ค.
  • ๋ฉ”์‹œ์ง€ ์ž์ฒด์˜ ๋ฌธ์ œ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ค๋ฅ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๊ฐ€ ํ•ญ์ƒ ์„ฑ๊ณตํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
    ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ DLQ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํŒจํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ด๋™์‹œ์ผœ ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  DLQ์— ์ €์žฅ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • DLQ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ์šด Queue๋ฅผ ๋งŒ๋“ค์–ด ๊ธฐ์กด Queue์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • FIFO Queue๋Š” FIFO DLQ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Standard Queue๋Š” Standard DLQ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ Queue๋ฅผ DLQ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • Standard DLQ์˜ ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๊ฐ€ ์›๋ž˜ Queue์— ์ถ”๊ฐ€๋œ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, DLQ์˜ ๋ณด์กด ๊ธฐ๊ฐ„์„ ์›๋ž˜ ํ์˜ ๋ณด์กด ๊ธฐ๊ฐ„๋ณด๋‹ค ๊ธธ๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    FIFO DLQ์˜ ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๊ฐ€ DLQ์— ์ถ”๊ฐ€๋œ ์‹œ์ ์˜ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด์กด ๊ธฐ๊ฐ„์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
  • Standard DLQ์˜ ๊ฒฝ์šฐ ์›๋ž˜ ๋Œ€๊ธฐ์—ด์— ์ถ”๊ฐ€๋œ ์‹œ๊ฐ„์„ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ DLQ์˜ ๋ณด์กด ๊ธฐ๊ฐ„์„ ์›๋ž˜ ๋Œ€๊ธฐ์—ด์˜ ๋ณด์กด ๊ธฐ๊ฐ„๋ณด๋‹ค ๊ธธ๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    FIFO DLQ์˜ ๊ฒฝ์šฐ DLQ์— ์ถ”๊ฐ€๋œ ์‹œ๊ฐ„์„ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • DLQ Redrive๋Š” DLQ์—์„œ ์†Œ๋น„๋˜์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€๋ฅผ ์›๋ž˜ Queue ๋˜๋Š” ๋‹ค๋ฅธ Queue๋กœ ๋ณต์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

SQS - Delivery delay

  • Delay Queue(Delivery delay)๋Š” ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๋ฅผ ์ง€์—ฐ์‹œ์ผœ ์†Œ๋น„์ž๊ฐ€ ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ณด์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • Delivery delay๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๋ฅผ ์ง€์—ฐ์‹œ์ผœ ์†Œ๋น„์ž์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์„ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Delivery delay์˜ ๊ธฐ๋ณธ ๊ฐ’์€ 0์ดˆ์ด๊ณ  ์ตœ๋Œ€ 15๋ถ„๊นŒ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • Delivery delay๋Š” Queue์— ์ฒ˜์Œ ์ถ”๊ฐ€ ๋˜์—ˆ์„ ๋•Œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆจ๊ฒจ์ง€์ง€๋งŒ
    Visibility timeout์€ Queue์—์„œ ์†Œ๋น„๋œ ํ›„์— ์ˆจ๊ฒจ์ง‘๋‹ˆ๋‹ค.
  • ๊ฐœ๋ณ„ ๋ฉ”์‹œ์ง€๋ฅผ ์ง€์—ฐ์‹œํ‚ค๋ ค๋ฉด Message timer๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SQS - Long Polling๊ณผ Short Polling

  • Queue์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ Short Polling(๊ธฐ๋ณธ๊ฐ’)๊ณผ Long Polling์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Short Polling์€ ๋ฉ”์‹œ์ง€ ์กด์žฌ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ฐ”๋กœ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • Long Polling์€ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ณ  Queue์— ์ ์–ด๋„ 1๊ฐœ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์„ ๋•Œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋œ ๊ฒฝ์šฐ์— ๋นˆ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • Long Polling์€ ๋นˆ ์‘๋‹ต ์ˆ˜๋ฅผ ์ค„์ด๊ณ  SQS ์š”์ฒญ์„ ์ค„์—ฌ ๋น„์šฉ์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • Short Polling์€ SQS ์„œ๋ฒ„ ์ค‘ ๋ช‡๊ฐœ๋งŒ ์ฟผ๋ฆฌํ•˜๊ณ  Long Polling์€ SQS ๋ชจ๋“  ์„œ๋ฒ„์— ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Short Polling์€ Queue์—์„œ ReceiveMessageWaitTimeSeconds๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ReceiveMessage๋ฅผ ํ˜ธ์ถœํ• ๋•Œ WaitTimeSeconds๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ Short Polling๋ณด๋‹ค๋Š” Long Polling์ด ๋น„์šฉ์ด ์ €๋ ดํ•˜๊ณ  ์„ฑ๋Šฅ์€ ํ–ฅ์ƒ๋˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค.

Pub/Sub ๋ชจ๋ธ์ด๋ž€?

  • Pub/Sub ๋ชจ๋ธ์€ ๋ฐœํ–‰์ž(Publisher)๋Š” Topic์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ๊ตฌ๋…์ž(Subscriber)๋Š” Topic์„ ๊ตฌ๋…ํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
  • Pub/Sub ๋ชจ๋ธ์€ Push ๋ฐฉ์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๋…์ž๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • Push ๋ฐฉ์‹์€ Polling ๋ฐฉ์‹์— ๋น„ํ•ด ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Pub/Sub ๋ชจ๋ธ์€ ์—ฌ๋Ÿฌ ๊ตฌ๋…์ž๊ฐ€ ๋™์‹œ์— ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Pub/Sub ๋ชจ๋ธ์„ One-to-Many ํ†ต์‹ ์ด๋ผ๊ณ  ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

SNS(Simple Notification Service)๋ž€?

  • AWS SNS๋Š” Pub/Sub ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
  • ๊ตฌ๋…์ž๋Š” SNS Topic์„ ๊ตฌ๋…ํ•˜๊ณ  Data Firehose, SQS, Lambda, HTTP, email, SMS์™€ ๊ฐ™์€ ์—”๋“œํฌ์ธํŠธ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SNS๋Š” ๋™์ผํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ์ˆ˜์‹ ์ž์—๊ฒŒ ๋™์‹œ์— ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ Topic ๊ตฌ๋…์ž๋Š” ๊ฒŒ์‹œ๋œ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜์ง€๋งŒ ๋ฉ”์‹œ์ง€ ํ•„ํ„ฐ๋ง์„ ๊ตฌ์„ฑํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฉ”์‹œ์ง€๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SNS๋Š” ์ „๋‹ฌํ•˜์ง€ ๋ชปํ•œ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด SQS๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” DLQ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • FIFO Topic์€ ์—„๊ฒฉํ•œ ๋ฉ”์‹œ์ง€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน๊ณผ ๋ฉ”์‹œ์ง€ ์ค‘๋ณต์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • FIFO Topic์€ ์ด๋ฆ„ ๋์— .fifo ์ ‘๋ฏธ์‚ฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Fan-out์ด๋ž€?

  • ํ•˜๋‚˜์˜ ์ถœ๋ ฅ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž…๋ ฅ์ด ๋˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ํŒจํ„ด์„ Fan-out ํŒจํ„ด์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • Fan-out ํŒจํ„ด์€ ํ•˜๋‚˜์˜ Topic์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ตฌ๋…์ž๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€์ƒ์—๊ฒŒ ๋™์‹œ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Fan-out ํŒจํ„ด์€ ์‹œ์Šคํ…œ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•