Перейти к основному содержимому
DevScallix
← ПрограммыПланируется

Kafka и Event-Driven Architecture

Важные внутренности Kafka, семантика доставки и надёжный event-driven дизайн.

Эта программа планируется и ещё не включена в расписание. Дата, цена и группа не объявлены. Если вы оставите интерес, мы свяжемся, когда программа будет запланирована, или чтобы обсудить индивидуальный формат.

Цель

Программа нацелена не просто на использование Kafka, а на понимание её поведения, достаточное для построения надёжной event-driven системы. Порядок, семантика доставки, идемпотентное потребление, transactional outbox и эволюция схем изучаются на реалистичных сбоях. Эксплуатация и мониторинг рассматриваются как часть дизайна.

Для кого

  • Backend-разработчики, уже знакомые со Spring Boot и обменом сообщениями
  • Кандидаты на уровень senior, участвующие в проектировании событийных систем
  • Те, кто сталкивается с дубликатами, потерями и задержками в существующем использовании Kafka
  • Инженеры, которым нужно связывать микросервисы асинхронно

Для кого не подходит

  • Те, кто впервые встречает обмен сообщениями: сначала укрепите основы Spring Boot и сервисов
  • Те, кто хочет сделать администрирование кластера Kafka основной профессией
  • Те, кто собирается применять Kafka там, где хватило бы простой очереди: программа ставит под вопрос и этот выбор

Требования

  • Опыт написания сервисов на Spring Boot
  • Понимание транзакций и согласованности баз данных
  • Настройка локального окружения в Docker
  • Общие знания о микросервисах или асинхронном взаимодействии

Что вы сможете делать

Что вы сможете делать

  • Объяснить, как topic, partition и репликация влияют на порядок и пропускную способность
  • Сохранять порядок через выбор ключа
  • Предсказывать поведение consumer group, offset commit и rebalancing
  • Различать реальный смысл семантик at-most-once, at-least-once и exactly-once
  • Писать consumer, устойчивый к дубликатам (идемпотентный)
  • Обеспечивать согласованность базы и Kafka через transactional outbox
  • Обратно совместимо менять схему события с помощью Schema Registry
  • Настроить мониторинг и алертинг по consumer lag и другим метрикам

Ни одна образовательная программа не может гарантировать трудоустройство или повышение.

Учебный план

Учебный план

  1. 01

    Базовая модель Kafka

    Понимаем, что даёт модель на основе лога и чего она не даёт.

    • Topic, partition, segment и модель лога
    • Репликация, leader и ISR
    • Retention и log compaction
    • Batching producer, acks и задержка
    • Чем Kafka отличается от очереди

    Практическая лабораторная: Создать topic на локальном кластере и понаблюдать, как параметры partition и retention меняют поведение.

  2. 02

    Порядок и партиционирование

    Порядок сохраняется только внутри partition; превращаем этот факт в проектное решение.

    • Ключ сообщения и partitioner
    • Hot partition и перекос распределения
    • Выбор числа partition и последствия его увеличения позже
    • Как нарушается порядок (retry, несколько producer)
    • Выбор ключа на основе предметной области

    Практическая лабораторная: Выбрать ключ, сохраняющий порядок событий одного клиента, и воспроизвести случай нарушения порядка.

  3. 03

    Consumer group и rebalancing

    Как consumer делят partition между собой и к чему это может привести.

    • Consumer group и назначение partition
    • Стратегии offset commit
    • Виды rebalance и cooperative rebalancing
    • max.poll.interval и проблема медленного consumer
    • Consumer lag и предел параллелизма

    Практическая лабораторная: Замедлить consumer до шторма rebalance, найти причину в логах и метриках и исправить.

  4. 04

    Семантика доставки и идемпотентное потребление

    Дубликаты неизбежны; учимся писать consumer, устойчивые к ним.

    • At-most-once, at-least-once, exactly-once
    • Идемпотентный producer и транзакции Kafka
    • Идемпотентность на стороне consumer: уникальный ключ и дедупликация
    • Retry topic и dead letter topic
    • Обработка poison message

    Практическая лабораторная: Написать consumer, получающий одно сообщение дважды, и тестом доказать, что эффект не применяется повторно.

  5. 05

    Transactional outbox

    Устраняем несогласованность между записью в базу и публикацией события.

    • Проблема dual write
    • Таблица outbox и polling publisher
    • Подход на CDC (концепция Debezium)
    • Очистка outbox и порядок
    • Паттерн inbox

    Практическая лабораторная: Построить outbox в сервисе заказов и показать, что событие не теряется при падении сервиса и дубликаты обрабатываются.

  6. 06

    Моделирование событий и эволюция схем

    События — долгоживущие контракты; учимся менять их, не ломая потребителей.

    • Event, command и state transfer
    • Именование и состав событий
    • Avro/Protobuf и Schema Registry
    • Правила обратной и прямой совместимости
    • Версионирование и жизнь со старыми событиями

    Практическая лабораторная: Добавить и удалить поле в существующей схеме события и понаблюдать, какое изменение отклонит проверка совместимости.

  7. 07

    Choreography и orchestration

    Сравниваем два способа координировать многошаговый бизнес-процесс через события.

    • Choreography: преимущества и скрытая связность
    • Orchestration: центральный контроль и его цена
    • Видимость процесса и отладка
    • Компенсация и обработка timeout

    Практическая лабораторная: Построить один и тот же бизнес-процесс двумя подходами и сравнить простоту трассировки и изменения.

  8. 08

    Эксплуатация и мониторинг

    Определяем, что нужно отслеживать, чтобы надёжно эксплуатировать систему на Kafka.

    • Consumer lag и алертинг
    • Метрики broker и topic
    • Планирование ёмкости и цена retention
    • Replay: повторная обработка событий
    • Основы безопасности: аутентификация и ACL

    Практическая лабораторная: Настроить dashboard и правило алерта по consumer lag и проверить их сценарием, создающим lag.

Практические задания

  • Выбор ключа и тест порядка
  • Отчёт о диагностике проблемы rebalance
  • Идемпотентный consumer с тестом дубликатов
  • Реализация outbox
  • Изменение схемы с проверкой совместимости

Результаты для портфолио

  • Учебная event-driven система с outbox и идемпотентными consumer
  • Набор тестов, покрывающий сценарии дубликатов и сбоев
  • Каталог событий и документ о правилах эволюции схем
  • Dashboard consumer lag и runbook

Как оценивается обучение

  • Защита дизайна событий
  • Code review ментором
  • Письменный разбор сценария сбоя
  • Запись решения о выборе choreography или orchestration

Инструменты и технологии

  • Apache Kafka
  • Spring for Apache Kafka
  • Schema Registry
  • Avro или Protobuf
  • PostgreSQL
  • Debezium (на уровне концепции)
  • Docker Compose
  • Testcontainers
  • Prometheus и Grafana

Последовательность уровней

До
До этого: Microservices и Distributed Systems или опыт работы с многосервисными системами.
После
После: System Design.
Длительность и формат
Длительность и формат ещё не определены; программа планируется и не включена в расписание.

Частые вопросы

Частые вопросы

Доступна ли программа сейчас?

Нет. Программа планируется и пока не стоит в расписании. Даты и цены не объявлены. Вы можете оставить интерес или запросить консультацию.

Нужен ли предварительный опыт с Kafka?

Нет. Достаточно общего представления об обмене сообщениями и опыта со Spring Boot; модель Kafka объясняется в первом модуле.

Возможен ли exactly-once на самом деле?

При определённых условиях внутри Kafka — да, но не по всей цепочке с внешними системами. Программа объясняет его пределы и практическую альтернативу — идемпотентное потребление.

Есть ли сертификат или обещание работы?

Нет. Ни сертификат, ни результат не обещаются. Оценка проходит в форме защит дизайна и обратной связи ментора и носит рекомендательный характер.

Оставить интерес

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

Как с вами связаться?