Облачные вычисления

Event-Driven Architecture

Amazon обрабатывает триллион SQS сообщений в день. Prime Day: SQS защищает order processing от пиков нагрузки. Kinesis обрабатывает clickstream Amazon.com в реальном времени для рекомендаций.

  • **Amazon Prime Day:** SQS между order service и inventory, payment, shipping сервисами. При пике нагрузки inventory service не успевает - сообщения копятся в SQS. Когда нагрузка спадает, сервис догоняет очередь. Без SQS: каскадные отказы.
  • **Netflix:** Kinesis Data Streams для playback events (каждое нажатие паузы, перемотка, качество). Три consumer независимо: real-time recommendations, billing system, analytics. Event replay для debugging и backfill.
  • **Stripe:** EventBridge для webhooks к merchant'ам. Каждый payment event -> EventBridge -> Lambda -> HTTP delivery с retry logic. 200ms SLA на доставку webhook при объёме 100M+ событий в день.

Sqs

Amazon SQS (Simple Queue Service) - управляемая очередь сообщений. Decoupling между producer и consumer: consumer падает - сообщения ждут в очереди (до 14 дней). Standard Queue: at-least-once delivery, возможен порядок нарушен. FIFO Queue: exactly-once, строгий порядок, 3000 messages/sec (300 msg/sec без batching). Amazon обрабатывает триллион+ SQS сообщений в день.

Dead Letter Queue (DLQ): сообщения которые не удалось обработать после N попыток -> DLQ для анализа. Visibility Timeout: на время обработки сообщение скрыто от других consumers (по умолчанию 30 сек). Long Polling (waitTimeSeconds=20) снижает пустые запросы и стоимость vs Short Polling.

Для чего используется Visibility Timeout в SQS?

Sns

Amazon SNS (Simple Notification Service) - pub/sub messaging. Publisher отправляет сообщение в Topic, SNS доставляет всем Subscribers: SQS queues, Lambda, HTTP endpoints, email, SMS, mobile push. Fan-out паттерн: одно событие -> несколько SQS очередей для параллельной обработки. Используется для нотификаций (AWS Health events), распределения событий между сервисами.

SNS FIFO Topic + SQS FIFO Queue: гарантированный порядок и exactly-once семантика для критичных финансовых событий. Message Filtering: subscriber получает только сообщения с определёнными атрибутами - уменьшает ненужную обработку и стоимость.

Зачем использовать SNS -> SQS (fan-out) вместо прямой отправки в несколько SQS очередей?

Eventbridge

Amazon EventBridge - serverless event bus с расширенной маршрутизацией. Отличается от SNS: правила фильтрации на основе любого поля JSON (не только атрибутов), Schema Registry для документирования событий, Event Archive для переигрывания событий, Pipes для соединения источников без Lambda. Поддерживает 200+ SaaS интеграций: Stripe, Zendesk, GitHub, Datadog.

EventBridge Scheduler (2022) - замена CloudWatch Events для cron-задач. Поддерживает rate (каждые N минут) и cron выражения. EventBridge Pipes: serverless соединение SQS -> Lambda -> Target без написания consumer кода. EventBridge Global Endpoints для cross-region failover.

Чем EventBridge отличается от SNS при маршрутизации событий?

Kinesis

Amazon Kinesis Data Streams - real-time потоковая обработка больших объёмов данных. В отличие от SQS: данные сохраняются 24ч-365 дней (re-read), несколько consumer могут читать один и тот же stream независимо, данные упорядочены внутри shard. Пропускная способность: 1 MB/s write, 2 MB/s read per shard. Amazon использует Kinesis для обработки clickstream данных на Amazon.com.

Kinesis vs SQS: Kinesis для high-throughput streaming (логи, метрики, clickstream, IoT), SQS для decoupling сервисов. Kinesis Data Firehose - managed delivery к S3, Redshift, OpenSearch без написания consumer. Amazon Managed Streaming for Apache Kafka (MSK) - альтернатива если нужна Kafka экосистема.

В чём главное преимущество Kinesis Data Streams перед SQS для clickstream аналитики?

Ключевые идеи

  • **SQS:** Decoupling через очередь. Standard (at-least-once, высокий throughput) vs FIFO (exactly-once, строгий порядок). Visibility Timeout = время на обработку. DLQ для неудачных сообщений. Long Polling снижает стоимость.
  • **SNS:** Pub/sub fan-out. Publisher -> Topic -> N subscribers (SQS, Lambda, HTTP). Message Filtering снижает ненужную обработку. SNS + SQS = надёжный fan-out паттерн.
  • **EventBridge vs Kinesis:** EventBridge - event routing с богатой фильтрацией JSON, 200+ SaaS интеграций, Archive. Kinesis - real-time streaming для высокого throughput с multi-consumer и retention для replay.

Связанные темы

Event-Driven Architecture интегрирована с вычислением и хранением:

  • AWS Lambda — SQS, SNS, Kinesis, EventBridge - основные Event Source для Lambda. Lambda масштабируется автоматически с очередью; Kinesis trigger батчит записи для эффективности
  • DynamoDB Streams — DynamoDB Streams + EventBridge Pipes = CDC (Change Data Capture) без Lambda. Изменения таблицы автоматически маршрутизируются в другие сервисы
  • Microservices архитектура — Event-Driven = loose coupling между микросервисами. Choreography (event-based) vs Orchestration (workflow-based через Step Functions) - ключевой выбор при проектировании

Вопросы для размышления

  • Когда использовать FIFO SQS vs Standard SQS для обработки платёжных транзакций?
  • Как реализовать idempotent consumer для SQS чтобы корректно обрабатывать at-least-once доставку?
  • При каком объёме данных Kinesis становится эффективнее чем SQS + Lambda для streaming аналитики?

Связанные уроки

  • net-55-message-queues
Event-Driven Architecture

0

1

Войти