자격증/aws

AWS λ©”μ‹œμ§•

westcold 2025. 5. 12. 13:03

πŸ’¬ AWS λ©”μ‹œμ§• μ™„λ²½ 정리: SQS, SNS, Kinesis 차이와 ν™œμš©λ²•

ν˜„λŒ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 점점 λ³΅μž‘ν•΄μ§€κ³  있으며, 각 κΈ°λŠ₯이 λ³„λ„μ˜ μ„œλΉ„μŠ€λ‘œ λ‚˜λ‰˜μ–΄ λ°°ν¬λ˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. 이런 ν™˜κ²½μ—μ„œ μ€‘μš”ν•œ 건, μ„œλΉ„μŠ€ κ°„μ˜ μ•ˆμ •μ μΈ 톡신이죠.
AWSμ—μ„œλŠ” 이λ₯Ό μœ„ν•΄ SQS, SNS, KinesisλΌλŠ” μ„Έ κ°€μ§€ κ°•λ ₯ν•œ λ©”μ‹œμ§• μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

이 κΈ€μ—μ„œλŠ” μ„Έ κ°€μ§€ μ„œλΉ„μŠ€λ₯Ό ν•˜λ‚˜μ”© λœ―μ–΄λ³΄λ©°, μ–Έμ œ, μ™œ, μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.


πŸ”„ λ¨Όμ €, μ™œ λ©”μ‹œμ§• μ„œλΉ„μŠ€κ°€ ν•„μš”ν• κΉŒμš”?

πŸ“ μ„œλΉ„μŠ€ κ°„ 톡신 방식

  • 동기(Synchronous): ν•œμͺ½μ΄ μš”μ²­μ„ 보내고, 응닡을 κΈ°λ‹€λ¦¬λŠ” ꡬ쑰
    → 예: μ›Ή μ„œλ²„κ°€ DB에 직접 μš”μ²­ν•˜κ³  응닡받기
  • 비동기(Asynchronous): μš”μ²­μ„ 큐(queue)에 λ„£κ³ , λ‚˜μ€‘μ— μ²˜λ¦¬λ˜λŠ” ꡬ쑰
    → 예: μ‚¬μš©μžκ°€ μ£Όλ¬Έ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄, μ£Όλ¬Έ λ‚΄μš©μ€ 큐에 μŒ“μ΄κ³  λ°±μ—”λ“œκ°€ 천천히 처리

πŸ“ μ™œ 비동기 λ©”μ‹œμ§•μ΄ ν•„μš”ν• κΉŒ?

  • νŠΈλž˜ν”½μ΄ κ°‘μžκΈ° ν­μ¦ν•˜λ©΄ 동기 κ΅¬μ‘°λŠ” 병λͺ©μ΄ 생김
  • 예: 보톡 10개 μ˜μƒλ§Œ μ²˜λ¦¬ν•˜λ˜ μ„œλΉ„μŠ€κ°€ μ–΄λŠ λ‚  1000개λ₯Ό μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€λ©΄?
  • 이럴 λ•ŒλŠ” SQS/SNS/Kinesisλ₯Ό 톡해 각 μ„œλΉ„μŠ€λ₯Ό λ…λ¦½μ μœΌλ‘œ ν™•μž₯ κ°€λŠ₯

πŸ“¨ Amazon SQS – 큐 기반 λ©”μ‹œμ§• μ„œλΉ„μŠ€

SQS(Simple Queue Service)λŠ” κ°€μž₯ 였래된 AWS λ©”μ‹œμ§• μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

βœ… 핡심 κΈ°λŠ₯

  • Producer → Queue → Consumer ꡬ쑰
  • λ©”μ‹œμ§€λŠ” μ΅œλŒ€ 14일간 보관
  • μ†ŒλΉ„μžκ°€ λ©”μ‹œμ§€λ₯Ό λ°›μ•„ 처리 ν›„ μ‚­μ œ(DeleteMessage API)
  • ν‘œμ€€(Standard) 큐: 쀑볡 ν—ˆμš©, μˆœμ„œ 보μž₯ μ—†μŒ
  • FIFO 큐: μˆœμ„œ 보μž₯, 쀑볡 제거 κΈ°λŠ₯ 제곡

βœ… μ‹€μ „ μ˜ˆμ‹œ

  • μ›Ή ν”„λ‘ νŠΈμ—μ„œ μ£Όλ¬Έ μš”μ²­ → SQS 큐 → λ°±μ—”λ“œμ—μ„œ 순차적으둜 처리
  • EC2 Auto Scaling κ·Έλ£Ήκ³Ό μ—°λ™ν•˜μ—¬ μ²˜λ¦¬λŸ‰ 증가에 따라 μ†ŒλΉ„μž 수 μžλ™ ν™•μž₯

πŸ” λ³΄μ•ˆ

  • HTTPS 기반 전솑 μ•”ν˜Έν™”, KMSλ₯Ό ν†΅ν•œ μ €μž₯ μ•”ν˜Έν™”
  • IAM 및 SQS Access Policy둜 μ ‘κ·Ό μ œμ–΄

⏳ λ©”μ‹œμ§€ κ°€μ‹œμ„± νƒ€μž„μ•„μ›ƒ

  • λ©”μ‹œμ§€λ₯Ό κ°€μ Έμ˜€λ©΄ 일정 μ‹œκ°„ λ™μ•ˆ λ‹€λ₯Έ μ†ŒλΉ„μžμ—κ²Œ μ•ˆ λ³΄μž„ (κΈ°λ³Έ 30초)
  • μ‹œκ°„ 내에 처리 μ•ˆ 되면 λ‹€μ‹œ λ³΄μ΄λ―€λ‘œ 쀑볡 처리 κ°€λŠ₯μ„± 쑴재

βŒ› Long Polling

  • λ©”μ‹œμ§€κ°€ 없을 λ•Œ, μ§€μ •ν•œ μ‹œκ°„(μ΅œλŒ€ 20초)만큼 κΈ°λ‹€λ Έλ‹€κ°€ 응닡
  • API 호좜 수 쀄이고 νš¨μœ¨μ„± 증가

πŸ“£ Amazon SNS – νΌλΈ”λ¦¬μ‹œ/μ„œλΈŒμŠ€ν¬λΌμ΄λΈŒ 방식

SNS(Simple Notification Service)λŠ” 이벀트 기반으둜 λ‹€μˆ˜μ—κ²Œ λ™μ‹œμ— λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€.

βœ… 핡심 κΈ°λŠ₯

  • ν•œ λ©”μ‹œμ§€λ₯Ό μ—¬λŸ¬ κ΅¬λ…μžμ—κ²Œ λ™μ‹œμ— 전솑
  • SQS, Lambda, Email, SMS, HTTP λ“± λ‹€μ–‘ν•œ νƒ€μž…μ˜ μˆ˜μ‹ μž μ—°κ²° κ°€λŠ₯
  • λ©”μ‹œμ§€ 필터링 κΈ°λŠ₯으둜 νŠΉμ • 쑰건에 λ§žλŠ” κ΅¬λ…μžλ§Œ μˆ˜μ‹  κ°€λŠ₯

βœ… μ‹€μ „ μ˜ˆμ‹œ

  • μ£Όλ¬Έ λ°œμƒ → SNS둜 이벀트 λ°œν–‰ → 배솑, 결제, 이메일 μ•Œλ¦Ό λ“± 각각 μˆ˜μ‹ 

πŸ” λ³΄μ•ˆ

  • HTTPS μ•”ν˜Έν™”, KMS μ €μž₯ μ•”ν˜Έν™”
  • IAM, SNS Access Policy둜 μ ‘κ·Ό μ œμ–΄

πŸ” SNS + SQS ꡬ쑰 (Fan-out)

  • ν•˜λ‚˜μ˜ SNS ν† ν”½μ—μ„œ μ—¬λŸ¬ SQS 큐둜 λ©”μ‹œμ§€λ₯Ό λΆ„μ‚°
  • μ„œλΉ„μŠ€ κ°„ μ™„μ „ν•œ 뢄리 κ°€λŠ₯ (λ””μ»€ν”Œλ§ ꡬ쑰)

🧠 SNS FIFO ν† ν”½

  • λ©”μ‹œμ§€ μˆœμ„œ 보μž₯ 및 쀑볡 제거 κΈ°λŠ₯
  • SQS FIFO 큐와 ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ μˆœμ„œ + μž¬μ‹œλ„ + λ‹€μˆ˜ μˆ˜μ‹ μž ꡬ쑰 μ™„μ„±

 

 

⚑ Amazon Kinesis – μ‹€μ‹œκ°„ 데이터 슀트리밍의 핡심

Amazon KinesisλŠ” μ‹€μ‹œκ°„ 데이터 μŠ€νŠΈλ¦¬λ°μ„ μœ„ν•œ μ„œλΉ„μŠ€λ‘œ, λŒ€κ·œλͺ¨μ˜ 데이터λ₯Ό λΉ λ₯΄κ²Œ μˆ˜μ§‘, 처리, 뢄석할 수 있게 λ„μ™€μ€λ‹ˆλ‹€. KinesisλŠ” μ‹€μ‹œκ°„ 뢄석이 ν•„μš”ν•œ μƒν™©μ—μ„œ κ°•λ ₯ν•œ λ„κ΅¬λ‘œ, 예λ₯Ό λ“€μ–΄ IoT μ„Όμ„œ 데이터, μ›Ή 클릭 슀트림, 둜그 뢄석 λ“±μ˜ 데이터 흐름을 μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

βœ… Kinesis의 μ£Όμš” μ„œλΉ„μŠ€ ꡬ성 μš”μ†Œ

  1. Kinesis Data Streams
    • 데이터 μŠ€νŠΈλ¦Όμ„ μƒμ„±ν•˜μ—¬ μ‹€μ‹œκ°„ 데이터λ₯Ό μˆ˜μ§‘ν•˜κ³  μ²˜λ¦¬ν•˜λŠ” κΈ°λ³Έ ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€.
    • 데이터λ₯Ό shard λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ μ €μž₯ν•˜κ³  μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      • 1 μƒ€λ“œλŠ” μ΄ˆλ‹Ή 1MB의 μž…λ ₯κ³Ό 2MB의 좜λ ₯을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • **ν”„λ‘œλ“€μ„œ(Producer)**λŠ” 데이터λ₯Ό 슀트림으둜 λ³΄λƒ…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ›Ήμ‚¬μ΄νŠΈμ—μ„œ λ°œμƒν•˜λŠ” 클릭 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μŠ€νŠΈλ¦Όμ— 기둝할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • **컨슈머(Consumer)**λŠ” μŠ€νŠΈλ¦Όμ—μ„œ 데이터λ₯Ό 읽고 μ²˜λ¦¬ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, Lambdaλ‚˜ EC2 μΈμŠ€ν„΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ λΆ„μ„ν•˜κ±°λ‚˜ μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • 재처리 κ°€λŠ₯ (Replay): λ°μ΄ν„°λŠ” μ΅œλŒ€ 365일 λ™μ•ˆ μ €μž₯되며, μ†ŒλΉ„μžλŠ” ν•„μš”μ‹œ κ³Όκ±° 데이터λ₯Ό μž¬μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. Kinesis Data Firehose
    • μ™„μ „ κ΄€λ¦¬ν˜• 슀트리밍 μ„œλΉ„μŠ€λ‘œ, μ‹€μ‹œκ°„ 데이터 μŠ€νŠΈλ¦Όμ„ S3, Redshift, OpenSearch λ“±μœΌλ‘œ μžλ™μœΌλ‘œ μ „μ†‘ν•©λ‹ˆλ‹€.
    • 버퍼링 κΈ°λŠ₯을 톡해 데이터λ₯Ό 일정 μ‹œκ°„ λ˜λŠ” 크기만큼 λͺ¨μ€ λ’€ 일괄 μ²˜λ¦¬ν•  수 μžˆμ–΄ μ§€μ—° μ‹œκ°„μ΄ μ€‘μš”ν•œ μƒν™©μ—μ„œ μœ μš©ν•©λ‹ˆλ‹€.
    • 데이터가 μ „μ†‘λ˜κΈ° 전에 AWS Lambdaλ₯Ό μ΄μš©ν•΄ 데이터 λ³€ν™˜λ„ κ°€λŠ₯ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, CSV νŒŒμΌμ„ JSON ν˜•μ‹μœΌλ‘œ λ³€ν™˜ ν›„ μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. Kinesis Data Analytics (Flink 기반)
    • μ‹€μ‹œκ°„μœΌλ‘œ 슀트리밍 데이터λ₯Ό SQL 기반으둜 뢄석할 수 μžˆλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.
    • 데이터λ₯Ό μˆ˜μ§‘ν•œ λ’€, μ‹€μ‹œκ°„μœΌλ‘œ λΆ„μ„ν•˜κ³  κ²°κ³Όλ₯Ό λ‹€λ₯Έ μ‹œμŠ€ν…œμœΌλ‘œ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • Apache Flinkλ₯Ό 기반으둜 ν•˜μ—¬ κ³ κΈ‰ μ‹€μ‹œκ°„ 뢄석을 κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€.

βœ… Kinesis의 νŠΉμ§•κ³Ό μž₯점

  1. μ‹€μ‹œκ°„ 처리
    • KinesisλŠ” 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μŠ€νŠΈλ¦¬λ°ν•˜μ—¬ μ¦‰μ‹œ 뢄석할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λŒ€κ·œλͺ¨ 데이터 ν™˜κ²½μ—μ„œ μ€‘μš”ν•œ μš”μ†Œμž…λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄ μ‹€μ‹œκ°„ κ΄‘κ³  클릭 뢄석, νŠΈλžœμž­μ…˜ 뢄석, IoT μ„Όμ„œ 데이터 λͺ¨λ‹ˆν„°λ§ λ“± λΉ λ₯Έ 데이터 μ²˜λ¦¬κ°€ ν•„μš”ν•œ λͺ¨λ“  λΆ„μ•Όμ—μ„œ ν™œμš© κ°€λŠ₯ν•©λ‹ˆλ‹€.
  2. μžλ™ ν™•μž₯
    • Provisioned modeμ—μ„œ shard 수λ₯Ό μˆ˜λ™μœΌλ‘œ μ„€μ •ν•˜κ±°λ‚˜, On-demand modeμ—μ„œλŠ” μžλ™μœΌλ‘œ ν™•μž₯λ˜μ–΄, μ‚¬μš©μžλŠ” 데이터 νŠΈλž˜ν”½μ— 맞게 μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • μ˜¨λ””λ§¨λ“œ λͺ¨λ“œλŠ” μžλ™μœΌλ‘œ ν™•μž₯λ˜λ―€λ‘œ κ΄€λ¦¬μžκ°€ 직접 μƒ€λ“œλ₯Ό μΆ”κ°€/μ œκ±°ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
  3. 내ꡬ성
    • Kinesis Data StreamsλŠ” 데이터λ₯Ό μ΅œλŒ€ 365일 λ™μ•ˆ μ €μž₯ν•  수 있고, 데이터 손싀 없이 **λ‹€μ‹œ 처리(replay)**ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • Kinesis Data FirehoseλŠ” 기본적으둜 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ „μ†‘ν•˜λ©° 배치 μ²˜λ¦¬λ„ μ§€μ›ν•˜μ—¬ 데이터 손싀 없이 μ•ˆμ •μ μΈ 전솑을 보μž₯ν•©λ‹ˆλ‹€.
  4. ν™•μž₯μ„±
    • KinesisλŠ” λŒ€λŸ‰μ˜ 데이터λ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ” ν™•μž₯ κ°€λŠ₯ν•œ μ•„ν‚€ν…μ²˜λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 데이터 흐름이 μ¦κ°€ν•˜λ©΄ μƒ€λ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ μ„±λŠ₯을 ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  5. λŒ€κ·œλͺ¨ 데이터 처리
    • Clickstream 데이터, 둜그 뢄석, IoT μ„Όμ„œ 데이터와 같이 λŒ€λŸ‰μ˜ μž‘μ€ 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

βœ… Kinesis 데이터 슀트리밍 ν™œμš© μ˜ˆμ‹œ

  1. μ›Ήμ‚¬μ΄νŠΈ 클릭 슀트림 뢄석
    • Kinesisλ₯Ό μ‚¬μš©ν•΄ μ›Ήμ‚¬μ΄νŠΈμ—μ„œ λ°œμƒν•˜λŠ” μ‚¬μš©μž 클릭 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μˆ˜μ§‘ν•˜κ³ , μ‹€μ‹œκ°„ 뢄석을 톡해 μ‚¬μš©μžμ˜ 행동을 μΆ”μ ν•˜κ±°λ‚˜, λ§žμΆ€ν˜• κ΄‘κ³ λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. IoT 데이터 μˆ˜μ§‘ 및 뢄석
    • 수천 개의 IoT μž₯μΉ˜μ—μ„œ λ°œμƒν•˜λŠ” 데이터λ₯Ό Kinesis둜 μ‹€μ‹œκ°„ μˆ˜μ§‘ν•˜μ—¬ μ„œλ²„λ‘œ μ „μ†‘ν•˜κ³ , 이λ₯Ό μ¦‰μ‹œ λΆ„μ„ν•˜μ—¬ μž₯λΉ„μ˜ 이상 μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ±°λ‚˜ κ²½κ³ λ₯Ό 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. 둜그 뢄석
    • μ„œλ²„μ—μ„œ λ°œμƒν•˜λŠ” 둜그 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ Kinesis둜 μŠ€νŠΈλ¦¬λ°ν•˜μ—¬, 둜그λ₯Ό μ¦‰μ‹œ λΆ„μ„ν•˜κ³ , μ—λŸ¬λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ 탐지할 수 μžˆμŠ΅λ‹ˆλ‹€.
  4. μ‹€μ‹œκ°„ 금육 데이터 처리
    • 주식 거래 λ°μ΄ν„°λ‚˜ 금육 거래 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μŠ€νŠΈλ¦¬λ°ν•˜μ—¬ 가격 λ³€ν™”λ‚˜ μ‹œμž₯ 변동성을 λΆ„μ„ν•˜κ³  μ‹€μ‹œκ°„ λŒ€μ‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ”„ Kinesis vs Firehose

 

κΈ°λŠ₯ Data Streams Data Firehose
처리 방식 직접 μž‘μ„± (μ‹€μ‹œκ°„) μ™„μ „κ΄€λ¦¬ν˜• (버퍼 ν›„ 전솑)
데이터 μ €μž₯ μ΅œλŒ€ 365일 μ €μž₯ κ°€λŠ₯ μ €μž₯ μ•ˆ 됨
재처리 κ°€λŠ₯ κ°€λŠ₯ λΆˆκ°€
λͺ©μ μ§€ S3, Redshift, OpenSearch λ“± S3, Redshift, 3rd-party λ“±
 

🧾 정리: SQS, SNS, Kinesis 차이 ν•œλˆˆμ— 보기


ν•­λͺ© SQS SNS Kinesis
ꡬ쑰 Queue (Pull) Pub/Sub (Push) Streaming (Push/Pull ν˜Όν•©)
μ €μž₯ μ΅œλŒ€ 14일 μ €μž₯ μ•ˆ 됨 μ΅œλŒ€ 365일 μ €μž₯
μˆœμ„œ FIFO νμ—μ„œλ§Œ 보μž₯ FIFO ν† ν”½μ—μ„œλ§Œ 보μž₯ νŒŒν‹°μ…˜ ν‚€ κΈ°μ€€ μˆœμ„œ 보μž₯
쀑볡 일뢀 ν—ˆμš© 보μž₯ μ•ˆ 됨 Deduplication κ°€λŠ₯
λŒ€μƒ 단일 μ†ŒλΉ„μž λ‹€μˆ˜ κ΅¬λ…μž 슀트리밍 뢄석 및 ETL
ν™•μž₯μ„± λ¬΄ν•œ μ†ŒλΉ„μž ν™•μž₯ μ΅œλŒ€ 1,250만 κ΅¬λ…μž μƒ€λ“œ 기반 ν™•μž₯ / μ˜¨λ””λ§¨λ“œ ν™•μž₯
 

✍ 마무리

  • SQSλŠ” μš”μ²­μ΄ λ§Žμ•„λ„ 순차적으둜 μ•ˆμ •μ μœΌλ‘œ μ²˜λ¦¬ν•˜κ³  싢을 λ•Œ
  • SNSλŠ” ν•˜λ‚˜μ˜ 이벀트둜 μ—¬λŸ¬ 곳에 μ•Œλ¦Όμ„ 보내야 ν•  λ•Œ
  • KinesisλŠ” λŒ€λŸ‰μ˜ μ‹€μ‹œκ°„ 데이터λ₯Ό λΉ λ₯΄κ²Œ μˆ˜μ§‘ν•˜κ³  뢄석할 λ•Œ