Как избежать дублирования кода для горизонтально масштабируемого веб-приложения?
Как мне видется, и имено так и делал - вынести общий код в отдельный репозитарий и подключать где нужно.
Если нужно эти данные уже как-то обработать, декорируете их уже в кокретном приложении.
Если у вас сейчас эти приложения похожи, то не известно, что будет через несколько лет. А вынос в отдельный репозитарий даст гибкость для архитектуры.
Если выносится слой логики в отдельный репозитарий, очень желетельно иметь прослойку в конечном приложении, чтоб уже данные правильно готовить. Чтоб изменения в репозитарии с логикой, не поломали другое приложение.
Долбится по HTTP выглядит вкусно, но там все недостатки репозитария и еще куча других.
Update:
Philipp , xmoonlight и я о том же пишем разными словами, насколько я понимаю. По крайней мере ответ Philipp это то, что я имею ввиду.
1. Админка и бэкенд API - это манипуляторы объектов.
2. Репозиторий объектов (их свойств и взаимосвязей) - должен быть централизованный: обычно - это связи и сущности в БД.
3. Для управления репозиторием объектов можно создать ещё один манипулятор (со своим API) и обращаться к нему по необходимости из "админки" и/или "бэкенд API".
Главное - читайте мануал к БД, чтобы использовать все возможности для манипуляции и хранения нужной Вам структуры объектов.