[AWS] Amazon SNS

2023. 7. 26. 09:53ใ†Devops/AWS

https://jeidiiy.notion.site/Amazon-SNS-2ece4a5e47114bf0a543cf427ebb5032?pvs=4 

 

Amazon SNS

Simple Notification Service

jeidiiy.notion.site

๐Ÿ’ก๋…ธ์…˜์— ์ตœ์ ํ™”๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์œ„ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Simple Notification Service

1. SNS๋ž€?

  • ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ „์†กํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ
  • Pub/Sub ํŒจํ„ด - ๋ฉ”์‹œ์ง€๋ฅผ ํ•˜๋‚˜์˜ ์ฃผ์ œ(Topic)์œผ๋กœ ๊ฒŒ์‹œ(Publish)ํ•˜๋ฉด ๊ตฌ๋…์ž(Subscriber)๋“ค์ด ์ด๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ๋ณด๊ด€
  • ์ด๋ฒคํŠธ ์ƒ์‚ฐ์ž๋Š” ํ•œ SNS ํ† ํ”ฝ์—๋งŒ ๋ฉ”์‹œ์ง€ ์†ก์‹ 
  • ์ด๋ฒคํŠธ ์ˆ˜์‹ ์ž(๊ตฌ๋…์ž)๋Š” ํ•ด๋‹น ์ฃผ์ œ๋กœ ์ „์†ก๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ๋‘ ์ˆ˜์‹  (์‹ ๊ทœ ๊ธฐ๋Šฅ: ๋ฉ”์‹œ์ง€ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ)
  • ์ฃผ์ œ๋ณ„ ์ตœ๋Œ€ ์•ฝ 12,500,000๋ช…์˜ ๊ตฌ๋…์ž ๊ฐ€๋Šฅ
  • ๊ณ„์ •๋‹น ์ตœ๋Œ€ ์•ฝ 10๋งŒ ๊ฐœ์˜ ํ† ํ”ฝ ๊ฐ€๋Šฅ
  • ๋งŽ์€ AWS ์„œ๋น„์Šค์™€ ํ†ตํ•ฉ ๊ฐ€๋Šฅ
    • AWS์—์„œ ์•Œ๋ฆผ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๊ฐ€ ์ง€์ •๋œ SNS ํ† ํ”ฝ์œผ๋กœ ์•Œ๋ฆผ ์ „์†ก

2. ์ง€์›๋˜๋Š” ๊ตฌ๋…์ž(subscriber) ์ข…๋ฅ˜

  • ์ด๋ฉ”์ผ
  • SMS ๋ฐ ๋ชจ๋ฐ”์ผ ์•Œ๋ฆผ
  • HTTP(S) ์—”๋“œํฌ์ธํŠธ๋กœ ์ง์ ‘ ๋ฐ์ดํ„ฐ ์ „์†ก
  • SQS์™€ ํ†ตํ•ฉํ•˜์—ฌ ํ๋กœ ๋ฉ”์‹œ์ง€ ์ „์†ก
  • ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ํ›„ ํ•จ์ˆ˜๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก Lambda์— ์ „์†ก
  • Firehose๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ S3๋‚˜ Redshift๋กœ ์ „์†ก

3. ํผ๋ธ”๋ฆฌ์‹ฑ ๋ฐฉ๋ฒ•

1. ํ† ํ”ฝ ํผ๋ธ”๋ฆฌ์‹œ (SDK ์‚ฌ์šฉ)

  1. ํ† ํ”ฝ ์ƒ์„ฑ
  2. ๊ตฌ๋… ์ƒ์„ฑ
  3. SNS ํ† ํ”ฝ ํผ๋ธ”๋ฆฌ์‹œ

2. ์ง์ ‘ ํผ๋ธ”๋ฆฌ์‹œ (for ๋ชจ๋ฐ”์ผ ์•ฑ SDK)

  1. ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ
  2. ํ”Œ๋žซํผ ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ
  3. ํ”Œ๋žซํผ ์—”๋“œํฌ์ธํŠธ์— ํผ๋ธ”๋ฆฌ์‹œ

์ˆ˜์‹  ๊ฐ€๋Šฅ ๋Œ€์ƒ

  • Google
  • GCM
  • Apple APNS
  • Amazon ADM ๊ตฌ๋…์ž ๋“ฑ

4. Security

  • ์•”ํ˜ธํ™”
    • HTTPS API๋ฅผ ์‚ฌ์šฉํ•œ ๋„คํŠธ์›Œํ‚น ๊ฐ„ ์•”ํ˜ธํ™”
    • KMS ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ๋ฏธ์‚ฌ์šฉ ์•”ํ˜ธํ™”
    • ํด๋ผ์ด์–ธํŠธ ์•”ํ˜ธํ™” - SQS์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜์ง€๋Š” ์•Š์Œ
  • ์ ‘๊ทผ ์ œ์–ด: IAM ์ •์ฑ…
  • SNS ์ ‘๊ทผ ์ •์ฑ…: S3 ๋ฒ„ํ‚ท ์ •์ฑ…๊ณผ ๋น„์Šทํ•œ ์ •์ฑ…
    • SNS ํ† ํ”ฝ์— ๊ต์ฐจ ๊ณ„์ • ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ–๊ฑฐ๋‚˜ S3 ์ด๋ฒคํŠธ์™€ ๊ฐ™์€ ์„œ๋น„์Šค๊ฐ€ SNS ํ† ํ”ฝ์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ์œ ์šฉ

5. SNS + SQS: Fan Out

  1. ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ SQS ํ๋กœ ๋ณด๋‚ด๊ณ  ์‹ถ์€๋ฐ ๋ชจ๋“  SQS ํ์— ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘๊ฐ„์— ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜, ์ „๋‹ฌ ์‹คํŒจ, SQS ํ์˜ ์ถ”๊ฐ€
  2. ์—ฌ๋Ÿฌ ํ์— ๋™์ผํ•œ ์ด๋ฒคํŠธ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋ ค๋Š” ๊ฒฝ์šฐ
  3. Kinesis Data Firehose๋ฅผ ํ†ตํ•ด SNS์—์„œ S3๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ ค๋Š” ๊ฒฝ์šฐ
๐Ÿ’ก ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ Fan Out ํŒจํ„ด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

1๋ฒˆ ์•„ํ‚คํ…์ฒ˜ - ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ SQS ํ๋กœ ๋ณด๋‚ด๋ ค๋Š” ๊ฒฝ์šฐ

  • SNS ํ† ํ”ฝ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•œ ํ›„ ์›ํ•˜๋Š” ์ˆ˜์˜ SQS ํ๊ฐ€ SNS ํ† ํ”ฝ์„ ๊ตฌ๋…
  • ์ด ํ๋“ค์€ ๊ตฌ๋…์ž๋กœ์„œ SNS๋กœ ๋“ค์–ด์˜ค๋Š” ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ 
  • ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ ๋ชจ๋ธ, ๋ฐ์ดํ„ฐ ์†์‹ค X
  • SQS๋กœ ์ž‘์—… ์žฌ์‹œ๋„ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ ์ง€์†์„ฑ, ์ง€์—ฐ ์ฒ˜๋ฆฌ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • ๋” ๋งŽ์€ SQS ํ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
  • ๋ฆฌ์ „ ๊ฐ„ ์ „๋‹ฌ ๊ฐ€๋Šฅ
    • ๋ณด์•ˆ์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ•œ ๋ฆฌ์ „์˜ SNS ํ† ํ”ฝ์—์„œ ๋‹ค๋ฅธ ๋ฆฌ์ „์˜ SQS ํ๋กœ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๊ฐ€๋Šฅ
๐Ÿ’ก SQS ์ ‘๊ทผ ์ •์ฑ…์—์„œ SNS ํ† ํ”ฝ์ด SQS ํ์— ์“ฐ๊ธฐ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ด์•ผ ํ•œ๋‹ค.

2๋ฒˆ ์•„ํ‚คํ…์ฒ˜ - ์—ฌ๋Ÿฌ ํ์— ๋™์ผํ•œ ์ด๋ฒคํŠธ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋ ค๋Š” ๊ฒฝ์šฐ

  • S3 ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ S3 ๋ฒ„ํ‚ท์— ์ด๋ฒคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด ์ด๋ฒคํŠธ๋ฅผ SNS ํ† ํ”ฝ์œผ๋กœ ์ „์†กํ•œ ํ›„ Fan Out ํŒจํ„ด์œผ๋กœ ๋งŽ์€ SQS ํ๊ฐ€ SNS ํ† ํ”ฝ์„ ๊ตฌ๋…ํ•˜๊ฒŒ ํ•จ
    • ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์ด๋ฉ”์ผ, Lambda ํ•จ์ˆ˜ ๋“ฑ๋„ ๊ตฌ๋… ๊ฐ€๋Šฅ

3๋ฒˆ ์•„ํ‚คํ…์ฒ˜ - Kinesis Data Firehose๋ฅผ ํ†ตํ•ด SNS์—์„œ S3๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ ค๋Š” ๊ฒฝ์šฐ

  • SNS๋ฅผ KDF์— ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ SNS ํ† ํ”ฝ์œผ๋กœ ์ „์†ก ๊ฐ€๋Šฅ
  • ๊ทธ ๋‹ค์Œ KDF์—์„œ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ํ•ด๋‹น KDF์—์„œ S3 ๋ฒ„ํ‚ท์œผ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ํŠน์ • KDF ๋ชฉ์ ์ง€๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ
๐Ÿ’ก ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ SNS ํ† ํ”ฝ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ณ„์† ์ด์–ด๊ฐ€๋„๋ก ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

6. FIFO ํ† ํ”ฝ

  • SNS์—๋Š” ํ† ํ”ฝ์˜ ๋ฉ”์‹œ์ง€ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๋Š” FIFO ๊ธฐ๋Šฅ ์กด์žฌ
  • ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน ID์— ๋”ฐ๋ผ ์ˆœ์„œ๋ฅผ ๋งค๊ธฐ๊ณ  ์ค‘๋ณต ์ œ๊ฑฐ ID๋ฅผ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ ๋‚ด์šฉ์„ ๋น„๊ตํ•˜์—ฌ ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ
  • SQS FIFO ํ๋ฅผ FIFO SNS ํ† ํ”ฝ์˜ ๊ตฌ๋…์ž๋กœ ์„ค์ •
  • ์ œํ•œ์ ์ธ ์ฒ˜๋ฆฌ๋Ÿ‰ - SQS ํ์™€ ๋™์ผ
    • SQS FIFO ํ๋งŒ SNS FIFO ํ† ํ”ฝ์„ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

7. ๋ฉ”์‹œ์ง€ ํ•„ํ„ฐ๋ง

  • SNS ํ† ํ”ฝ์„ ๊ตฌ๋…ํ•  ๋•Œ ์ „์†ก๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” JSON ์ •์ฑ…
  • ๊ธฐ๋ณธ ๋™์ž‘ - ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š์Œ

'Devops > AWS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[AWS] Kinesis Data Firehose  (0) 2023.07.26
[AWS] Kinesis Data Stream  (0) 2023.07.26
[AWS] Amazon SQS  (0) 2023.07.26
[AWS] AWS DataSync  (0) 2023.07.04
[AWS] AWS Transfer Family  (0) 2023.07.04