Вызов
Цифровая платформа — это не один сервис, а десятки независимых компонентов: обработка заказов, программа лояльности, управление меню, терминалы в ресторанах. Всем им нужно непрерывно обмениваться данными.
При прямой синхронной связи сбой в одном звене останавливал соседние. В часы пик — обед и ужин — пиковые нагрузки кратно превышали среднее значение, и система не выдерживала.
Что было сделано
Трёхуровневая система обмена данными: Kafka для потоков, RabbitMQ для задач, MQTT для терминалов — с полной наблюдаемостью через Istio.
Apache Kafka: надёжная шина данных
Kafka — высокопроизводительная система доставки сообщений, которая разрывает прямую зависимость между сервисами. Отправитель публикует событие и продолжает работу; получатель обрабатывает его в своём темпе. Развёрнут Kafka UI для мониторинга и диагностики потоков данных.
RabbitMQ: очереди для оперативного взаимодействия
Там, где нужна быстрая передача задач между сервисами с гарантией доставки, используется RabbitMQ. Кластер поддерживается в актуальном состоянии как в тестовых, так и в production-окружениях.
MQTT: протокол для сотен терминалов
Для взаимодействия с терминалами самообслуживания в ресторанах используется MQTT — лёгкий протокол, оптимизированный для большого числа одновременных подключений. Стресс-тестирование проведено с более чем 400 параллельными эмуляторами терминалов.
Istio Service Mesh
Service Mesh — инфраструктурный слой, который управляет всем сетевым взаимодействием между сервисами: шифрование, балансировка нагрузки и мгновенная видимость. Миграция с Ingress на Istio в staging дала командам полную карту зависимостей без изменения кода.
Было / Стало
Пиковая нагрузка в обед и ужин кратно превышала средние значения. Теперь очереди сглаживают всплески, а каждый сервис обрабатывает данные в своём темпе — без каскадных отказов.