Мы строим многокомпонентную систему на основе Akka-кластеров. Каждый компонент является отдельным Play! проект, и в начале он присоединяется к кластеру Akka, а компоненты начинают искать действующих участников.
Проблема
У меня есть две проблемы с этой настройкой:
-
Написание тестового кода очень сложно (мы еще этого не выяснили), особенно при написании тестов, которые полагаются на нескольких участников, поступающих из разных компонентов. Как мы можем решить зависимость и создать надлежащий кластер в тестовом коде (между двумя игровыми приложениями!)
-
Во время разработки каждый разработчик должен запускать несколько экземпляров Sbt для загрузки системы (разные проекты воспроизведения), и это полностью поглощает всю память системы, и разработка становится невероятно медленной.
Что я ищу
Я думал о том, чтобы использовать свойство "role" кластера для выборочной загрузки, это означает, что существует только один проект и компоненты Play (модули) и загрузка загрузочного проекта. Я сканирую текущий "Роли" этого экземпляра и на основе этого я запускаю или останавливаю определенные компоненты/актеры.
Это упростит тестирование, но я точно не знаю, как это сделать в Play, особенно, что некоторые компоненты фактически предлагают API RESTful (Play Controllers), и я не знаю, как включать/отключать маршруты и контроллеры при загрузке время игры.
Есть ли какой-либо документ или что-то, что показывает правильный способ создания модульной распределенной системы или каких-либо подсказок? (что-то также относится к тому, как следует настраивать SBT?
Редактировать 1: Проект живет в одном репозитории и имеет одну сборку sbt (несколько проектов)