Thursday, July 24, 2025

Simple Queue Serivice(SQS) Vs Simple Notification Service Vs Kinesis data Streams/Firehose.

 

Here's twtech  comparison of Amazon SQS, SNS, and Kinesis, highlighting their key differences and best use cases:

 Overview

Feature

SQS (Simple Queue Service)

SNS (Simple Notification Service)

Kinesis

Type

Message Queue (Pull)

Pub/Sub Notification (Push)

Data Streaming Platform

Pattern

Point-to-Point

Publish-Subscribe

Real-time data streaming

Message Flow

Producer → Queue → Consumer.

Publisher → Topic → Subscribers.

Producer → Stream → Consumer.

 Use Case Scenarios

Use Case

Recommended Service

Decoupling microservices or systems

SQS

Broadcasting messages to multiple systems (e.g., SMS, Email, Lambda)

SNS

Real-time analytics or processing high-throughput data streams (e.g., logs, IoT)

Kinesis

 Detailed Comparison

Feature

SQS

SNS

Kinesis

Delivery Type

Pull-based

Push-based

Pull or Enhanced Fan-out

Delivery Guarantee

At-least-once (FIFO supports exactly-once)

At-least-once

At-least-once (manual deduping needed)

Ordering

FIFO queues preserve order

No ordering guarantee

Order per shard

Durability

4-day retention by default (14-day max)

Short-lived (no storage)

24 hrs to 7 days retention

Latency

Low

Very low

Low (milliseconds)

Throughput

High (scales with batch, FIFO has limits)

Very high

Extremely high (designed for large-scale ingestion)

Fan-out

No (1-to-1 delivery)

Yes (1-to-many)

Yes (with enhanced fan-out)

Retry Mechanism

Yes (DLQs supported)

Yes (retry policies)

Yes (checkpointing via consumer apps)

Cost Model

Per request & payload size

Per request & delivery attempt

Per shard-hour + PUT payload units

 Best Fit Summary

Use Case

Best Option

Decoupled task queues (e.g., background jobs, retries)

SQS

Notifications to multiple systems (e.g., SMS + Email + Lambda)

SNS

Real-time log processing, analytics, or ETL pipelines

Kinesis

 Combine Them

These services are often used together:

  • SNS → SQS: Broadcast messages to multiple SQS queues (fan-out pattern).
  • Kinesis + Lambda + SQS: Real-time processing with fallback queues for failed events.

·        A decision tree and architecture diagram for choosing between Amazon SQS, SNS, and Kinesis

twtech Insights:

A decision tree and architecture diagram for choosing between Amazon SQS, SNS, and Kinesis.

Here's a decision tree and an architecture diagram that helps twtech to choose between Amazon SQS, SNS, and Kinesis based on its use case.

 Decision Tree: Choosing Between SQS, SNS, and Kinesis

# Plaintext
                          ┌─────────────────────────────┐
                        │ Does twtech need real-time data │
                          │ streaming with analytics?   │
                          └──────────────┬──────────────┘
                                         │Yes
                                         ▼
                                  ┌──────────────┐
                                  │ Use Kinesis  │
                                  └──────────────┘
                                         ▲
                                         │No
                          ┌──────────────┴──────────────┐
                       │ Does twtech want to deliver the  │
                          │ same message to multiple    │
                          │ consumers (fan-out)?        │
                          └──────────────┬──────────────┘
                                         │Yes
                                         ▼
                                 ┌───────────────┐
                                 │ Use SNS       │
                                 │ (fan-out)     │
                                 └───────────────┘
                                         ▲
                                         │No
                          ┌──────────────┴──────────────┐
                       │ Does twtech need message queues  │
                          │ with decoupling, retries,   │
                          │ and delayed processing?     │
                          └──────────────┬──────────────┘
                                         │Yes
                                         ▼
                                 ┌───────────────┐
                                 │ Use SQS       │
                                 └───────────────┘
                                         ▲
                                         │No
                               ┌─────────┴─────────┐
                               │ Consider SNS or   │
                               │ another pattern   │
                               └───────────────────┘

 

 Architecture Diagram: Common Usage Scenarios

1. SNS Fan-Out to SQS Queues

# Markdown
           ┌─────────────┐
           │  Publisher  │
           └─────┬───────┘
                 │
           ┌─────▼───────┐
           │    SNS      │
           │   Topic     │
           └────┬─┬──────┘
                │ │
      ┌─────────▼ ▼─────────┐
      │                   │
┌─────▼─────┐       ┌─────▼─────┐
│  SQS Q1   │       │  SQS Q2   │
└───────────┘       └───────────┘

 Use case: One message sent to SNS is delivered to multiple consumers (via SQS or Lambda, etc.)

2. Kinesis Stream for Real-Time Processing

# Arduino
           ┌──────────────┐
           │  Data Source │
           │ (App/Device) │
           └──────┬───────┘
                  ▼
           ┌──────────────┐
           │   Kinesis    │
           │   Stream     │
           └────┬────┬────┘
                │    │
        ┌───────▼┐  ┌▼────────┐
        │Lambda/ │  │  Custom │
        │Consumer│  │Processor│
        └────────┘  └─────────┘

 Use case: High-throughput data ingestion with real-time transformation or analytics.

3. SQS for Decoupling Microservices

# markdown
         ┌─────────────┐
         │  Producer   │
         └─────┬───────┘
               ▼
         ┌─────────────┐
         │    SQS      │
         │   Queue     │
         └─────┬───────┘
               ▼
         ┌─────────────┐
         │  Consumer   │
         │  (Worker)   │
         └─────────────┘

Use case: Decouple microservices, retry failed jobs, buffer traffic.

No comments:

Post a Comment

Kubernetes Clusters | Upstream Vs Downstream.

  The terms "upstream" and "downstream" in the context of Kubernetes clusters often refer to the direction of code fl...