Monday, December 1, 2025

Solutions Architecture for Fan-Out Pattern Delivery to Multiple SQS | Deep Dive.

A deep dive into a Fan-Out architecture using AWS Lambda, SNS, and SQS.

 Scope:

  •        The concept of Fan-Out Pattern,
  •        AWS Services in Fan-Out Pattern,
  •        Architecture Diagram,
  •        Step-by-Step Implementation,
  •        Key Considerations,
  •        Advanced Patterns,
  •        Benefits of This Architecture.

1. The concept of Fan-Out Pattern

The Fan-Out pattern is used when a single event or single message needs to be processed by multiple independent consumers.

  •         Publisher: The component that generates the event (e.g., a Lambda function or an application).
  •         Broker: A messaging service (like SNS) that distributes the event to multiple subscribers.
  •         Subscribers: The endpoints that consume the event (e.g., multiple SQS queues, Lambda functions, or HTTP endpoints).

Use-case examples:

  •         Order placed Notify inventory system, shipping system, and analytics system.
  •         User signup Trigger welcome email, log analytics, and create CRM entry.

2. AWS Services in Fan-Out Pattern

SNS (Simple Notification Service)

  •         Acts as a pub/sub messaging broker.
  •         Supports multiple protocols: SQS, Lambda, HTTP/S, Email, SMS.
  •        Can fan out a single message to many subscribers simultaneously.

SQS (Simple Queue Service)

  •         Durable queue for decoupling services.
  •         Each subscriber can process messages independently and reliably.
  •         Supports FIFO queues for ordering or standard queues for high throughput.

Lambda (Optional)

  •         Can act as publisher or subscriber.
  •         Processes messages from SQS queues asynchronously

3. Architecture Diagram

Explanation:

  1.      Publisher pushes message to SNS topic.
  2.      SNS fans out the message to multiple SQS queues.
  3.      Each SQS queue triggers its own Lambda processor, decoupling workloads.

4. Step-by-Step Implementation

Step 1: Create an SNS Topic

# yaml
aws sns create-topic --name fanout-topic

Step 2: Create Multiple SQS Queues

# yaml
aws sqs create-queue --queue-name queue1
aws sqs create-queue --queue-name queue2
aws sqs create-queue --queue-name queue3

Step 3: Subscribe SQS Queues to SNS Topic

# yaml
aws sns subscribe --topic-arn <SNS_TOPIC_ARN> --protocol sqs --notification-endpoint <SQS_QUEUE_ARN>

Step 4: (Optional) Lambda Triggers

  •         Each SQS queue can trigger a Lambda function to process messages asynchronously.

Lambda Example (Python):

# python
import json
def lambda_handler(event, context):
    for record in event['Records']:
        body = json.loads(record['body'])
        print("Processing:", body)

5. Key Considerations

Message Delivery

  •         SNS delivers messages at least once.
  •         SQS ensures durable storage.

Decoupling

  •         Each SQS queue processes messages independently, preventing bottlenecks.
  •         Failures in one consumer do not affect others.

Dead Letter Queue (DLQ)

  •         For failed messages in SQS or Lambda, configure a DLQ to capture them for later inspection.

Scaling

  •         SNS scales automatically.
  •         SQS queues can scale independently.
  •         Lambda concurrency can be tuned per queue.

Ordering

  •         Standard SQS queues: at least once, no ordering guarantee.
  •         FIFO SQS queues: exactly once, preserves order.
  •         SNS + FIFO SQS = strict ordering support.

6. Advanced Patterns

Message Filtering

  •         SNS supports subscription filters.
  •         Allows selective delivery to queues based on message attributes:

# json
{
  "eventType": ["order_placed", "order_shipped"]
}

Cross-Account Fan-Out

  •         SNS can fan out messages to SQS queues in different AWS accounts, enabling multi-tenant architectures.

Monitoring

  •         Use CloudWatch metrics for:
    •    SNS: NumberOfMessagesPublished
    •    SQS: ApproximateNumberOfMessagesVisible
    •    Lambda: Invocations, Errors, Throttles

7. Benefits of This Architecture

  •         Loose coupling: Each service operates independently.
  •         Scalable: SNS and SQS scale horizontally.
  •         Reliable: Durable queues + DLQs handle failures gracefully.
  •         Flexible: Easy to add new subscribers without affecting others.

No comments:

Post a Comment

Amazon EventBridge | Overview.

Amazon EventBridge - Overview. Scope: Intro, Core Concepts, Key Benefits, Link to official documentation, Insights. Intro: Amazon EventBridg...