Managed Deployments

Managed Deployments

May 07, 2024 | Peter Denison

M.D.G. IT managed deployments is a service that provides clients with all of the tools to adopt a best practice deployment strategy for their application. Using a deployment strategy has many significant advantages:

  • Builds and deployments are fully automated, so that all developers need to do is to commit tested code. Updates take place without a developer needing to log in to a server, making iterative, agile development easy and fast.
  • The build process doesn't stress frontend servers. Application builds can be resource intensive, competing with the frontend for CPU and RAM. Because these run in a separate build container, this resource usage is completely isolated from production.
  • Any failures are caught in the pipeline, rather than taking down a live site.
  • Reverting changes is as easy as rerunning a previous pipeline.
  • On sites where the build process can take more than 20-30 minutes, the application is often unavailable if the build takes place directly on the production server. Isolating this to a build pipeline means only the completed build is then deployed, minimising downtime.

Components

Version Control

The core of any deployment system is version control, which stores the application code. Database content, media, and the contents of any packages are kept out of version control to minimise the size of the repository. Databases and media are stored on production / staging servers directly, and composer, NPM etc packages are defined by their respective JSON / YAML files, which tell the build which packages to install when the build is run.

M.D.G. IT can provide Gitlab hosting, or we can work with your existing version control host (Github, Bitbucket etc).

Pipelines

Pipelines are a series of jobs that take the code that's in version control, run any build steps that are required, run required tests, and then deploy the resulting code directly to the environment that's been specified (i.e. to staging and then to production). These pipelines run on a separate build system, which is separate to the environments being deployed to.

Pipelines are generally defined in YAML files, which detail the jobs, tests, and the way that the pipeline pushes code to remote environments.

M.D.G. IT can help create pipelines from scratch or modify your existing pipelines to tailor application deployment to your specific requirements.

Jobs

Individual jobs run within a pipeline to perform individual tasks, such as building, testing and deploying an application. These can be run automatically or manually

Full or Partial Automation

Automation lets users reap the full time-saving benefits of using deployment pipelines. Most pipelines are usually first set up to be manual, so that each job is run by hand (by clicking a button in Gitlab, Bitbucket etc). Once everything is tested and working as expected, the system can be automated to the precise level required. Any failures upstream will prevent later jobs from running, so a failed build or test, for example, isn't then deployed.

Specific automation can be set up depending on the commit branch; as an example, a commit to the dev branch might not do anything at all, while a commit to a defined staging branch will automatically build the site, deploy it to staging, and send a Slack message or email to whoever is responsible for testing functionality on staging. A merge to production would then deploy this tested code to production automatically.

Containerised deployment

Once a deployment workflow has been adopted, it's trivial to then switch the final deployment step to bundle the application code in a container, opening up the full power of Kubernetes hosting. Containerised deployments tie in smoothly to M.D.G. IT Kubernetes hosting, allowing applications to scale across physical datacenter environments to deliver full geographic redundancy.

Applications and pricing

Managed deployments simplify website development and maintenance for Magento, Next.js, Wordpress, Laravel, Drupal, and a host of other applications. We offer a variety of packages, including a free tier that includes Gitlab hosting. Get in touch with our friendly support team to discuss how setting up a deployment strategy could work for you!

You may also like: