Чеклист по старту проекта с Apache Kafka®
ноября 01, 2021· #kafka #system-designВ любом современном проекте, где появляется необходимость обрабатывать какие-либо события — набор сообщений или поток данных, в качестве инфраструктурного решения разработчики часто предлагают Apache Kafka®. Не всегда этот выбор выглядит взвешенно — там, где достаточно классического брокера типа ActiveMQ, побеждает маркетинг.
Допустим все же, вы обдуманно пришли к выбору Кафки или же ваша централизованная инфраструктура не оставила вам выбора. На какие вопросы стоит ответить перед тем, как начать писать продюсеры, консьюмеры и настраивать какие-то параметры брокера? Мой базовый чеклист-опросник ниже:
- Объем данных, который планируется генерировать продьюсерами → хватит ли вашего сетевого канала для всей системы и ее критичных компонент.
- Как долго вам необходимо хранить данные: Data Retention Policy → бизнес-требования продукта, который вы разрабатываете и стоимость хранения данных, см. в том числе пункт первый. Кроме перечисленного не стоит забывать и про комплаенс.
- Нужны ли гарантии отправки сообщения: Acks → поиск баланса между временем ожидания latency и надежностью в рамках репликации durability.
- Гарантия доставки → насколько критично для нашей бизнес задачи потеря или дублирование сообщений, важны ли идемпотентность и транзакционность.
- Какая стратегия партиционирования будет использоваться продьюсерами — подходит ли стратегия по умолчанию.
- Для выбранного топика важно ли нам хранить весь лог сообщений или достаточно последних изменений → см. Compacted Topics в официальной документации.
- Потребуется ли консьюмер-группа для ваших топиков; как вы планируете масштабировать консьюмеры и их пропускную способность; что будет в случае ребаласировки группы.
За рамками чеклиста остаются вопросы шифрования данных, аутентификации и авторизации, а также траблшутинга — предполагая, что за вас это решит SRE или PAAS.