Skip to main content

Command Palette

Search for a command to run...

sqs, sns

1. SQS (Simple Queue Service) — Простой сервис очередей

SQS — это полностью управляемый сервис для организации очередей сообщений в AWS. Он предназначен для передачи сообщений между различными приложениями или микросервисами в асинхронной среде.


📌 Основные понятия в SQS

Очередь (Queue):

  • Очередь — это временное хранилище сообщений.

  • Сообщения остаются в очереди до тех пор, пока их не заберет потребитель (consumer).

  • SQS позволяет хранить сообщения до 14 дней (по умолчанию — 4 дня).

Сообщения (Messages):

  • Каждое сообщение может содержать данные до 256 KB.

  • Данные могут быть в формате JSON, XML или просто текстом.

  • Сообщения могут включать метаданные, например Order ID, Customer ID и т.д.

Производители (Producers):

  • Производители отправляют сообщения в очередь через API SendMessage.

  • Может быть несколько производителей, отправляющих данные в одну очередь.

Потребители (Consumers):

  • Потребители извлекают сообщения с помощью API ReceiveMessage.

  • После успешной обработки они вызывают API DeleteMessage, чтобы удалить сообщение из очереди.

Опрос (Polling):

  • Потребители опрашивают очередь, чтобы проверить наличие новых сообщений.

  • Доступно два типа опроса:

    • Short Polling — немедленно возвращает сообщение, даже если оно отсутствует (быстрое, но менее эффективное).

    • Long Polling — ждет до 20 секунд, чтобы получить сообщение (рекомендуется для экономии затрат).


🔹 SQS Standard Queue (Стандартная очередь)

  • Позволяет обрабатывать неограниченное количество сообщений в секунду.

  • Может доставлять дубликаты сообщений из-за механизма "доставка минимум один раз" (at least once delivery).

  • Порядок доставки не гарантируется (по умолчанию).

Идеально подходит для:

  • Фоновой обработки задач.

  • Систем обработки заказов.

  • Переноса задач между сервисами.


🔹 SQS FIFO Queue (Очередь "первым пришел — первым обслужен")

  • FIFO (First-In-First-Out) очередь гарантирует точный порядок доставки сообщений.

  • Исключает дублирование.

  • Поддерживает до 300 сообщений в секунду (без пакетной обработки).

Идеально подходит для:

  • Финансовых транзакций.

  • Систем бронирования.

  • Сервисов, где важен строгий порядок событий.


⚙️ Пример сценария с SQS

Сценарий: У вас есть интернет-магазин. Когда клиент делает заказ, информация должна передаваться в систему аналитики.

Шаги работы с SQS:
1️⃣ Order Service (сервис заказов) вызывает API SendMessage и отправляет сообщение с деталями заказа в SQS-очередь.
2️⃣ Потребитель (например, Lambda-функция или EC2-инстанс) опрашивает очередь через API ReceiveMessage.
3️⃣ Получив сообщение, потребитель обрабатывает данные (например, добавляет их в базу данных RDS).
4️⃣ После успешной обработки вызывается API DeleteMessage, чтобы удалить сообщение из очереди.


2. SNS (Simple Notification Service) — Простой сервис уведомлений

SNS — это сервис для организации широковещательных уведомлений (broadcast). Он реализует модель "publisher/subscriber" (публикация/подписка).


📌 Основные понятия в SNS

Тема (Topic):

  • Главный элемент в SNS, который группирует подписчиков (subscribers).

  • Тема служит "посредником" между источником данных и конечными получателями.

Сообщения (Messages):

  • Данные, которые публикуются в тему (JSON, XML, текст и т.д.).

  • Размер сообщения может достигать 256 KB.

Подписчики (Subscribers):

  • Получатели уведомлений из темы SNS.

  • Поддерживаются разные типы подписчиков:

    • SQS Queue (для хранения данных).

    • Email (уведомления на почту).

    • HTTP/S Endpoint (для отправки сообщений на URL).

    • AWS Lambda (для запуска кода по событию).


🔹 Пример сценария с SNS

Сценарий: Ваш интернет-магазин отправляет уведомления о новых заказах в разные сервисы.

Шаги работы с SNS:
1️⃣ Order Service публикует сообщение в Orders Topic через API Publish.
2️⃣ Тема SNS рассылает копию этого сообщения всем подписчикам:

  • Сервис учета (через очередь SQS).

  • Сервис аналитики (через Lambda).

  • Панель управления заказами (через HTTP/S).

✅ SNS автоматически масштабируется и поддерживает миллионы подписчиков.


3. EventBridge — Сервис маршрутизации событий

EventBridge — это современный сервис для обработки событий, который предлагает гибкую маршрутизацию данных.


📌 Основные понятия в EventBridge

Шина событий (Event Bus):

  • Аналог темы в SNS, но с расширенными возможностями маршрутизации.

События (Events):

  • Автоматически генерируемые события от AWS-сервисов или сторонних SaaS-приложений (например, Shopify, Datadog, PagerDuty и т.д.).

Правила (Rules):

  • Определяют, какие события отправлять и в какие цели.

  • Можно настроить фильтрацию данных по условиям.

Цели (Targets):

  • Конечные точки для обработки событий (Lambda, SQS, SNS и т.д.).

🔹 Пример сценария с EventBridge

Сценарий: Вы хотите отслеживать события в инфраструктуре AWS. Например, когда запускается новый экземпляр EC2, вам нужно отправить уведомление.

Шаги работы с EventBridge:
1️⃣ Создайте правило (Rule) для улавливания событий из сервиса EC2.
2️⃣ Настройте цель (Target) в виде SNS, чтобы уведомить администраторов.
3️⃣ При запуске нового EC2-инстанса EventBridge автоматически отправит уведомление через SNS.

✅ EventBridge поддерживает сложные сценарии фильтрации и интеграции с внешними сервисами.


4. Когда использовать что?

СервисКогда использовать
SQSДля надежной один-к-одному передачи сообщений между сервисами с возможностью хранения сообщений в очереди.
SNSДля один-ко-многим широковещательных уведомлений, где требуется отправить сообщение множеству получателей одновременно.
EventBridgeДля сложной маршрутизации событий и интеграции с внешними SaaS-сервисами.

🧠 Совет по выбору сервиса:

  • Используйте SQS, если вам нужно надежное хранение сообщений и их обработка по мере готовности.

  • Используйте SNS, если вам нужно немедленно уведомить множество сервисов о событии.

  • Используйте EventBridge, если вы работаете с множеством источников данных и сложной логикой фильтрации.

That's a great question! Let's simplify it by comparing SQS, SNS, and EventBridge to real-life scenarios. Imagine you're running a restaurant — this will help you understand their purpose.


🏢 Imagine a Restaurant (Real-Life Example)

In this restaurant, we have:

  • Waiters — take orders from customers (Producers).

  • Chefs — prepare the orders (Consumers).

  • Kitchen Display System (KDS) — a screen where orders are displayed for the chefs to pick up.

Now let’s map these roles to AWS services:


🍔 SQS — "The Kitchen Display System (KDS)" (Queue System)

  • Producers: The waiters write down customer orders and place them on the KDS screen.

  • Queue (SQS): The KDS screen stores the orders.

  • Consumers: The chefs pick up the orders, prepare the food, and mark the order as "completed."

Key Feature:

  • If too many orders come in at once, the KDS acts as a "buffer" so chefs can work at their own pace.

  • Orders will wait in line until a chef is ready to prepare them.

💬 Example in AWS:
If your website gets many orders at once, SQS helps your system handle the overload by queuing the tasks.


📢 SNS — "The Restaurant Announcer" (Broadcast System)

  • Producer: The waiter makes an announcement: "Order #15 is ready!"

  • Topic (SNS): This is like a microphone that broadcasts the announcement.

  • Subscribers: Different people react to the announcement:

    • The server picks up the food and delivers it to the customer.

    • The cashier updates the bill.

    • The cleaning staff prepares the next table.

Key Feature:

  • One announcement → Multiple listeners. Everyone who needs the information gets it at the same time.

💬 Example in AWS:
If your website needs to notify multiple services (e.g., send an email, update inventory, inform the analytics team), SNS broadcasts the message to all those services.


🚦 EventBridge — "The Restaurant Manager" (Event Router)

  • The Manager decides which staff should respond based on the situation.

  • For example:

    • If a VIP guest arrives → Inform the waiter.

    • If the fire alarm rings → Alert security and evacuate the building.

Key Feature:

  • EventBridge intelligently routes information to the right place.

💬 Example in AWS:
If your system detects unusual activity (like a user logging in from another country), EventBridge can automatically notify your security system or block the account.


🔎 Summary (Key Differences)

ServiceReal-Life ExampleBest Used For
SQSKitchen Display System (KDS)One-to-One task management with waiting line (Queue).
SNSRestaurant Announcer (Microphone)One-to-Many instant broadcast.
EventBridgeRestaurant Manager (Smart Routing)Complex logic with dynamic event routing.

🚀 Quick Guide

  • Use SQS if you want to manage a queue of tasks that need to be processed later.

  • Use SNS if you want to broadcast messages to multiple services at once.

  • Use EventBridge if you need complex event routing or integration with third-party services.

In AWS, SQS, SNS, and EventBridge are messaging services designed to help different parts of your application communicate with each other.

They don't communicate with humans directly — instead, they help AWS services or applications talk to each other efficiently.


🧩 What Problems Do These Services Solve?

In a modern cloud environment, applications are made up of many small services (called microservices) that must exchange data. These services need a way to:

Send information from one service to another.
Handle sudden spikes in traffic without crashing.
Ensure data is delivered even if a service is temporarily down.


🛠️ Which AWS Services Use SQS, SNS, and EventBridge?

Here’s how these messaging services are used in AWS:


1. SQS (Simple Queue Service) — Queue System

Purpose: Buffer and manage background tasks in a queue for later processing.

🔗 AWS Services That Commonly Use SQS:

  • EC2 (Elastic Compute Cloud): To handle background processing tasks.

  • Lambda: To automatically process queued tasks.

  • ECS/EKS (Containers): For asynchronous task management.

  • Auto Scaling Groups: To dynamically add instances when the queue length grows.

🚀 Example Use Case:

A user uploads a video to your website.
✅ An S3 Bucket stores the video.
✅ An SQS Queue holds the task: "Encode this video."
✅ A Lambda function picks up the task from the queue and encodes the video.


2. SNS (Simple Notification Service) — Broadcast System

Purpose: Instantly send notifications or messages to multiple services.

🔗 AWS Services That Commonly Use SNS:

  • CloudWatch: To send alerts when thresholds are crossed.

  • S3: To notify multiple services about new file uploads.

  • EC2 Auto Scaling: To send alerts when scaling occurs.

  • AWS Lambda: To trigger multiple functions at once.

🚀 Example Use Case:

An order is placed in your online store.
✅ An SNS Topic broadcasts the order to:

  • The Email Service for customer confirmation.

  • The Analytics Service for data tracking.

  • The Inventory System to update stock.


3. EventBridge — Event Routing System

Purpose: Route complex events and connect with third-party services.

🔗 AWS Services That Commonly Use EventBridge:

  • AWS CloudTrail: To track user activity in your account.

  • AWS Config: To enforce security policies.

  • AWS Step Functions: For complex workflows and automation.

  • 3rd Party Tools: Integrates with Shopify, Datadog, PagerDuty, etc.

🚀 Example Use Case:

A new EC2 instance is launched.
EventBridge detects the event.
✅ Sends a notification to Slack.
✅ Triggers a Lambda function to automatically tag the instance.


🔎 Quick Comparison of Their Functions

FeatureSQSSNSEventBridge
Type of CommunicationOne-to-One (Single producer to single consumer)One-to-Many (Broadcast messages to multiple subscribers)One-to-Many with advanced filtering
Message StorageStores messages until consumed.No message storage (immediate delivery).No message storage (immediate delivery).
Best Use CaseBackground tasks, order processing, decoupling services.Mass notifications, email/SMS alerts, multi-service updates.Complex event routing, third-party service integration.

🌍 Real-World Analogy (For Better Understanding)

  • SQS → Like a To-Do List — tasks are added and processed when someone is available.

  • SNS → Like a Group Chat — one person sends a message, and everyone gets it immediately.

  • EventBridge → Like a Smart Home System — automatically sends alerts and triggers actions based on specific conditions.


🔥 Which One Should I Use?

✅ Use SQS when you need to queue background tasks for reliable processing.
✅ Use SNS when you need to broadcast messages instantly to multiple services.
✅ Use EventBridge when you need advanced event filtering, automation, or integration with third-party services.


Would you like hands-on examples with AWS CLI commands or sample architecture diagrams? 😊