Cloud Automation and Immutable Infrastructure

cloud

Published: September 29, 2015

Modern DevOps tools and practices allow our team to focus on creating our software products rather than managing the servers on which they run.

Back in my system administrator days, my team of 3 Unix professionals managed several dozen physical and virtual servers supporting student, staff, and faculty efforts at the University of Utah’s College of Social and Behavioral Sciences. Using Secure Shell to access each host, we would pore over 1000s of lines of software configuration directives. Changes were made by hand on each machine.

One of my early tasks at that position was to implement a system-wide monitoring solution to provide an inventory of all servers including tracking essential services. Even with this in place, tracking configuration changes was time-consuming. Changes to a configuration file could introduce issues, and the effort of tracking down the offending change and determining why it was made in the first place, before applying a fix, could be incredibly time-consuming. Live changes to production machines had the potential to interrupt user access.

Nowadays, there are a wealth of tools available which make headaches like this a thing of the past.

Immutable infrastructure is a concept rapidly growing in popularity. Container solutions like  Docker and  LXC provide isolated execution environments. These containers can be configured via code - code which can be tracked using version control, and reviewed and tested before deployment.

Running a complicated software ecosystem requires a number of supporting services, each of which requires its own configuration and deployment process. Ansible provides a simple, clean solution. Now deploying say, a VPN service can be as simple as running an Ansible playbook which launches a virtual server, installs the necessary software, starts the VPN service, and returns user-specific client configuration and encryption certificates.

Packer allows us to roll out new AMIs (Amazon Machine Image), Docker containers, and VirtualBox virtual machine images with a single command. In concert with an Ansible playbook, we can use a small amount of configuration and code to build a number of different machine image types that each run the same set of services but on different platforms.

Our current systems approach does not employ truly immutable infrastructure. Sometimes we want to make changes to a running server, or even a number of them. Ansible allows us to apply those changes all at once using the same playbooks and roles we used to create the machine images on which the running instances were based. A new image is then created, so on the next launch everything is up to date.

Using these and other tools, we’re able to save a great deal of time on operations. I personally have more time to spend developing our product, as well as creating tools and workflows that make life easier for our engineering and science teams.

You might also like these articles

blog_header_2025-forward-2

What’s ahead for DecisionNext and our customers in 2025

As we start the new year, we want to take a moment to reflect on a few of the important trends that shaped our industry over the last twelve months, and how they position …

Read Article
blog_header_mckinsey

How Data and AI Are Driving the Procurement Revolution

In today’s data-driven world, there’s more access to information than ever before. Maybe even too much. Take the domestic meat industry for example where the …

Read Article
blog_header_case-studies_spot-cargo

Navigating the Sale of Spot Cargo for Maximum Gain

Value Using DecisionNext’s advanced forecasting tools, an iron ore producer boosted their profit by $700,000 for one deal. The platform helped them easily improve …

Read Article

Sign up for our Newsletter: The Formula

The Formula is DecisionNext’s monthly newsletter for industry insights, product updates, company news and more!

Connect the Dots

Get in touch with us to learn more about our solutions and the work we do.

[ reCAPTCHA widget ]