2454 ๋‹จ์–ด
12 ๋ถ„
๐Ÿ“จ AWS Integration & Messaging

๐Ÿ“จ AWS Integration & Messaging#

SQS ยท SNS ยท Kinesis ยท Amazon MQ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ๊ฒฐํ•ฉ(Coupling)์„ ์ œ๊ฑฐํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ํ™•์žฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ํ•ต์‹ฌ ์„œ๋น„์Šค


๋ชฉ์ฐจ#

  1. ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค ๊ฐœ์š”
  2. Amazon SQS (Simple Queue Service)
  3. Amazon SQS - FIFO Queue
  4. Amazon SNS (Simple Notification Service)
  5. Amazon Kinesis
  6. SQS vs. SNS vs. Kinesis โ€” ์ตœ์ข… ๋น„๊ต
  7. Amazon MQ
  8. ๐Ÿ“Œ ์‹œํ—˜ ์ž์ฃผ ์ถœ์ œ ํฌ์ธํŠธ ์ด์ •๋ฆฌ
  9. ๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

๋ฉ”์‹œ์ง• ์„œ๋น„์Šค ๊ฐœ์š”#

์„œ๋น„์ŠคํŒจํ„ดํ•ต์‹ฌ ํŠน์ง•
SQSQueue (Pull)๋ฉ”์‹œ์ง€ ํ, Consumer๊ฐ€ ์ง์ ‘ Pull
SNSPub/Sub (Push)ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์ˆ˜ Subscriber์—๊ฒŒ Push
KinesisReal-time Streaming์‹ค์‹œ๊ฐ„ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ
Amazon MQ์˜คํ”ˆ ํ”„๋กœํ† ์ฝœ ๋ธŒ๋กœ์ปคMQTT, AMQP ๋“ฑ ๊ธฐ์กด ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ”„๋กœํ† ์ฝœ ์ง€์›

Decoupling์˜ ์ด์œ :

Synchronous ํ†ต์‹ : [์•ฑ A] โ”€์ง์ ‘ ํ˜ธ์ถœโ”€โ†’ [์•ฑ B] โ† ํ•œ์ชฝ ์žฅ์•  ์‹œ ์ „์ฒด ์˜ํ–ฅ
Asynchronous ํ†ต์‹ : [์•ฑ A] โ†’ [Queue/Topic] โ†’ [์•ฑ B] โ† ๋…๋ฆฝ์  ํ™•์žฅ ๊ฐ€๋Šฅ

Amazon SQS (Simple Queue Service)#

Standard Queue#

ํ•ญ๋ชฉ๋‚ด์šฉ
Throughput๋ฌด์ œํ•œ (Unlimited)
๋ฉ”์‹œ์ง€ ๋ณด์กด ๊ธฐ๊ฐ„๊ธฐ๋ณธ 4์ผ, ์ตœ๋Œ€ 14์ผ
๋ฉ”์‹œ์ง€ ์ตœ๋Œ€ ํฌ๊ธฐ256 KB
์ง€์—ฐ ์‹œ๊ฐ„< 10ms (Publish/Receive)
์ „๋‹ฌ ๋ฐฉ์‹At-least-once delivery (์ค‘๋ณต ๊ฐ€๋Šฅ)
์ˆœ์„œ ๋ณด์žฅBest-effort ordering (์ˆœ์„œ ๋ฏธ๋ณด์žฅ)

SQS ๋ฉ”์‹œ์ง€ ํ๋ฆ„#

[Producer] โ”€ SendMessage API โ”€โ†’ [SQS Queue] โ”€ Poll โ”€โ†’ [Consumer]
โ”‚
์ฒ˜๋ฆฌ ์™„๋ฃŒ ํ›„
DeleteMessage API
  • Consumer๋Š” ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 10๊ฐœ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  (Receive)
  • ๋ฉ”์‹œ์ง€๋Š” Consumer๊ฐ€ DeleteMessage API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „๊นŒ์ง€ Queue์— ์œ ์ง€
  • Consumer๋Š” EC2, Lambda, ์˜จํ”„๋ ˆ๋ฏธ์Šค ์„œ๋ฒ„ ๋“ฑ ์–ด๋””์„œ๋“  ์‹คํ–‰ ๊ฐ€๋Šฅ

Message Visibility Timeout (๋ฉ”์‹œ์ง€ ๊ฐ€์‹œ์„ฑ ํƒ€์ž„์•„์›ƒ)#

Consumer๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ Poll
โ”‚
โ–ผ
๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ค๋ฅธ Consumer์—๊ฒŒ "๋น„๊ฐ€์‹œ(Invisible)" ์ƒํƒœ๋กœ ์ „ํ™˜
โ”‚
โ–ผ
๊ธฐ๋ณธ 30์ดˆ ๋‚ด์— ์ฒ˜๋ฆฌ + DeleteMessage ์™„๋ฃŒ โ†’ ๋ฉ”์‹œ์ง€ ์˜๊ตฌ ์‚ญ์ œ
์ฒ˜๋ฆฌ ์‹คํŒจ / ์‹œ๊ฐ„ ์ดˆ๊ณผ โ†’ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ค์‹œ Queue์— "๊ฐ€์‹œ(Visible)" ์ƒํƒœ๋กœ ๋ณต๊ท€
โ†’ ๋‹ค๋ฅธ Consumer๊ฐ€ ์žฌ์ฒ˜๋ฆฌ (์ค‘๋ณต ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ)
ํ•ญ๋ชฉ๋‚ด์šฉ
๊ธฐ๋ณธ๊ฐ’30์ดˆ
ํƒ€์ž„์•„์›ƒ ์—ฐ์žฅ ๋ฐฉ๋ฒ•ChangeMessageVisibility API ํ˜ธ์ถœ
๋„ˆ๋ฌด ๋‚ฎ์œผ๋ฉด์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ค‘๋ณต ๋ฉ”์‹œ์ง€ ๋ฐœ์ƒ
๋„ˆ๋ฌด ๋†’์œผ๋ฉดConsumer ํฌ๋ž˜์‹œ ์‹œ ์žฌ์ฒ˜๋ฆฌ๊นŒ์ง€ ์˜ค๋žœ ๋Œ€๊ธฐ

Long Polling (๋กฑ ํด๋ง)#

  • Consumer๊ฐ€ Queue์— ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์„ ๋•Œ **์ผ์ • ์‹œ๊ฐ„ ๋Œ€๊ธฐ(Wait)**ํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ๋„์ฐฉ ์‹œ ์ฆ‰์‹œ ์ˆ˜์‹ 
  • Short Polling (๊ธฐ๋ณธ): ๋ฉ”์‹œ์ง€ ์—†์œผ๋ฉด ์ฆ‰์‹œ ๋นˆ ์‘๋‹ต โ†’ API ํ˜ธ์ถœ ๋‚ญ๋น„
  • Long Polling ์žฅ์ :
    • SQS์— ๋Œ€ํ•œ API ํ˜ธ์ถœ ์ˆ˜ ๊ฐ์†Œ โ†’ ๋น„์šฉ ์ ˆ๊ฐ
    • ์ง€์—ฐ ์‹œ๊ฐ„(Latency) ๊ฐ์†Œ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํšจ์œจ ํ–ฅ์ƒ
  • ๋Œ€๊ธฐ ์‹œ๊ฐ„: 1์ดˆ ~ 20์ดˆ (20์ดˆ ๊ถŒ์žฅ)
  • ์„ค์ •: Queue ๋ ˆ๋ฒจ ๋˜๋Š” API ๋ ˆ๋ฒจ (WaitTimeSeconds ํŒŒ๋ผ๋ฏธํ„ฐ)

๐Ÿ’ก Long Polling์ด Short Polling๋ณด๋‹ค ํ•ญ์ƒ ๊ถŒ์žฅ๋จ


SQS ๋ณด์•ˆ#

ํ•ญ๋ชฉ๋‚ด์šฉ
In-flight ์•”ํ˜ธํ™”HTTPS API
At-rest ์•”ํ˜ธํ™”AWS KMS
Client-side ์•”ํ˜ธํ™”ํด๋ผ์ด์–ธํŠธ ์ง์ ‘ ์ฒ˜๋ฆฌ
์ ‘๊ทผ ์ œ์–ดIAM Policies
SQS Access PolicyS3 Bucket Policy ํ˜•ํƒœ โ€” Cross-Account ์ ‘๊ทผ, SNS/S3 ๋“ฑ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ์“ฐ๊ธฐ ํ—ˆ์šฉ ์‹œ ์‚ฌ์šฉ

SQS + Auto Scaling Group (ASG) ํŒจํ„ด#

[์š”์ฒญ]
โ”‚
โ–ผ
[Frontend App (ASG)] โ”€ SendMessage โ”€โ†’ [SQS Queue]
โ”‚
CloudWatch Metric
(ApproximateNumberOfMessages)
โ”‚ Queue ๊ธธ์ด ์ž„๊ณ„๊ฐ’ ์ดˆ๊ณผ
โ–ผ
[CloudWatch Alarm]
โ”‚
โ–ผ
[Backend ASG Scale Out]
โ”‚
ReceiveMessage โ”€โ†’ DB Insert

ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค:

  • Frontend์™€ Backend๋ฅผ ์™„์ „ํžˆ ๋ถ„๋ฆฌ(Decouple)
  • Backend ์ฒ˜๋ฆฌ ์†๋„๋ณด๋‹ค ์š”์ฒญ์ด ๋น ๋ฅผ ๋•Œ SQS๋ฅผ Buffer๋กœ ํ™œ์šฉ โ†’ ๋ฐ์ดํ„ฐ ์œ ์‹ค ์—†์Œ
  • ApproximateNumberOfMessages CloudWatch Metric โ†’ ASG Scaling ํŠธ๋ฆฌ๊ฑฐ

Amazon SQS - FIFO Queue#

ํ•ญ๋ชฉStandard QueueFIFO Queue
์ˆœ์„œBest-effort (๋ฏธ๋ณด์žฅ)์—„๊ฒฉํ•œ FIFO ๋ณด์žฅ
์ค‘๋ณต๊ฐ€๋Šฅ (at-least-once)์ •ํ™•ํžˆ 1ํšŒ ์ „์†ก (Exactly-once)
Throughput๋ฌด์ œํ•œ๋ฐฐ์น˜ ์—†์Œ: 300 msg/s / ๋ฐฐ์น˜: 3,000 msg/s
์ค‘๋ณต ์ œ๊ฑฐ-Deduplication ID ๊ธฐ๋ฐ˜
์ˆœ์„œ ๊ทธ๋ฃน-Message Group ID (ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ)

๐Ÿ“Œ Message Group ID: ๊ฐ™์€ Group ID ๋‚ด ๋ฉ”์‹œ์ง€๋Š” ์ˆœ์„œ ๋ณด์žฅ. ์„œ๋กœ ๋‹ค๋ฅธ Group์€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ.


Amazon SNS (Simple Notification Service)#

Pub/Sub ํŒจํ„ด#

[Event Producer]
โ”‚
โ–ผ
[SNS Topic] โ† ๋ฉ”์‹œ์ง€ 1ํšŒ ๋ฐœํ–‰
โ”‚ โ”‚ โ”‚
โ–ผ โ–ผ โ–ผ
[Sub1] [Sub2] [Sub3] ... โ† ๋ชจ๋“  Subscriber๊ฐ€ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ 
ํ•ญ๋ชฉ๋‚ด์šฉ
Subscriber ์ˆ˜ํ† ํ”ฝ๋‹น ์ตœ๋Œ€ 12,500,000๊ฐœ
Topic ์ˆ˜๊ณ„์ •๋‹น ์ตœ๋Œ€ 100,000๊ฐœ
๋ฐ์ดํ„ฐ ์ง€์†์„ฑโŒ ์ „๋‹ฌ ์‹คํŒจ ์‹œ ๋ฉ”์‹œ์ง€ ์†Œ๋ฉธ

์ง€์› Subscriber ์œ ํ˜•:

  • SQS, Lambda, Kinesis Data Firehose, HTTP/HTTPS Endpoint
  • Email, SMS, Mobile Push Notification

SNS ๋ณด์•ˆ#

SQS์™€ ๋™์ผํ•œ ๊ตฌ์กฐ:

  • In-flight: HTTPS / At-rest: KMS / Client-side: ๊ณ ๊ฐ ์ง์ ‘ ์ฒ˜๋ฆฌ
  • IAM Policies + SNS Access Policy (Cross-Account, S3 ๋“ฑ ์„œ๋น„์Šค๊ฐ€ SNS์— ์“ฐ๊ธฐ ํ—ˆ์šฉ)

SNS Message Filtering (๋ฉ”์‹œ์ง€ ํ•„ํ„ฐ๋ง)#

  • JSON Policy๋กœ ๊ฐ Subscription์ด ์ˆ˜์‹ ํ•  ๋ฉ”์‹œ์ง€๋ฅผ ํ•„ํ„ฐ๋ง
  • ํ•„ํ„ฐ๊ฐ€ ์—†๋Š” Subscription โ†’ ๋ชจ๋“  ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ 
[SNS Topic: ์ฃผ๋ฌธ ์ด๋ฒคํŠธ]
โ”‚
โ”œโ”€โ”€ [SQS: ์ฃผ๋ฌธ์™„๋ฃŒ ํ] โ† Filter: {"state": ["placed"]}
โ”œโ”€โ”€ [SQS: ์ทจ์†Œ ํ] โ† Filter: {"state": ["cancelled"]}
โ””โ”€โ”€ [Lambda: ์ „์ฒด ์ฒ˜๋ฆฌ] โ† Filter ์—†์Œ (๋ชจ๋“  ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ )

SNS + SQS Fan-Out ํŒจํ„ด#

๋ฌธ์ œ: S3 Event๋Š” ํ•˜๋‚˜์˜ Rule์— ํ•˜๋‚˜์˜ ๋Œ€์ƒ๋งŒ ์„ค์ • ๊ฐ€๋Šฅ ํ•ด๊ฒฐ: SNS Topic์„ ์ค‘๊ฐ„์— ๋‘๊ณ  ์—ฌ๋Ÿฌ SQS Queue๋กœ Fan-Out

[S3 Event] โ”€โ†’ [SNS Topic] โ”€โ†’ [SQS Queue A] โ†’ ์ธ๋„ค์ผ ์ƒ์„ฑ
โ”€โ†’ [SQS Queue B] โ†’ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ
โ”€โ†’ [SQS Queue C] โ†’ ๊ฐ์‚ฌ ๋กœ๊ทธ

Fan-Out ์žฅ์ :

  • ์™„์ „ํ•œ Decoupling, ๋ฐ์ดํ„ฐ ์œ ์‹ค ์—†์Œ
  • SQS: ๋ฐ์ดํ„ฐ ์˜์†์„ฑ, ์ง€์—ฐ ์ฒ˜๋ฆฌ, ์žฌ์‹œ๋„ ๊ฐ€๋Šฅ
  • ๋‚˜์ค‘์— Subscriber ์ถ”๊ฐ€ ๊ฐ€๋Šฅ (๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜ ๋ณ€๊ฒฝ ์—†์ด)
  • Cross-Region Delivery ์ง€์› (๋‹ค๋ฅธ ๋ฆฌ์ „์˜ SQS Queue์— ์ „๋‹ฌ ๊ฐ€๋Šฅ)

SNS โ†’ Kinesis Data Firehose โ†’ S3 ํŒจํ„ด#

[์„œ๋น„์Šค] โ†’ [SNS Topic] โ†’ [Kinesis Data Firehose] โ†’ [S3 / Redshift / OpenSearch]

SNS๊ฐ€ ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋Œ€์ƒ(S3 ๋“ฑ)์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ Firehose๋ฅผ ์ค‘๊ฐ„ ๋‹จ๊ณ„๋กœ ํ™œ์šฉ.


SNS FIFO Topic#

  • SQS FIFO์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ:
    • Message Group ID ๊ธฐ๋ฐ˜ ์ˆœ์„œ ๋ณด์žฅ
    • Deduplication ID ๋˜๋Š” Content-Based Deduplication์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ
  • Subscriber: SQS Standard ๋˜๋Š” SQS FIFO Queue
  • ์ œํ•œ๋œ Throughput

SNS FIFO + SQS FIFO = Fan-Out + Ordering + Deduplication ๋™์‹œ ๋‹ฌ์„ฑ


Amazon Kinesis#

Kinesis ์„œ๋น„์Šค ๊ตฌ์„ฑ#

์„œ๋น„์Šค์—ญํ• 
Kinesis Data Streams์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ €์žฅ
Amazon Data Firehose์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ S3/Redshift/OpenSearch ๋“ฑ์œผ๋กœ ์ „๋‹ฌ
Kinesis Data AnalyticsSQL๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์‹ค์‹œ๊ฐ„ ๋ถ„์„

Kinesis Data Streams#

๋ฐ์ดํ„ฐ ํ๋ฆ„:

[Producers: App, IoT, Click Stream] โ†’ [Kinesis Data Streams] โ†’ [Consumers: Lambda, ECS, App]
ํ•ญ๋ชฉ๋‚ด์šฉ
๋ฐ์ดํ„ฐ ๋ณด์กด๊ธฐ๋ณธ 24์‹œ๊ฐ„, ์ตœ๋Œ€ 365์ผ
Replayโœ… ๋ฐ์ดํ„ฐ ์žฌ์ฒ˜๋ฆฌ(Replay) ๊ฐ€๋Šฅ
์‚ญ์ œโŒ ๋งŒ๋ฃŒ ์ „ ์‚ญ์ œ ๋ถˆ๊ฐ€ (Immutable)
๋ฉ”์‹œ์ง€ ํฌ๊ธฐ์ตœ๋Œ€ 10 MiB (์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ๊ทœ๋ชจ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ)
์ˆœ์„œ ๋ณด์žฅ๋™์ผ Partition ID ๋‚ด์—์„œ ์ˆœ์„œ ๋ณด์žฅ
์•”ํ˜ธํ™”At-rest: KMS / In-flight: HTTPS

Kinesis Data Streams - Capacity Modes#

๋ชจ๋“œProvisionedOn-Demand
์šฉ๋Ÿ‰ ์„ค์ •Shard ์ˆ˜ ์ง์ ‘ ์ง€์ •์ž๋™
์ž…๋ ฅ ์ฒ˜๋ฆฌ๋Ÿ‰Shard๋‹น 1 MB/s (or 1,000 records/s)๊ธฐ๋ณธ 4 MB/s (or 4,000 records/s)
์ถœ๋ ฅ ์ฒ˜๋ฆฌ๋Ÿ‰Shard๋‹น 2 MB/s์ž๋™
์Šค์ผ€์ผ๋ง์ˆ˜๋™์ตœ๊ทผ 30์ผ ํ”ผํฌ ๊ธฐ๋ฐ˜ ์ž๋™ ํ™•์žฅ
๊ณผ๊ธˆShard ์‹œ๊ฐ„๋‹น์‹œ๊ฐ„๋‹น + ๋ฐ์ดํ„ฐ GB๋‹น

Amazon Data Firehose (๊ตฌ: Kinesis Data Firehose)#

  • ์™„์ „ ๊ด€๋ฆฌํ˜•, Serverless, ์ž๋™ ์Šค์ผ€์ผ๋ง
  • Near Real-Time ์ „๋‹ฌ (๋ฒ„ํผ๋ง์œผ๋กœ ์ธํ•œ ์•ฝ๊ฐ„์˜ ์ง€์—ฐ)
  • ์‚ฌ์šฉํ•œ ๋งŒํผ ๊ณผ๊ธˆ (Pay for what you use)

์ง€์› ๋Œ€์ƒ (Destinations):

AWS: Amazon S3, Amazon Redshift, Amazon OpenSearch Service
3rd Party: Splunk, MongoDB, Datadog, NewRelic
Custom: HTTP Endpoint

๋ฐ์ดํ„ฐ ๋ณ€ํ™˜:

  • Lambda๋กœ Custom ๋ณ€ํ™˜ (์˜ˆ: CSV โ†’ JSON)
  • Parquet/ORC ๋ณ€ํ™˜, gzip/snappy ์••์ถ•

Kinesis Data Streams vs. Amazon Data Firehose#

ํ•ญ๋ชฉKinesis Data StreamsAmazon Data Firehose
๋ชฉ์ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘/์ €์žฅ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ/๋กœ๋“œ
์‹ค์‹œ๊ฐ„์„ฑReal-timeNear Real-time (๋ฒ„ํผ๋ง)
๊ด€๋ฆฌProducer/Consumer ์ฝ”๋“œ ์ง์ ‘ ์ž‘์„ฑ์™„์ „ ๊ด€๋ฆฌํ˜•
์Šค์ผ€์ผ๋งProvisioned ๋˜๋Š” On-Demand์ž๋™ ์Šค์ผ€์ผ๋ง
๋ฐ์ดํ„ฐ ์ €์žฅโœ… ์ตœ๋Œ€ 365์ผโŒ ์ €์žฅ ์—†์Œ
Replayโœ… ๊ฐ€๋ŠฅโŒ ๋ถˆ๊ฐ€

SQS vs. SNS vs. Kinesis โ€” ์ตœ์ข… ๋น„๊ต#

ํ•ญ๋ชฉSQSSNSKinesis
๋ฐฉ์‹Pull (Consumer๊ฐ€ ๊ฐ€์ ธ๊ฐ)Push (Subscriber์—๊ฒŒ ์ „๋‹ฌ)Pull / Enhanced Fan-Out (Push)
๋ฐ์ดํ„ฐ ์ง€์†์„ฑโœ… (์†Œ๋น„ ํ›„ ์‚ญ์ œ)โŒ (๋ฏธ์ „๋‹ฌ ์‹œ ์†Œ๋ฉธ)โœ… (์ตœ๋Œ€ 365์ผ)
ReplayโŒโŒโœ…
Consumer/Subscriber ์ˆ˜Worker ์ˆ˜ ์ œํ•œ ์—†์Œ12,500,000 SubscribersShard๋ณ„ ๋ถ„๋ฐฐ
์ˆœ์„œ ๋ณด์žฅFIFO Queue๋งŒSNS FIFO Topic๋งŒPartition ID๋ณ„
์ฒ˜๋ฆฌ๋Ÿ‰ ์„ค์ •๋ถˆํ•„์š” (์ž๋™)๋ถˆํ•„์š” (์ž๋™)Shard ์ง์ ‘ ๊ด€๋ฆฌ (Provisioned) ๋˜๋Š” On-Demand
Use Case์ž‘์—… ํ, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์ด๋ฒคํŠธ ์•Œ๋ฆผ, Fan-Out์‹ค์‹œ๊ฐ„ ๋Œ€์šฉ๋Ÿ‰ ์ŠคํŠธ๋ฆฌ๋ฐ, ๋ถ„์„

Amazon MQ#

์™œ Amazon MQ์ธ๊ฐ€?#

  • SQS/SNS๋Š” AWS ๋…์ (Cloud-Native) ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ
  • ๊ธฐ์กด ์˜จํ”„๋ ˆ๋ฏธ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์˜คํ”ˆ ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ:
    • MQTT, AMQP, STOMP, OpenWire, WSS ๋“ฑ
  • ํด๋ผ์šฐ๋“œ ์ด์ „ ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์žฌ์„ค๊ณ„ ์—†์ด ๊ธฐ์กด ํ”„๋กœํ† ์ฝœ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Amazon MQ ํŠน์„ฑ#

ํ•ญ๋ชฉ๋‚ด์šฉ
์ง€์› ๋ธŒ๋กœ์ปคRabbitMQ, ActiveMQ
์Šค์ผ€์ผSQS/SNS๋งŒํผ ํ™•์žฅ๋˜์ง€ ์•Š์Œ (์„œ๋ฒ„ ๊ธฐ๋ฐ˜)
๊ณ ๊ฐ€์šฉ์„ฑMulti-AZ with Failover
๊ธฐ๋ŠฅQueue ๊ธฐ๋Šฅ(~SQS) + Topic ๊ธฐ๋Šฅ(~SNS) ๋™์‹œ ์ง€์›

๐Ÿ“Œ ์„ ํƒ ๊ธฐ์ค€: ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ โ†’ SQS/SNS ์‚ฌ์šฉ. ๊ธฐ์กด ์˜จํ”„๋ ˆ๋ฏธ์Šค Message Broker ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ โ†’ Amazon MQ ์‚ฌ์šฉ.


๐Ÿ“Œ ์‹œํ—˜ ์ž์ฃผ ์ถœ์ œ ํฌ์ธํŠธ ์ด์ •๋ฆฌ#

ํฌ์ธํŠธ๋‚ด์šฉ
SQS ๋ฉ”์‹œ์ง€ ์ตœ๋Œ€ ํฌ๊ธฐ256 KB
SQS ๊ธฐ๋ณธ ๋ณด์กด ๊ธฐ๊ฐ„4์ผ, ์ตœ๋Œ€ 14์ผ
SQS ํ•œ ๋ฒˆ์— ์ˆ˜์‹  ์ตœ๋Œ€ ๋ฉ”์‹œ์ง€ ์ˆ˜10๊ฐœ
Visibility Timeout ๊ธฐ๋ณธ๊ฐ’30์ดˆ
Visibility Timeout ์—ฐ์žฅ ๋ฐฉ๋ฒ•ChangeMessageVisibility API
Long Polling ๋Œ€๊ธฐ ์‹œ๊ฐ„1~20์ดˆ (20์ดˆ ๊ถŒ์žฅ)
FIFO Throughput๋ฐฐ์น˜ ์—†์Œ: 300 msg/s, ๋ฐฐ์น˜: 3,000 msg/s
FIFO ์ค‘๋ณต ์ œ๊ฑฐDeduplication ID
FIFO ์ˆœ์„œ ๊ทธ๋ฃนMessage Group ID (ํ•„์ˆ˜)
SNS ์ตœ๋Œ€ Subscriber ์ˆ˜12,500,000๊ฐœ/ํ† ํ”ฝ
SNS ๋ฐ์ดํ„ฐ ์ง€์†์„ฑโŒ ๋ฏธ์ „๋‹ฌ ์‹œ ์†Œ๋ฉธ
SNS Filter Policy ์—†์œผ๋ฉด๋ชจ๋“  ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ 
Fan-Out ํŒจํ„ดSNS โ†’ ์—ฌ๋Ÿฌ SQS
S3 Event โ†’ ์—ฌ๋Ÿฌ ๋Œ€์ƒSNS Fan-Out ์‚ฌ์šฉ
Kinesis ๋ฐ์ดํ„ฐ ๋ณด์กด๊ธฐ๋ณธ 24h, ์ตœ๋Œ€ 365์ผ
Kinesis ๋ฉ”์‹œ์ง€ ์‚ญ์ œ๋ถˆ๊ฐ€ (๋งŒ๋ฃŒ ์‹œ๊นŒ์ง€ ์œ ์ง€)
Kinesis ์ˆœ์„œ ๋ณด์žฅ ๋‹จ์œ„Partition ID
Provisioned Mode ์ž…๋ ฅShard๋‹น 1 MB/s
Provisioned Mode ์ถœ๋ ฅShard๋‹น 2 MB/s
Kinesis Replayโœ… ๊ฐ€๋Šฅ (SQS/SNS๋Š” ๋ถˆ๊ฐ€)
Data Firehose ์‹ค์‹œ๊ฐ„์„ฑNear Real-time (๋ฒ„ํผ๋ง)
Data Firehose ReplayโŒ ๋ถˆ๊ฐ€
Amazon MQ ์ง€์› ๋ธŒ๋กœ์ปคRabbitMQ, ActiveMQ
Amazon MQ ์„ ํƒ ๊ธฐ์ค€๊ธฐ์กด ์˜คํ”ˆ ํ”„๋กœํ† ์ฝœ(MQTT, AMQP ๋“ฑ) ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ
SQS ASG ํŠธ๋ฆฌ๊ฑฐ ์ง€ํ‘œApproximateNumberOfMessages

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ#