Skip to content
This repository was archived by the owner on Nov 19, 2024. It is now read-only.

Commit 583b0ca

Browse files
authored
Updated Pro and Starter architecture to reflect enhanced integration environment provisioning (#7369)
- Updated Starter and Pro architecture diagrams with new Enhanced Integration environment provisioning - Add recommendations and caveats for using Pro Staging and Integration environments - Cleaned Starter environment topic and updated info about Integration environment - Moved Starter architecture topics to architecture directory and updated reference links with new path - Added note for existing Cloud customers about requesting upgrade to Enhanced Integration environments
1 parent 6a6f282 commit 583b0ca

18 files changed

+234
-162
lines changed

src/_data/toc/cloud-guide.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ pages:
1414
versionless: true
1515
children:
1616
- label: Starter architecture
17-
url: /cloud/basic-information/starter-architecture.html
17+
url: /cloud/architecture/starter-architecture.html
1818
versionless: true
1919

2020
- label: Starter develop and deploy workflow
21-
url: /cloud/basic-information/starter-develop-deploy-workflow.html
21+
url: /cloud/architecture/starter-develop-deploy-workflow.html
2222
versionless: true
2323

2424
- label: Pro architecture
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{:.bs-callout-info}
2+
Projects provisioned before June 5, 2020 had multiple, smaller Integration environments. If you need a larger Integration environment for testing and development, request an upgrade to Enhanced Integration environments. See the [Integration Environment request](https://support.magento.com/hc/en-us/articles/360043032152) article in the _Magento Help Center_ for details.

src/cloud/architecture/cloud-architecture.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ For comparison, each plan includes the following infrastructure features and sup
9595

9696
## Starter projects
9797

98-
The [Starter plan architecture]({{ site.baseurl }}/cloud/basic-information/starter-architecture.html) has four environments:
98+
The [Starter plan architecture]({{ site.baseurl }}/cloud/architecture/starter-architecture.html) has four environments:
9999

100100
- **Integration**—The Integration environment provides three testable environments. Each environment includes an active Git branch, database, web server, caching, some services, environment variables, and configurations.
101101
- **Staging**—As code and extensions pass your tests, you can merge your Integration branch to a Staging environment, which becomes your pre-Production testing environment. It includes the `staging` active branch, database, web server, caching, third-party services, environment variables, configurations, and services, such as Fastly and New Relic.

src/cloud/architecture/pro-architecture.md

Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ functional_areas:
99
- Cloud
1010
---
1111

12-
Your {{site.data.var.ece}} Pro architecture supports a maximum of **eight** environments that you can use to develop, test, and launch your store. Each environment contains a database and a web server:
12+
Your {{site.data.var.ece}} Pro architecture supports multiple environments that you can use to develop, test, and launch your store.
1313

14-
- **Integration**—Provides a single environment branch, and you can create up to four additional, environment branches. This allows for a maximum of five _active_ branches deployed to Platform-as-a-Service (PaaS) containers.
14+
- **Integration**—Provides a single environment branch, and you can create one additional, environment branch. This allows for up to two _active_ branches deployed to Platform-as-a-Service (PaaS) containers.
1515
- **Staging**—Provides a single environment branch deployed to dedicated Infrastructure-as-a-Service (IaaS) containers.
1616
- **Production**—Provides a single environment branch deployed to dedicated Infrastructure-as-a-Service (IaaS) containers.
17-
- **Global Master**—Provides a `master` branch deployed to Platform-as-a-Service (PaaS) containers.
17+
- **Master**—Provides a `master` branch deployed to Platform-as-a-Service (PaaS) containers.
1818

1919
The following table summarizes the differences between environments:
2020

@@ -65,6 +65,9 @@ The following table summarizes the differences between environments:
6565
</tbody>
6666
</table>
6767

68+
{:.bs-callout-info}
69+
Magento also provides the {{site.data.var.mcd-prod}} solution to deploy Magento to a local Cloud Docker environment for developing and testing {{site.data.var.ee}} projects. See [Docker development]({{site.baseurl}}/cloud/docker/docker-development.html).
70+
6871
## Pro environment architecture
6972

7073
Your project is a single Git repository with three, main environment branches for Integration, Staging, and Production. The following diagram shows the hierarchical relationship of the environments:
@@ -73,32 +76,67 @@ Your project is a single Git repository with three, main environment branches fo
7376

7477
## Integration environment {#cloud-arch-int}
7578

76-
Developers use the Integration environment to develop, deploy, and test:
79+
The Integration environment runs in a Linux container (LXC) on a grid of servers known as Platform-as-a-Service (PaaS). Each environment includes a web server and database to test your site.
80+
81+
**Recommended use cases:**
7782

78-
- Magento application code
79-
- Custom code
80-
- Extensions
81-
- Services
83+
Integration environments are designed for limited testing and development before moving changes to Staging and Production. For example, you can use the Integration environment to complete the following tasks:
8284

83-
The Integration environment runs in a Linux container (LXC) on a grid of servers known as Platform-as-a-Service (PaaS). Each environment includes a web server and database to test your site.
85+
- Ensure that changes to continuous integration (CI) processes are Cloud compatible
86+
87+
- Test critical workflows on key pages like Home, Category, Product Details Page (PDP), Checkout, and Admin
88+
89+
For best performance in the Integration environment follow these best practices:
90+
91+
- Restrict catalog size
8492

85-
{:.bs-callout-info}
86-
The Integration environment does not support all services. For example, the Fastly CDN is not accessible in an Integration environment.
93+
- Limit use to one or two concurrent users
8794

88-
### Global Master
95+
- Disable crons and manually run as needed
8996

90-
The Global Master branch is a part of the Integration environment. You should always push a copy of the Production code to the Global Master in case there is an emergent need to debug the Production environment without interrupting services.
97+
**Caveats:**
9198

92-
Do **not** create a branch from Global Master. Use the Integration environment branch to create new, active branches.
99+
- Fastly CDN and New Relic services are not accessible in an Integration environment
100+
101+
- The Integration environment architecture does not match the Production and Staging architecture
102+
103+
- Do not use the Integration environment for development testing, performance testing, or user acceptance testing (UAT)
104+
105+
- Do not use the Integration environment to test {{site.data.var.b2b}} functionality
106+
107+
- You cannot restore the Integration database from Production or Staging
108+
109+
{% include cloud/note-enhanced-integration-envs-kb.md%}
93110

94111
## Staging environment {#cloud-arch-stage}
95112

96113
The Staging environment provides a near-production environment to test your site. This environment, which is hosted on dedicated IaaS hardware, includes all services, such as Fastly CDN, New Relic APM, and search.
97114

98115
You cannot create a branch from the Staging environment branch. You must push code changes from the Integration environment branch to the Staging environment branch.
99116

100-
{:.bs-callout-warning}
101-
We highly recommend testing every merchant and customer interaction in the Staging environment prior to deploying to the Production environment. See [Deploy your store]({{ site.baseurl }}/cloud/live/stage-prod-live.html) and [Test deployment]({{ site.baseurl }}/cloud/live/stage-prod-test.html).
117+
**Recommended use cases:**
118+
119+
The Staging environment matches the Production architecture and is designed for UAT, content staging, and final review before pushing features to the Production environment. For example, you can use the Staging environment to complete the following tasks:
120+
121+
- Regression testing against production data
122+
123+
- Performance testing with Fastly caching enabled
124+
125+
- Test new builds instead of patching in Production
126+
127+
- UAT testing for new builds
128+
129+
- Test {{site.data.var.b2b}}
130+
131+
- Customize cron configuration and test cron jobs
132+
133+
See [Deploy your store]({{ site.baseurl }}/cloud/live/stage-prod-live.html) and [Test deployment]({{ site.baseurl }}/cloud/live/stage-prod-test.html).
134+
135+
**Caveats:**
136+
137+
- After launching the Production site, use the Staging environment primarily to test patches for Production-critical bug fixes.
138+
139+
- You cannot create a branch from the Staging environment branch. You must push code changes from the Integration environment branch to the Staging environment branch.
102140

103141
## Production environment {#cloud-arch-prod}
104142

@@ -170,6 +208,15 @@ Our redundant architecture means we can offer upscaling without downtime. When u
170208

171209
For example, you can add extra web servers to an existing cluster should the constriction be at the PHP level rather than the database level. This provides _horizontal scaling_ to complement the vertical scaling provided by extra CPUs on the database level. See [Scaled architecture]({{ site.baseurl }}/cloud/architecture/scaled-architecture.html).
172210

211+
## Master environment
212+
213+
On Pro plan projects, the Master branch provides an active PaaS environment with your Production environment. Always push a copy of the Production code to the Master environment in case you need to debug the Production environment without interrupting services.
214+
215+
**Caveats:**
216+
217+
- Do **not** create a branch from Master. Use the Integration environment branch to create new, active branches.
218+
- Do not use the Master environment for development, UAT or performance testing
219+
173220
## Software versions {#cloud-arch-software}
174221

175222
{{site.data.var.ece}} uses the Debian GNU/Linux operating system and the [NGINX](https://glossary.magento.com/nginx) web server. You cannot upgrade this software, but you can configure versions for the following:
@@ -180,7 +227,7 @@ For example, you can add extra web servers to an existing cluster should the con
180227
- [RabbitMQ]({{ site.baseurl }}/cloud/project/project-conf-files_services-rabbit.html)
181228
- [Elasticsearch]({{ site.baseurl }}/cloud/project/project-conf-files_services-elastic.html)
182229

183-
For the Staging and Production environments, we recommend installing the Fastly CDN module 1.2.33 or later. See [Fastly in Cloud]({{ site.baseurl }}/cloud/cdn/cloud-fastly.html).
230+
For the Staging and Production environments, we recommend installing the latest version of the Fastly CDN module. See [Fastly in Cloud]({{ site.baseurl }}/cloud/cdn/cloud-fastly.html#fastly-cdn-module-for-magento-2).
184231

185232
Edit the following YAML files to configure specific software versions to use in your implementation.
186233

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
---
2+
group: cloud-guide
3+
title: Starter architecture
4+
functional_areas:
5+
- Cloud
6+
redirect_from:
7+
- /cloud/basic-information/starter-architecture.html
8+
---
9+
10+
Your {{site.data.var.ece}} Starter architecture supports up to **four** environments, including a Master environment that contains the initial project code, the Staging environment, and up to two Integration environments.
11+
12+
All environments are in PaaS (Platform-as-a-Service) containers. These containers are deployed inside highly restricted containers on a grid of servers. These environments are read-only, accepting deployed code changes from branches pushed from your local workspace. Each environment provide a database and web server.
13+
14+
You can use any development and branching methodology you like. When you get initial access to your project, we strongly recommend that you create a Staging environment from the Master environment. Then, create the Integration environment by branching from Staging.
15+
16+
## Starter environment architecture
17+
18+
The following diagram shows the hierarchical relationships of the Starter environments.
19+
20+
![High-level view of Starter project]({{ site.baseurl }}/common/images/cloud/cloud_arch-starter.png)
21+
22+
## Production environment {#cloud-arch-prod}
23+
24+
The Production environment provides the source code to deploy Magento to the Cloud infrastructure that runs your public-facing Magento single and multi-site storefronts. The Production environment uses code from the `master` branch to configure and enable the web server, database, configured services, and your Magento application code.
25+
26+
Because the production environment is read-only, you must make changes in the Integration environment and deploy across the architecture from the Integration environment to Staging, and finally to the Production environment. See [Deploy your store][] and [Site launch][].
27+
28+
We highly recommend fully testing in your Staging environment and branch before pushing to the `master` branch which deploys to the Production environment.
29+
30+
## Staging environment {#cloud-arch-stage}
31+
32+
We recommend creating a branch called `staging` from `master`. The `staging` branch deploys code to the Staging environment to provide a pre-production environment to test code, modules and extensions, payment gateways, shipping, product data, and much more. This environment provides the configuration for all services to match the Production environment including Fastly, New Relic APM, and search.
33+
34+
Additional sections in this guide provide instructions for final code deployments and testing production level interactions in a secure Staging environment. For best performance and feature testing, replicate your Production database into the Staging environment.
35+
36+
{:.bs-callout-warning}
37+
We highly recommend testing every merchant and customer interaction in the Staging environment prior to deploying to the Production environment. See [Deploy your store][] and [Test deployment][].
38+
39+
## Integration environment {#cloud-arch-int}
40+
41+
Developers use the Integration environment to develop, deploy, and test:
42+
43+
- Magento application code
44+
- Custom code
45+
- Extensions
46+
- Services
47+
48+
You can have up to **two** active Integration environments. You create an Integration environment by creating a branch from the Staging branch. When you create an Integration environment, the environment name matches the branch name. An integration environment includes a web server and a database. It does not include all services, for example Fastly CDN and New Relic are not available.
49+
50+
You can have an unlimited number of inactive branches for code storage. To access, view, and test an inactive branch, you must activate it.
51+
52+
{% include cloud/note-enhanced-integration-envs-kb.md%}
53+
54+
## Production and Staging technology stack {#technology}
55+
56+
The Production and Staging environments include the following technologies. You can modify and configure these technologies through the [`.magento.app.yaml`][magento.app.yaml] file.
57+
58+
- Fastly for HTTP caching and CDN
59+
- Nginx web server speaking to PHP-FPM, one instance with multiple workers
60+
- Redis server
61+
- Elasticsearch for searching for {{site.data.var.ece}} 2.2 and later
62+
63+
### Services {#cloud-arch-services}
64+
65+
{{site.data.var.ece}} currently supports the following services: PHP, MySQL (MariaDB), Elasticsearch (Magento 2.2.x and later), Redis, and RabbitMQ.
66+
67+
Each service runs in a separate, secure container. Containers are managed together in the project. Some services are standard, such as the following:
68+
69+
- HTTP router (handling incoming requests, but also caching and redirects)
70+
- PHP application server
71+
- Git
72+
- Secure Shell (SSH)
73+
74+
You can have multiple applications running in the same project. Building a microservice-oriented architecture with {{site.data.var.ee}} is as easy as managing a monolithic application.
75+
76+
### Software versions {#cloud-arch-software}
77+
78+
{{site.data.var.ece}} uses the Debian GNU/Linux operating system and the [NGINX](https://glossary.magento.com/nginx) web server. You cannot upgrade this software, but you can configure versions for the following:
79+
80+
- [PHP][]
81+
- [MySQL][]
82+
- [Redis][]
83+
- [RabbitMQ][]
84+
- [Elasticsearch][]
85+
86+
In the Staging and Production environments, you use Fastly for CDN and caching. When your environment is initially provisioned, we install the latest version of the Fastly CDN extension for Magento. You can upgrade the extension to get the latest bug fixes and improvements. See [Fastly CDN module for Magento 2][]. You also have access to [New Relic][] for performance management.
87+
88+
You use the following files to configure the software versions that you want to use in your implementation.
89+
90+
- [`.magento.app.yaml`][magento.app.yaml]
91+
- [`routes.yaml`][routes.yaml]
92+
- [`services.yaml`][services.yaml]
93+
94+
### Backup and disaster recovery {#backup}
95+
96+
You can create a snapshot of your database and file system using the Project Web Interface or the CLI. The snapshot includes your deployed code, installed software and services, and data. See [Snapshots and backup management][].
97+
98+
## Prepare for development {#develop}
99+
100+
The following workflow summarizes the process to branch your code, develop, and deploy your store:
101+
102+
1. Set up your local environment
103+
1. Clone the `master` branch from the Project to your local environment
104+
1. Create a `staging` branch from `master`
105+
1. Create branches for development from `staging`
106+
1. Push code to Git that builds and deploys to an environment for testing
107+
108+
See the following sections for detailed instructions and walk-throughs to develop, test, and deploy your store:
109+
110+
- [Starter develop and deploy workflow][]
111+
- [Docker development][] (local development environment enabled by {{site.data.var.mcd-prod}})
112+
- [Manage branches][]
113+
- [Deploy your store][]
114+
- [Site launch][]
115+
116+
<!--Link definitions-->
117+
[Deploy your store]: {{ site.baseurl }}/cloud/live/stage-prod-live.html
118+
[Docker development]: {{ site.baseurl }}/cloud/docker/docker-development.html
119+
[Elasticsearch]: {{ site.baseurl }}/cloud/project/project-conf-files_services-elastic.html
120+
[Fastly CDN module for Magento 2]: {{ site.baseurl }}/cloud/cdn/cloud-fastly.html#fastly-cdn-module-for-magento-2
121+
[Manage branches]: {{ site.baseurl }}/cloud/env/environments-start.html
122+
[MySQL]: {{ site.baseurl }}/cloud/project/project-conf-files_services-mysql.html
123+
[New Relic]: {{site.baseurl}}/cloud/project/new-relic.html#configure-new-relic-for-starter-environments
124+
[PHP]: {{ site.baseurl }}/cloud/project/project-conf-files_magento-app.html
125+
[RabbitMQ]: {{ site.baseurl }}/cloud/project/project-conf-files_services-rabbit.html
126+
[Redis]: {{ site.baseurl }}/cloud/project/project-conf-files_services-redis.html
127+
[Site launch]: {{ site.baseurl }}/cloud/live/live.html
128+
[Snapshots and backup management]: {{ site.baseurl }}/cloud/project/project-webint-snap.html
129+
[Starter develop and deploy workflow]: {{ site.baseurl}}/cloud/architecture/starter-develop-deploy-workflow.html
130+
[Test deployment]: {{ site.baseurl }}/cloud/live/stage-prod-test.html
131+
[launching your site]: {{ site.baseurl }}/cloud/live/live.html
132+
[magento.app.yaml]: {{ site.baseurl }}/cloud/project/project-conf-files_magento-app.html
133+
[nginx]: https://glossary.magento.com/nginx
134+
[routes.yaml]: {{ site.baseurl }}/cloud/project/project-conf-files_routes.html
135+
[services.yaml]: {{ site.baseurl }}/cloud/project/project-conf-files_services.html

src/cloud/basic-information/starter-develop-deploy-workflow.md renamed to src/cloud/architecture/starter-develop-deploy-workflow.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
---
22
group: cloud-guide
33
title: Starter develop and deploy workflow
4+
functional_areas:
5+
- Cloud
6+
redirect_from:
7+
- /cloud/basic-information/starter-develop-deploy-workflow.html
48
---
59

6-
The {{site.data.var.ece}} includes a single Git repository with a master branch for the Production environment that can be branched to create Staging and Integration environments for testing and development work. You can have up to four active environments, including a `master` environment for your production server. See [Starter architecture]({{ site.baseurl }}/cloud/basic-information/starter-architecture.html) for an overview.
10+
The {{site.data.var.ece}} includes a single Git repository with a master branch for the Production environment that can be branched to create Staging and Integration environments for testing and development work. You can have up to four active environments, including a `master` environment for your production server. See [Starter architecture]({{ site.baseurl }}/cloud/architecture/starter-architecture.html) for an overview.
711

812
For your environments, we recommend following a Development > Staging > Production workflow to develop and deploy your site.
913

0 commit comments

Comments
 (0)