@hellboy1981

Как правильно тестировать взаимодействия микросервисов?

Есть готовый сервис A, который должен использовать еще не реализованный функционал сервиса Б.
-
- Как можно/нужно симулировать функционал Б? Мой ответ: с помощью библиотеки nock (какие еще?)
-
  • Нужно/можно ли писать функционал в А до реализации Б? Мой ответ: да
  • Как тестировать этот функционал, если нет Б? Мой ответ: С помощью интеграционных тестов.
  • Как тестировать, когда уже реализован Б? С помощью тех же интеграционных тестов, но заменяя вызов на реальный?
  • Тестирование происходит на локальной машине разработчика (локалхост). Все сервисы используют один и тот же порт. Как быть к конфликтами портов? Я могу вручную поменять номер порта (что плохо)? Я могу запустить второй сервис на другой машине?
  • Вопрос задан
  • 1992 просмотра
Решения вопроса 1
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Все это делается при помощи заглушек, которые вместо реализации отдают правдоподобные данные, просто захардкоженные. Сервисы, будь они хоть SOA, хоть микросервисами, они вообще не должны быть привязаны к портам. Сервис - это фасад, закрывающий от внешнего мира реализацию серверной логики, при запуске сервис из настроек берет порт, хост, адреса доступа к другим сервисам, и любые другие параметры. Для того, чтобы стартовать несколько сервисов на одной машине, имитировать серверное окружение, несколько серверов, можно использовать контейнеры docker или виртуальные машины. С разных портов сервисы можно объединять в один пучек при помощи nginx или другого реверс-прокси с URL-реврайтингом. Или есть вариант использовать сервер приложений, который скрывает от разработчика задачу запуска и объединения сервисов в один пучок.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы