/module-zero-downtime-deployment

Disable native change detection from Magento2 to allow Zero Downtime Deployment Strategy.

Primary LanguagePHPMIT LicenseMIT

Zero Downtime Deployment

Magento 2.4.4 - @deprecated

On version 2.4.4, Magento is able to handle blue/green deployment, making this module no more required.
To enable blue/green deployment you can add the deployment config deployment/blue_green/enabled in file app/etc/env.php:

'deployment' => [
    'blue_green' => [
        'enabled' => true
    ]
]

magento/framework/Module/Plugin/DbStatusValidator.php image magento/module-deploy/Model/Plugin/ConfigChangeDetector.php image

Related commit is here: https://github.com/magento/magento2/commit/c241e11adf59baeca9d9e66cdbd726e4b0b88b21

⚠ Consequently, this module is now deprecated.

Purpose

Disable native change detection from Magento2 to allow Zero Downtime Deployment (ZDD).

Normal behavior:
zdd

With this module installed:
zdd_module

Installation

composer require zepgram/module-zero-downtime-deployment
bin/magento module:enable Zepgram_ZeroDowntimeDeployment
bin/magento setup:upgrade

Configuration

By default, Zero Downtime is enabled on production mode and disabled on Magento's developer and default modes.
However, you can enable it for those modes from configuration path: dev/zero_downtime_deployment/is_always_enabled
418

This section is only visible on developer mode from back-office

For example, it can be useful to display errors when you roll-back your code while your database is ahead.

Server

ZDD enables you to deploy your website without any downtime. However, this module contains only necessary changes to make it possible on Magento2.

To be able to perform a complete ZDD you'll need a blue/green deployment strategy. Which depends on your hosting provider.

For example:

The mainly steps to reach the ZDD with Magento2:

  1. Start the deployment: green pods are the old one, for now they must stay active while creating blue pods.
  2. You must set your blue pods to a dedicated redis database and keep the green pods on their own redis db (avoiding cache corrupting).
  3. Run bin/magento setup:upgrade --keep-generated to upgrade your database.
  4. Upgrading is done: now green pods must be killed and replaced by blue pods based on health check statement.

You can find a lot of articles detailling the procedure: