[Slurm] Apache Kafka для разработчиков (Всеволод Севостьянов, Алексей Бурылов)
Нельзя просто так взять... и не использовать Кафку!!!
Как проходит интенсив:
Щепотка теории
Встречаемся в течение 3х дней, смотрим живые трансляции и задаем вопросы гуру-спикерам по Kafka
Щедрая заправка
Обсуждаем Kafka с другими участниками интенсива в чате, поднимаем настроение шутками и соревнуемся в создании лучших мемов по теме интенсива
Много практики
После каждой темы выполняем практические задания на стендах в личном кабинете и закрепляем материал
Можно долго читать книги или статьи по Kafka, смотреть обучающие видео или изучать документацию. Потратить на это много времени и все равно не найти всей информации, чтобы стать мастером.
А мы подготовили интенсив, где ты за 3 дня начнешь разбираться в Kafka, как будто создал её сам.
Спойлер: в интенсиве будет про архитектуру, этого нигде нет.
Кому подойдет курс?
В 2022 году навыки работы с Apache Kafka требуются более чем для 3000 вакансий (*по данным hh.ru)
Системным администраторам
Для сисадминов у нас есть отдельный курс: Apache Kafka База (складчина на него)
Архитекторам
Kafka — решение многих архитектурных проблем. Подписка на события и надежная передача запросов между приложениями еще никогда не были такими простыми. После интенсива ты организуешь правильную event-driven архитектуру с помощью Kafka!
Разработчикам
Kafka даст понимание, каким образом мы можем организовать работу микросервисов и повысить общую надежность системы. Также мы поможем узнать, чем же Kafka отличается от других подобных систем и в чем ее преимущества.
Бизнес-кейсы, которые будем решать:
Проблема #1. Периодически отваливается логистический шлюз, и пользователь получает ошибку при создании заказа в онлайн-магазине одежды. Расскажем, как отвязать логистический шлюз от создания заказа, чтобы они не были связаны напрямую.
Проблема #2. Сервисы обмениваются сообщениями о событиях напрямую, и иногда по вине сети они не доставляются и пропадают. Объясним, что сделать, чтобы ничего не терять.
Проблема #3. Пользователь создал заказ, а магазин отправил его в доставку, упаковал и отгрузил водителю. И только после этого онлайн-магазин узнал, что оплата не прошла. Научим, как совершать все действия в правильном порядке, чтобы заказ не высылался до подтверждения оплаты.
Рекомендованные программы и навыки:
Для прохождения интенсива тебе понадобится компьютер, на котором установлена и настроена среда разработки, git и docker. Желательно установить make.
Знание Java и/или Go стэка.
День 1 -
• 1. Введение
• 2. Определение терминов. Теория
Начнете безошибочно разбираться в терминологии
2.1. Нода, Датацентр, Кластер
2.2. ZooKeeper
2.3. Консумер, продусер, топик
2.4. Сообщение, ключ, значение
2.5. Партиции
• 3. Архитектура Кафка. Теория + практика
Научитесь писать простейшие клиенты, будете понимать внутреннюю архитектуру Кафки
3.1. Шардинг (партиционирование)
3.2. Репликация лидер-ведомый
3.3. Концепция указателей (смещений)
3.4. Буферная передача и задержки
• 4. Основы использования Кафка. Теория + практика
Научитесь работать со сложными протоколами и настроить приложение так, чтобы оно не развалилось в проде
4.1. Создание топиков
4.2. Сериализация сообщений
4.3. Настройки продюсера
4.4. Настройка консумера
4.5. Partition key: упорядочивание и чтение на клиенте
День 2 -
• 5. Алгоритмы на Kafka. Теория + практика
Научитесь строить архитектуру между микросервисами
5.1. Асинхронные сообщения
5.2. Подписка на события
5.3. Репликация в микросервисах
• 6. Транзакции с использованием Kafka. Теория + практика
Научитесь избегать распространенных проблем с данными при построении архитектуры
6.1. Only once и идемпотентность при записи в базу
6.2. Only once при копировании из топика в топик
6.3. Distributed transactions / Sagas
День 3 -
• 7. Событийно-ориентированная архитектура. Теория + практика
Начнете использовать все преимущества Kafka
7.1. Однонаправленная обработка событий
7.2. Вариант применения: event sourсing. Акторы
7.3. Работаем с индексом времени вставки
7.4. Расчет агрегатов на Kafka
• 8. Изнасилование Кафка (Kafka как база данных). Теория + практика
Поймете, как использовать Кафку в качестве СУБД и стоит ли это делать
8.1. Объединение старых значений ключа
8.2. Доступ к сообщениям в случайном порядке
8.3. Делаем fifo очередь
8.4. Очередь, отсортированная по времени получения aka шедуллер