Как восстановить архитектуру устаревшей системы (PHP)

Я пытаюсь восстановить архитектуру унаследованной системы. Это что-то новое для меня. До сих пор я читал много исследовательских работ, в которых большинство исследователей предложили для этого фреймворки и автоматизированные инструменты. Но я понятия не имею, как выбрать лучше всего из этих структур или инструментов. У всех исследованных есть некоторый набор общих шагов как реверс-инжиниринг и форвард-инжиниринг. Может ли кто-нибудь помочь в этом? На каком этапе начинается архитектура восстановления устаревшей системы? Каковы основные шаги? Есть ли какие-либо рекомендации? Спасибо

1 ответ

Решение

При преобразовании устаревшей системы вы должны учитывать как технологию, так и команду. Изменения, которые вы должны внести, перейдут к ядру приложения, и, если команда разработчиков не внесет эти изменения, это будет долгая медленная миграция.

Ключ к переделке устаревшей системы - внедрение зависимостей и расположение сервисов. Первым шагом является установка контейнера внедрения зависимостей и добавление класса в контейнер (Logger всегда хороший первый сервис).

Следующим шагом является добавление сервисного локатора. Внедрение в конструктор является лучшим подходом для новых проектов, но для устаревших приложений поначалу это невозможно. С помощью сервисного локатора вы можете получить доступ к контейнеру для инъекций из любого места, позволяя при необходимости разрешать сервис. Имея это в виду, вы можете пролистать и заменить код создания регистратора кодом разрешения регистратора.

Замена логгера - отличный пример того, как работает DI, так что покажите это команде. Убедитесь, что команда полностью понимает эти концепции! Остальная часть процесса сильно зависит от DI и местоположения сервиса.

Контейнер DI разрушает тесную связь в устаревших системах, поэтому вы можете разбить вещи на части. Начните искать швы, где вы можете разбить приложение на более мелкие части, что позволит вам ввести модульное тестирование. Это также заложит основу для миграции DDD, микросервисов, EDA или любой другой целевой архитектуры, которую вы запланировали.

Другие вопросы по тегам