diff --git a/_data/toc/cloud-guide.yml b/_data/toc/cloud-guide.yml index 050e702d83c..b3752184259 100644 --- a/_data/toc/cloud-guide.yml +++ b/_data/toc/cloud-guide.yml @@ -307,6 +307,9 @@ pages: - label: Cloud deployment process url: /cloud/deploy/cloud-deployment-process.html + - label: Reduce downtime + url: /cloud/deploy/reduce-downtime.html + - label: Static content deployment url: /cloud/deploy/static-content-deployment.html diff --git a/guides/v2.1/cloud/deploy/optimize-cloud-deployment.md b/guides/v2.1/cloud/deploy/optimize-cloud-deployment.md index e1b3c2a6bc2..e389015888e 100644 --- a/guides/v2.1/cloud/deploy/optimize-cloud-deployment.md +++ b/guides/v2.1/cloud/deploy/optimize-cloud-deployment.md @@ -17,5 +17,8 @@ The following topics can help you to better understand how to optimize the deplo - [Static content deployment]({{page.baseurl}}/cloud/deploy/static-content-deployment.html) The best way to optimize your Cloud deployment is to control how and when to generate static content. +- [Reduce downtime]({{page.baseurl}}/cloud/deploy/reduce-downtime.html) + Understand what happens during deployment and how to reduce the amount of downtime your store experiences during an update to the Production environment. + - [Smart wizards]({{page.baseurl}}/cloud/deploy/smart-wizards.html) - The `{{site.data.var.ct}}` package provides the smart wizard commands to quickly evaluate your Cloud configuration. + The `{{site.data.var.ct}}` package provides the smart wizard commands to quickly evaluate your project configuration. diff --git a/guides/v2.1/cloud/deploy/reduce-downtime.md b/guides/v2.1/cloud/deploy/reduce-downtime.md new file mode 100644 index 00000000000..e06cd9e1128 --- /dev/null +++ b/guides/v2.1/cloud/deploy/reduce-downtime.md @@ -0,0 +1,34 @@ +--- +group: cloud-guide +title: Reduce downtime +functional_areas: + - Cloud + - Deploy + - SCD +--- + +{{site.data.var.ece}} runs Magento in [_maintenance_ mode]({{page.baseurl}}/config-guide/bootstrap/magento-modes.html#maintenance-mode) during the deploy phase, which takes your site offline until the deployment is complete. The length of time your Production site is in maintenance mode depends on the size of the site, the number of changes applied during the deployment, and the configuration for static content deployment. + +During the deployment process, all connections queue for up to 5 minutes preserving any active sessions and pending actions, such as adding to cart or checkout. After deployment, the queue is released and connections continue without interruption. To use this _connection hold_ to your advantage and reduce downtime to **zero**, you must configure your project to use the most efficient deploy strategy. + +Use the following steps to reduce the amount of time it takes your store to deploy an update to Production: + +1. [Upgrade to the `{{site.data.var.ct}}` package]({{page.baseurl}}/cloud/project/ece-tools-upgrade-project.html) or [update the `{{site.data.var.ct}}` version]({{page.baseurl}}/cloud/project/ece-tools-update.html) + Your {{site.data.var.ece}} project must have the latest `{{site.data.var.ct}}` package so that you have the tools available to configure an optimal deployment. If you have the latest `{{site.data.var.ct}}`, continue to the next step. + +1. [Configure static content deployment]({{page.baseurl}}/cloud/deploy/static-content-deployment.html) + If static content deployment fails in the deploy phase, your site gets stuck in maintenance mode. When a failure occurs during the build phase, the process avoids downtime because it never begins the deploy phase. [Generating static content during the build phase with minified HTML]({{page.baseurl}}/cloud/deploy/static-content-deployment.html#setting-the-scd-on-build), also known as the ideal state, is the optimal configuration for zero-downtime deployments and _prevents_ downtime if a failure occurs. + + You can validate your project configuration by [running the ideal state wizard]({{page.baseurl}}/cloud/deploy/smart-wizards.html#verifying-an-ideal-configuration). + +1. [Configure the post-deploy hook]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#hooks) + You must configure the post-deploy hook to clean and warm the cache. By default, cache clean occurs during the deploy phase when the site is down. Moving the cache clean to the post-deploy phase means that your cache remains live until the deploy phase is complete, and then you can safely clean the cache. + + Customize the list of pages used to preload the cache with the [WARM_UP_PAGES environment variable]({{page.baseurl}}/cloud/env/variables-post-deploy.html#warm_up_pages). + +1. [Reduce theme files]({{page.baseurl}}/cloud/env/variables-deploy.html#scd_matrix) + You can reduce the amount of unnecessary theme files by configuring the SCD\_MATRIX environment variable. + +1. [Speed up static content deployment]({{page.baseurl}}/cloud/env/variables-deploy.html#scd_threads) + You can speed up the deployment process by updating the SCD\_THREADS environment variable to increase the number of threads for static content deployment. + diff --git a/guides/v2.1/cloud/deploy/static-content-deployment.md b/guides/v2.1/cloud/deploy/static-content-deployment.md index 3cb3ff32287..474fcd09982 100644 --- a/guides/v2.1/cloud/deploy/static-content-deployment.md +++ b/guides/v2.1/cloud/deploy/static-content-deployment.md @@ -13,7 +13,7 @@ Static content deployment (SCD) has a significant impact on the store deployment You can improve the SCD load time during the deployment process if you skip copying the static view files in the `var/view_preprocessed` directory and generate _minified_ HTML when requested. You can activate this by setting the [SKIP_HTML_MINIFICATION]({{page.baseurl}}/cloud/env/variables-global.html#skip_html_minification) global environment variable to `true` in the `.magento.env.yaml` file. {: .bs-callout .bs-callout-info} -Beginning with the `{{site.data.var.ct}}` package version 2002.0.13, the default value for the SKIP_HTML_MINIFICATION variable is set to `false`. +Beginning with the `{{site.data.var.ct}}` package version 2002.0.13, the default value for the SKIP_HTML_MINIFICATION variable is set to `true`. You can save **more** deployment time and disk space by reducing the amount of unnecessary theme files. For example, you can deploy the `magento/backend` theme in English and a custom theme in other languages. You can configure these theme settings with the [SCD_MATRIX]({{page.baseurl}}/cloud/env/variables-deploy.html#scd_matrix) environment variable. @@ -25,7 +25,7 @@ Deployment strategies differ based on whether you choose to generate static cont ### Setting the SCD on build -Generating static content during the build phase with minified HTML is the optimal configuration for **zero-downtime** deployments, also known as the **ideal state**. Instead of copying files to a mounted drive, it creates a symlink from the `./init/pub/static` directory. +Generating static content during the build phase with minified HTML is the optimal configuration for [**zero-downtime** deployments]({{page.baseurl}}/cloud/deploy/reduce-downtime.html), also known as the **ideal state**. Instead of copying files to a mounted drive, it creates a symlink from the `./init/pub/static` directory. By default, the [STATIC_CONTENT_SYMLINK environment variable]({{page.baseurl}}/cloud/env/variables-deploy.html#static_content_symlink) is set to `true`. After generating the static content during the build phase, it creates a symlink to the content folder. @@ -51,13 +51,16 @@ Generating static content requires access to themes and locales. Magento stores ### Setting the SCD on demand -Generating SCD on demand is optimal for a development workflow. It decreases deployment time so that you can quickly review your implementations and run integration tests. Enable the [SCD_ON_DEMAND]({{page.baseurl}}/cloud/env/variables-global.html#scd_on_demand) environment variable in the global stage of the `.magento.env.yaml` file. The SCD_ON_DEMAND variable overrides all other configurations related to SCD and clears existing content from the `~/pub/static` directory. +Generating SCD on demand is optimal for a development workflow in the Integration environment. It decreases deployment time so that you can quickly review your implementations and run integration tests. Enable the [SCD_ON_DEMAND]({{page.baseurl}}/cloud/env/variables-global.html#scd_on_demand) environment variable in the global stage of the `.magento.env.yaml` file. The SCD_ON_DEMAND variable overrides all other configurations related to SCD and clears existing content from the `~/pub/static` directory. When using the SCD on-demand strategy, it helps to preload the cache with pages you expect to request, such as the home page. Add your list of expected pages in the [WARM_UP_PAGES]({{page.baseurl}}/cloud/env/variables-post-deploy.html#warm_up_pages) environment variable in the post-deploy stage of the `.magento.env.yaml` file. +{: .bs-callout .bs-callout-warning} +Do not use the SCD on-demand strategy in the Production environment. + ### Skipping SCD In some cases you could choose to skip generating static content completely. You can set the [SKIP_SCD]({{page.baseurl}}/cloud/env/variables-build.html#skip_scd) environment variable in the global stage to ignore other configurations related to SCD. This does not affect existing content in the `~/pub/static` directory. [SCD Load Comparison]: {{site.baseurl}}/common/images/cloud/scd-load-times.png -{: width="700px"} \ No newline at end of file +{: width="700px"} diff --git a/guides/v2.2/cloud/deploy/reduce-downtime.md b/guides/v2.2/cloud/deploy/reduce-downtime.md new file mode 120000 index 00000000000..ca0e1ee8f17 --- /dev/null +++ b/guides/v2.2/cloud/deploy/reduce-downtime.md @@ -0,0 +1 @@ +../../../v2.1/cloud/deploy/reduce-downtime.md \ No newline at end of file diff --git a/guides/v2.3/cloud/deploy/reduce-downtime.md b/guides/v2.3/cloud/deploy/reduce-downtime.md new file mode 120000 index 00000000000..6a6ef277390 --- /dev/null +++ b/guides/v2.3/cloud/deploy/reduce-downtime.md @@ -0,0 +1 @@ +../../../v2.2/cloud/deploy/reduce-downtime.md \ No newline at end of file