← Все навыки

Event-driven архитектура

курс про то, как строить системы на событиях вместо синхронных request/response-вызовов: когда асинхронная модель снимает связность между сервисами, а когда становится оверинжинирингом. Разбираем брокеры, CQRS, Event Sourcing, Saga и надёжную доставку с идемпотентностью — так, как это спрашивают на собеседованиях в бигтех и как это эксплуатируется в проде. Уровень Middle+: не «что такое Kafka», а «как порядок, гарантии и согласованность держатся под нагрузкой и при сбоях».

Middle+ Индивидуально с ментором

Что разбираем

  • Событийная модель vs request/response — связность, временная развязка, фоновая обработка
  • Брокеры сообщений — Kafka (topics, partitions, consumer groups, offsets, rebalancing, retention) vs RabbitMQ (exchanges, routing, ack, DLQ)
  • Партиционирование и гарантия порядка внутри партиции
  • Параллелизм через consumer groups
  • CQRS — разделение команд и запросов, отдельные read/write модели, eventual consistency между ними
  • Event Sourcing — событие как источник правды, восстановление состояния через replay, проекции (read models), снапшоты
  • Saga — распределённые бизнес-транзакции, оркестрация vs хореография, компенсирующие транзакции и откат
  • Transactional Outbox / Inbox — атомарная запись «состояние + событие» в одной БД-транзакции, relay через CDC
  • Дедупликация и идемпотентность потребителя (idempotency key, dedup-таблица)
  • Гарантии доставки — at-least-once, at-most-once, «exactly-once» и почему на практике это idempotent-обработка поверх at-least-once
  • Эволюция схем событий — версионирование, обратная/прямая совместимость, Schema Registry, Avro/Protobuf
  • Отравленные сообщения, retry с backoff и dead letter queue
  • Порядок событий, дубликаты и out-of-order при масштабировании потребителей

Как проходит обучение

  • Занятия один на один с ментором под ваш темп и пробелы
  • Материалы курса открываются в личном кабинете, практику разбираете на встречах
  • Программа собирается под цель: подготовка к собеседованию или рабочая задача