Как модернизировать PHP-приложение, не нарушая работу бизнеса.
Модернизация по умолчанию не означает переписывание. Она подразумевает восстановление потенциала для внесения изменений, снижение рисков и перенос системы на основу, с которой команда сможет работать.
- Проведите диагностику, прежде чем выбирать технологию.
- Защитите критически важные потоки данных и информацию.
- Раздельная стабилизация, совместимость и перепроектирование.
- Вносите небольшие изменения с возможностью отката.
1. Дайте определение слову «модернизировать».
Цель может заключаться в восстановлении поддержки, сокращении количества инцидентов, ускорении доставки или устранении зависимости. Новая версия — это не результат, а техническое условие. Прежде чем предлагать решение, определите наблюдаемые изменения для пользователей, команды и операционных служб.
- Коммерческий и технический результат.
- Потоки, которые невозможно прервать.
- Риск, который необходимо снизить.
- Имеющиеся возможности для поддержания изменений.
2. Создайте базовый уровень.
Проведите инвентаризацию кода, версий, зависимостей, данных, интеграций, сред и этапов работы. Сравните документацию с данными среды выполнения. Карта не обязательно должна быть идеальной, но она должна объяснять, где начинается изменение и на что оно может повлиять.
- Воспроизводимый репозиторий и релиз.
- Прямые и транзитивные зависимости.
- Права собственности на данные и интеграцию.
- Текущие инциденты, производительность и поддержка.
3. Выберите стратегию.
Поддержание, рефакторинг, постепенная замена и переписывание не являются постоянными параметрами. Программа может сочетать в себе немедленную стабилизацию, обновление во время выполнения, внутренние ограничения и выборочную замену.
- Поддерживайте существующее состояние, когда риск контролируется, а изменения незначительны.
- Проведите рефакторинг, когда правила имеют ценность, но ограничения препятствуют развитию.
- Извлекайте информацию, когда у функциональности есть собственные границы и жизненный цикл.
- Переписывать только с учетом плановой миграции, эквивалентности и выхода на пенсию.
4. Защита поведения
Прежде чем менять структуру, создайте покрытие для тех сценариев, которые оказывают наибольшее влияние. Объедините автоматизацию, контракты, тестовые данные и скрипты регрессионного анализа. Цель — выявление отклонений, а не погоня за абстрактным процентом.
- Потоки и критерии приемки.
- Репрезентативные данные и конфиденциальность.
- Внешние интерфейсы и побочные эффекты.
- Базовый режим работы.
5. Внедрение поэтапно.
На каждом этапе необходимо снижать риски или расширять возможности. Необходимо определить этапы входа, выхода, подтверждения, ответственного за результат и отката. Следует избегать смешивания миграции для обеспечения совместимости с несвязанным перепроектированием, поскольку это затрудняет выявление причин сбоя.
- Небольшие, заметные изменения.
- Временная совместимость там, где это повышает безопасность.
- Отработанные миграции данных.
- Наблюдение после каждого выпуска.
6. Глубокое знание и опыт работы.
Модернизация завершается, когда команда может установить, изменить, выпустить, наблюдать и восстановить систему. Необходимо фиксировать принятые решения и удалять временные шаги, чтобы программа не создавала дополнительный уровень задолженности.
- Обновлена архитектура и приняты соответствующие решения.
- Схемы выполнения операций, оповещения и проверенные резервные копии.
- Старые зависимости удалены.
- Остаток невыполненных обязательств перед заказчиками.
Материалы, связанные с этим решением
Продолжить с диагностикой, выполнением или смежным опытом.
Примените это руководство к своему приложению.
Мы анализируем ситуацию, имеющиеся данные и варианты действий, не привязывая оценку к реализации.