Automation: Continuous Integration & Continuous Delivery

WHAT IS CONTINUOUS INTEGRATION & CONTINUOUS DELIVERY?

All of our customers benefit from continuous integration and continuous delivery. But what does that mean? It means we’re constantly checking, reviewing and delivering our applications.

When waiting for a release day to merge changes to your website project or build, integration challenges may occur.

With Continuous Integration (CI), website developers run automated tests against the build to continuously merge the changes and check the application is running as expected. This avoids integration challenges, making website projects and deployments a smoother process.

Continuous Delivery (CD) uses an automated release process whereby code changes can be deployed to a test and/or production environment after each build stage. The changes can then be deployed on demand, at any time.

Continuous Deployment, or automated deployment, is also possible by automating this release process.

Together, continuous integration, continuous delivery and automated deployment can provide a solid automated release process, allowing applications to be deployed at any time.

All of our customers benefit from continuous integration and continuous delivery. But what does that mean? It means we’re constantly checking, reviewing and delivering our applications.

WHY USE CONTINUOUS INTEGRATION TOOLS?

When using continuous integration tools, from the moment code is committed by a developer, automation takes over and notifies the team. Whilst this code is under peer review, our systems are also ensuring the code compiles and its tests pass. It sounds simple but this practice ensures that at least 80% of any concerns with quality, design and bugs are caught and resolved. Before they even hit a server for review.

Once this stage has completed, we automatically bundle the application into an ‘artefact’ which lets us push builds to QA, staging and production environments at the click of a button.  We can also run automated tests that check through all key user journeys over and over again. Every time we prepare a release. And this is all performed using well defined, repeatable processes.

With all of that, its possible that an issue may yet exist. Consequently we ensure that each release is uniquely identified. By doing so we can deploy and rollback software at will. 

Larger, more complex systems also involve multiple stakeholders and for those customers we also augment our processes with feature flags. This allows us to enable and disable features in different environments. We do this as our clients will have multiple deadlines, approval windows and launch dates. This avoids complicating the software development lifecycle and means we can continue to deploy frequently.

In a nutshell our customers all take advantage of:

  • Gated builds and build automation
  • Automated deployments
  • Secured configuration and tight access controls
  • Cloud automation for deploying applications
  • Server automation in pre-provisioned Iaas environments