Как стать автором
Обновить
82.95

Кафка: преимущества и на что ещё обратить внимание при тестировании

Время на прочтение3 мин
Количество просмотров496

Привет, Хабр!

Ранее мы разбирались с основами Kafka (часть1), рассматривали, как тестировать микросервисы (часть2) и предугадывали ошибки offset explorer и kafka ui (часть 3). В этой части – так сказать, невошедшее, но полезное, что ещё можно предусмотреть при работе с брокером. 

Преимущества брокеров

Когда я готовила материал из первой части, у меня возникло несколько предположений. Мне казалось, что некоторые преимущества относятся именно к брокерам сообщений и не имеют прямого отношения к API (временное хранение данных, обмен в реальном времени, вычитка раз в сутки, отслеживание Kafka-лага). Особенно я задумалась об этом, когда разбирала пример с мобильным веб-приложением и форматами данных для Kafka (см. раздел из статьи часть1). Казалось бы — зачем Kafka, если можно просто забирать данные из БД через API?

Я решила проверить свои догадки у знакомого бэкенд-разработчика. Его первый вопрос был: «Зачем тебе как тестировщику это знать?», а потом добавил, что API можно настроить похожим образом. Но всё же я выделила два ключевых отличия брокеров: 

1. Асинхронное взаимодействие

API — это всегда запрос-ответ. Если сервис упал, мы получим 503, и данные могут потеряться. В Kafka продюсер просто оставляет сообщение в топике, и ему всё равно, читает ли его кто-то. Даже если консьюмер упал — поднимется и дочитает. 

Кстати, часто сравнивают Kafka и RabbitMQ. Оба брокера существуют для обмена данными, но работают по-разному:

  • RabbitMQ — push (сообщения идут получателю)

  • Kafka — pull (консьюмеры сами забирают), и в этом контексте Kafka звучит надёжнее, чем RabbitMQ

2. Масштабируемость

В случае с Kafka это значит, что можно гибко добавлять продюсеров и консьюмеров. Данные можно переиспользовать — допустим, создать один топик для нескольких консьюмеров. Либо, что очень важно в продакшене, например, если продюсер начал слать мусор — его можно просто отключить. 

На что ещё обратить внимание при тестировании

Помимо непосредственного эмулирования микросервисов при тестировании с кафкой есть ещё несколько аспектов, на которые стоит обратить внимание.

Например, у вас консьюмер, и к топику, который он вычитывает (на который он подписан), подключено несколько продюсеров. Понаблюдайте за распределением сообщений по партициям – возможно, какой-то из продюсеров пишет в конкретную партицию, хотя архитектурой такое поведение не было предусмотрено. Если у него высокая нагрузка, то это может критично отразиться на вашем консьюмере. 

Теперь пару слов о нагрузочном тестировании и продакшене.

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

  • Распределение нагрузки. Не ограничивайтесь одной партицией. Минимум две, а лучше – больше. При проведении нагрузочного тестирования нужна тестовая среда, максимально приближенная к проду;

  • Отказоустойчивость. Kafka и так надёжна (если сервис упадёт, сообщения не потеряются), но лучше подстраховаться – запустить несколько pod-ов (экземпляров) сервиса, настроить количество реплик, организовать мониторинг. Особенно критично это предусмотреть для сообщений с коротким сроком годности – например, OTP (One-Time Password).

    Как могут выглядеть эти настройки:

В заключение, пожалуй, отмечу следующее: держите в памяти эти преимущества брокеров, и со временем вы сами найдёте, что ещё интересного, кроме самих json-ов в сообщениях, можно протестировать в интеграции с брокерами. Не отказывайте себе в этом удовольствии!

Теги:
Хабы:
+2
Комментарии0

Публикации

Информация

Сайт
www.reksoft.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия