From a business perspective, cloud migrations are driven largely by a desire for flexibility and resilience. When we move systems to the cloud, we expect them to be both more adaptable and more reliable than on-premise solutions. These two objectives are somewhat competitive, however. The Jenga tower is most likely to fall when you are moving a piece. Adding flexibility naturally introduces change which puts stability at risk. (photo credit: pwmag.com)
Enter Continuous Integration
It is possible to improve both simultaneously. Public cloud providers such as Azure, Google Cloud, and AWS have built improvements to both flexibility and resilience into their platforms, with such features as managed database services and instances that automatically restart on failure. But to get increased agility without sacrificing stability, we need to turn as much as possible to automation.
The continuous integration (CI) tool chain lets us adapt our infrastructure in the same repeatable, testable ways as we modify application code. Broadly, we do this by using DevOps tools such as the HashiCorp suite, Chef, Puppet, Ansible, and so on, to achieve the following:
- Define all parts of our infrastructure through code
- Manage the configuration of that infrastructure through code
- Apply these tools in the continuous integration pipeline to validate, deploy and test automatically
- Roll back to safety whenever validation or testing fail.
Benefits of Continuous Integration
There are many benefits of this approach (pictured above). The most obvious are:
Repeatability - If the whole thing comes crashing down, the whole stack can be restored at any point in time.
Testability - To test something that might drastically affect user data, a complete replica of the stack can be created to verify that everything works before putting it into production.
Real-time feedback – Application architects can get instant validation of the viability of new designs, by updating code and letting the testing suite run.
DevOps is About People
The main underlying benefit this method achieves is cultural, rather than technical. The combination of CI and DevOps allows faster and safer collaboration within and across teams. Changes can be made confidently when processes are sufficiently automated, and tests are comprehensive and reliable. The short feedback loop leads to fast learning, while the CI process enforcement shapes that learning to cultivate desirable practices in the team.
In the end, DevOps is about people first, processes and tools follow.
Questions about the Cloud or Continuous Integration? Comment below and let us know what you think!