Можно ли реализовать микросервисную архитектуру без брокеров сообщений
Что проверяют
Для тестировщика это вопрос не про выбор архитектуры, а про последствия: какие отказы появляются без брокера и как вы будете их ловить. Следом обычно спрашивают, как тестировать цепочку из нескольких сервисов, если один из них недоступен.
Как отвечать
Да, можно. Брокер (Kafka, RabbitMQ) это один из способов связи, а не обязательная часть микросервисов. Без него сервисы общаются так:
- синхронно: HTTP с REST или gRPC. Вызывающий ждёт ответа, и отказ вызываемого сразу становится его проблемой;
- асинхронно без брокера: вебхуки, таблица-очередь в базе с опросом, паттерн Transactional Outbox, где событие пишется в той же транзакции, что и данные, а отдельный процесс его доставляет.
Отсюда риски, под которые строится тестирование:
- каскадные отказы: сервис A висит на таймауте к B, и у A кончаются потоки или соединения. Проверяют таймауты, повторы и circuit breaker, причём с внедрением сбоев: Toxiproxy, WireMock с задержками, остановка контейнера;
- повторы и идемпотентность: повторный запрос после таймаута не должен создать второй заказ или списать деньги дважды. Отдельный кейс: ответ потерялся, а операция на той стороне прошла;
- контракты: при прямых вызовах изменение API одного сервиса ломает соседа. Помогают контрактные тесты (Pact) и проверка схем OpenAPI или proto;
- наблюдаемость: сквозной идентификатор запроса и трассировка через OpenTelemetry, чтобы по одному обращению собрать путь через все сервисы.
Сильный ответ связывает это с вашей практикой: какие сценарии вы добавили в регресс, как изолировали сервис заглушками, что проверяли на стенде с реальными соседями.
Где спотыкаются
Отвечают «нельзя, микросервисы без Kafka не работают». Многие системы годами живут на HTTP и gRPC.
Тестируют только счастливый путь с поднятыми соседями. Самые дорогие дефекты при прямых вызовах связаны с таймаутами и частичными отказами.
Не проверяют повтор запроса. Ретрай на клиенте без идемпотентности на сервере даёт дубли, и увидеть их можно только специальным кейсом.