Как стать автором
Обновить
71.13
Слёрм
Учебный центр для тех, кто работает в IT

Опыт работы с Apache Kafka: интервью с inDriver

Время на прочтение4 мин
Количество просмотров5.3K

DevOps-инженеры компании inDriver Радик Сейфуллин и Александр Плотников распилили старое монолитное приложение и создают новое, в котором понадобилось знание Kafka. Евгений Бутырин, технический редактор Слёрма, пообщался с ребятами об опыте с Kafka, проблемах, решениях и обучении. 

О компании

inDriver — международный сервис пассажирских, грузовых и междугородних перевозок, услуг по курьерской доставке, решению бытовых и бизнес-задач. Ключевое отличие от других компаний — peer-to-peer модель. Цены на поездки и другие услуги устанавливаются в ходе экспресс-торгов между заказчиком и исполнителем. Не используются непрозрачные, закрытые алгоритмы, подверженные ценовым манипуляциям.

Какие задачи решает команда и зачем им Kafka

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

Kafka мы начали использовать с середины прошлого года. Сейчас делаем это все активнее. Через нее обрабатываем задачи обмена сообщениями, пересылки данных, миграций данных, стриминга.

У нас две среды: тест и прод. Kafka позволяет сделать в обеих одинаковую конфигурацию: чтобы для разработчиков все было прозрачно. Ещё мы прикрутили авторизацию по SSL-сертификатам в связке с Key Secrets store Vault. Мы по API выдергиваем его и выпускаем сертификат для новых клиентов Kafka. Получается автоматизация + безопасность. 

Сейчас мы не супер активно используем Kafka, у нас на проекте несколько тысяч RPS, с переходом на новую платформу мы предполагаем, что этот показатель вырастет в  10-20 раз. Планируем рост в связи с тем, что компания пересматривает подход к написанию ПО. С переходом на микросервисную архитектуру все больше и больше функций будет вытаскиваться в микросервисы, между которыми мы как раз будем использовать Kafka. По мере роста и новых сервисов будет расти нагрузка. 

К чему быть готовым, когда работаешь с Kafka

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

Скейлить надо заранее, готовясь к росту нагрузки. Консьюмеры при увеличении потока могут не справиться: допустим, в обычном состоянии два консьюмера, а прилетит миллион сообщений. Конечно они не справятся, поэтому мы хотим сделать HPA по Consumer Lag. Если Consumer Lag увеличивается, он увеличивает НРА и количество pods и тем самым консюмер-клиенты будут автоматически скейлиться до определенного состояния. 

Проблемы с Kafka

Самая большая проблема с Kafka на проекте — понять, как автоматизировать выдачу прав на топик, ведь Kafka защищена ssl-сертификатом. Решили это с помощью скриптов: у нас автоматически дергается API сервиса, который парсит конфиг приложения, создает по нему топики и вывешивает права. 

Еще одна проблема — вылетают брокеры по Heap Out of Space. Решение нигде не описано, пришлось разбираться своими силами, пробуя разные настройки и проверяя гипотезы. Оказалось, эта проблема связана с некорректно созданным топиком. Когда происходит запись новых файлов, на нулевой партиции происходит out of space. Ситуация довольно странно, но удалось решить ее с помощью нового топика, на который направили потоки. 

Часто бывают проблемы, связанные с инструментами. Допустим, мы используем Debezium-коннекторы, чтобы перекачивать данные из одной базы в другую через Kafka. Эти коннекторы легко ломаются и сложно восстанавливаются. Вот допустим, у меня сломалась реплика, нужно на другую перенастроить. Это вызывает ряд сложностей, потому что они не очень user friendly, требуют много мелких настроек. Это, скорее, рутина. 

В остальном мы очень довольны Kafka, прекрасно работает, и думаем, что у этого решения большое будущее. 

Обновления Kafka

Apache Kafka теперь доступна без ZooKeeper

В релизе Apache Kafka 2.8 ZooKeper заменили на сервис кворума. Подробнее об этом можно почитать в нашем блоге в статье про Kafka без Zookeper.

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

В версси 2.8 можно определять топики по айдишникам, но мы пока не пользуемся — нам достаточно освоить тех функций, которые сейчас есть. 

Как учились Kafka

Пошли вдвоем на курс «Слёрма», чтобы если кто-то один уйдет, экспертиза Kafka в компании не закончилась.

Мы сейчас должны понимать спектр возможностей, которые предоставляет нам Kafka. Лучше понимать и настраивать его, чтобы он помогал растущему бизнесу. В «Слёрм» пошли, потому что уже проходили курс по Kubernetes там и он понравился, появилось внутренняя расположенность к «Слёрму». Да и репутация у него хорошая. 

Выбрали проходить курс, а не просто смотреть ютуб и читать материалы, потому что подача материала в курсе грамотная. Если просто послушать теорию, почитать статью, без практики знания улетучатся и ценности будет мало. Сначала — видеоуроки, где подробно рассказывают основы и практическое применение особенностей Kafka. Потом закрепляют знания тестами. Самое важное, что выделяют виртуальные стенды,  на которых можно это сделать on hands. 

Было очень полезно увидеть на курсе подробно, как внутренне устроена Kafka. Какие там происходят процессы. Узнать на будущее концепты построения геораспределенных систем. 

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

Курс прекрасно подойдет для тех, кто начинает только с Kafka работать. Kafka – это полезно, Kafka – это используется во многих компаниях, и будет в еще больших количествах использоваться. За неделю курса ученик может довольно уверенно рассказывать про Kafka на собеседованиях. 

Итоговый проект на курсе дает понимание, в каком направлении двигаться, чтобы предлагать рабочие решения в работе Kafka. Хороший опыт для новичка — развернуть свой кластер. 

18 октября стартует группа по Apache Kafka от Слёрма. Уже к 22 ноября можно научиться работать с Kafka и защитить итоговую работу.

Узнать больше и записаться на курс: https://slurm.club/3tN6wOb

Планы на будущее

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

У нас есть монолит и мы взаимодействуем с Kafka, но это не то, как бы хотелось строить работу. И вот мы будем это приводить к лучшему виду, исправлять недочеты и делать больше нагрузку на нее. 

Теги:
Хабы:
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Публикации

Информация

Сайт
slurm.io
Дата регистрации
Дата основания
Численность
51–100 человек
Местоположение
Россия
Представитель
Антон Скобин