Starter architecture

All of your code is contained in the Magento Commerce Cloud Starter project. The project is your Magento store code, extensions, and integrations on a master branch. Each project supports up to 4 total environments including up to three active Integration environments and a Production environment using the master branch.

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.

You can use any development and branching methodology you like. We strongly recommend creating a Staging environment and branch as one of the Integration environments.

High-level view of Starter project

Production with a master branch

The Production environment is your live store(s) and site(s). The environment includes your master branch, a web server, database, and configured services to fully test your site.

The Production environment runs your public-facing Magento single and multi-site storefronts. This system is read-only, requiring deployment across the architecture from the Integration environment to the Staging environment, and finally to the Production environment.

We walk you through deploying to Production and Go Live requirements and processes.

We highly recommend fully testing in your Staging environment and branch before pushing to the master branch which deploys to the Production environment.

Staging branch and environment

We recommend creating a branch called staging from master. The Staging environment is created from the staging branch 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, Blackfire, and search.

Additional sections in this guide provide instructions and walk-throughs for final code deployments and testing production level interactions in a safe Staging environment. For best performance and feature testing, replicate your Production database into the Staging environment.

We walk you through deploying to Staging and testing your store(s) requirements and processes.

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.

Integration environment

Developers use the Integration environment to develop, deploy, and test:

  • Magento application code
  • Custom code
  • Extensions
  • Services

You can have up to two active Integration environments on a grid for two active branches. Each Integration environment matches the name of the branch and includes a web server, database, and configured services to fully test your site.

You can have an unlimited number of inactive branches to store code. To access, view, and test inactive branches, you must activate them.

The Integration environment does not support all services. For example, Fastly CDN is not accessible in an Integration environment.

The process for developing in Integration requires the following process:

  • Branch and develop off of the staging branch
  • Develop all work on your local workspace in these branches
  • Push code to Git to build and deploy on an Integration environment for testing
  • As work is completed, merge to the staging branch

Additional sections in this guide provide instructions and walk-throughs for setting up your local workspace, working with branches, and deploying code.

Production and Staging technology stack

The Production and Staging environments include the following technologies. You can modify and configure these technologies through the .magento.app.yaml file.

  • Fastly for HTTP caching and CDN
  • Nginx web server speaking to PHP-FPM, one instance with multiple workers
  • Redis server
  • Elasticsearch for searching for Magento Commerce Cloud 2.2 and later

Services

Magento Commerce Cloud currently supports the following services: PHP, MySQL (MariaDB), Elasticsearch (Magento 2.2.x and later), Redis, and RabbitMQ.

Each service runs in its own secure container. Containers are managed together in the project. Some services are built-in, such as the following:

  • HTTP router (handling incoming requests, but also caching and redirects)
  • PHP application server
  • Git
  • Secure Shell (SSH)

You can even have multiple applications running in the same project. Building a microservice oriented architecture with Magento Commerce is as easy as managing a monolithic application.

Software versions

Magento Commerce Cloud uses:

  • Operating system: Debian GNU/Linux
  • Web server: nginx

You cannot upgrade the operating system and web server software to a new version, but you can configure versions for the following software:

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 use the following files to configure the software versions that you want to use in your implementation.

Backup and disaster recovery

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.

Prepare for development

To branch and develop your Magento store:

  • Set up your local environment
  • Clone the master branch from the Project to your local environment
  • Create a staging branch from master
  • Create branches for development from staging
  • Push code to Git that builds and deploys to an environment for testing

Additional sections in this guide provide instructions and walk-throughs for setting up your local workspace, working with branches, deploying code, and going live.