ISE Blog

Continuous Integration Applied to Infrastructure

Adding Flexibility Introduces Change

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.
devops-ci.png

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!

Samuel Thurston, Software Engineer

Samuel Thurston, Software Engineer

Samuel Thurston is a Software Engineer and Cloud Practice Lead for ISE, architecting and implementing cloud solutions for enterprise clients. He enjoys running, yoga, and cooking, and is frequently found on the disc golf course.

Samuel Thurston, Software Engineer

Latest posts by Samuel Thurston, Software Engineer (see all)

FaaS: Function as a Service Sep 28, 2018

Networking is Hard Aug 23, 2018

Observability in Distributed Systems Jul 19, 2018

Hands-On With Amazon AWS DeepLens Jun 21, 2018

Using Amazon Athena to Query Large Datasets May 24, 2018