Уменьшение связности и рефакторинг старого проекта
Имеем большой и старый (более 8 лет) web проект. За годы непрерывной разботки появилось множество сервисов которые жестко связаны между собой. Проблемы в одном из сервисов или компонентов приводят к выходу из строя всего портала. Необходимо провести глубокий рефакторинг не нарушая работоспособность всего проекта и продолжая разработку новых сервисов.
Для решения этих проблем было выработано несколько подходов:
* Полное разделение кодовой базы проектов – никаких подключаемых библиотек из шаред папки
* Что бы не дублировать повторяющийся код – собственные пакеты composer, bower
* Всё взаимодействие между сервисами происходит через API, авторизация OAuth 2.0 и REST
* Новый код – покрыт Unit тестами, для старого реализованы интерфейсы обратной совместимости
Мы получили возможность создавать интегрированные с общей системой независимые проекты. Рядом успешно работает код написанные более 5 лет назад и тот что внедрили вчера.