Самоучитель: динамические веб-приложения
Глава 18 из 18VIII. Выпуск проекта150 минут

Глава 18. Релиз, откат и итоговый проект 2026

Релиз считается готовым, когда артефакт воспроизводим, миграция совместима, состояние наблюдаемо, а откат описан до первой ошибки.

После главы вы сможете
  • собрать release pipeline
  • развести deploy и migration
  • закончить вертикальный продукт

Итоговый продукт

Соберите менеджер задач с регистрацией, проектами, ролями, созданием и завершением задач, историей изменений и фильтрами. Серверный HTML обеспечивает основной маршрут, JavaScript улучшает фильтры и команды через JSON API. MySQL хранит предметные факты, а не состояние открытой вкладки.

Не начинайте все функции одновременно. Выпускайте вертикальные срезы: вход; создание проекта; одна задача; список; завершение; история. Каждый срез проходит безопасность и тесты.

Поток релиза

От изменения до productionОдин проверенный артефакт проходит окружения без пересборки из плавающих зависимостей.CommitreviewCItests/auditArtifactimmutableDeployhealthObserverollback
Один проверенный артефакт проходит окружения без пересборки из плавающих зависимостей.

CI как доказательство

Pipeline устанавливает зависимости по lock-файлам, проверяет platform requirements, запускает style, static analysis, unit, integration и browser smoke, затем собирает immutable artifact. Никакие production-секреты не нужны шагу тестирования.

Версия артефакта доступна health endpoint и журналу. Это связывает ошибку с конкретным кодом, а не с приблизительным временем загрузки файлов.

Миграция без ловушки

Сначала разворачивайте схему, совместимую со старым и новым кодом: новая nullable-колонка или таблица, backfill отдельным контролируемым шагом, переключение чтения, затем усиление ограничения. Разрушительное удаление переносится в следующий релиз.

Backup ценен только вместе с проверенным восстановлением и известным временем. Для rollback кода оцените, сможет ли старая версия читать уже изменённые данные.

Проверка после публикации

Smoke проверяет главную, вход, чтение и одну безопасную команду. Health разделяет liveness и readiness: процесс может быть жив, но не готов принимать трафик без базы. Мониторинг сравнивает ошибки и latency с baseline до релиза.

Canary или небольшой процент трафика уменьшает радиус ошибки. Автоматический rollback требует надёжного сигнала, иначе краткий внешний сбой создаст дополнительную нестабильность.

Чек-лист 2026

  • Целевая ветка PHP поддерживается; migration guide прочитан, deprecations проверены.
  • MySQL 8.4 LTS и выбранная кодировка зафиксированы; миграции проверены с нуля и на копии объёма.
  • Composer lock и platform requirements совпадают с сервером.
  • ES-модули и Fetch имеют обычный HTML fallback для критических действий.
  • Сессия, CSRF, XSS, SQL, загрузки и объектная авторизация покрыты отрицательными тестами.
  • Есть build id, журнал без секретов, метрики и процедура отката.

Финальная практика

Опубликуйте проект в тестовом окружении и проведите учение: оборвите миграцию, верните 500 из repository, повторите POST после потери ответа и восстановите базу из копии. Запишите фактические команды и время восстановления.

Локальный прогресс

Закрепите материал

Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.

Перелинковка со справочником

Проверка актуальности

  • php.nethttps://www.php.net/supported-versions.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • php.nethttps://www.php.net/manual/en/migration85.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • dev.mysql.comhttps://dev.mysql.com/doc/refman/8.4/en/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • getcomposer.orghttps://getcomposer.org/doc/01-basic-usage.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.

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

Данные этого сервиса

Настройки cookie и локальных данных

Аналитика

Текущий статус: не выбран. До согласия обе аналитические системы не загружаются.

Локальные данные

Удаление затрагивает только ключи PHP-сервиса в этом браузере и требует подтверждения.

Политики

Политика конфиденциальности · Политика использования файлов cookie