Thank you for Subscribing to CIO Applications Weekly Brief
A featured contribution from Leadership Perspectives, a curated forum for enterprise technology leaders, nominated by our subscribers and vetted by the CIOApplications Editorial Board.

Exeter Finance
David Robertson, Director Enterprise Architecture
What Is Devops Today?


His struggling career as a musician keeps his focus on architecting software platforms, but he still enjoys playing the guitar whenever possible. Solar and wind systems have helped entertain his engineer’s mind and given him chances to collaborate on those things with his kids. One day soon, he plans to thru-hike some of the big trails in North America and, hopefully, Europe.
DevOps has come to mean a lot of things over the years. Ask five people, and you might get seven different answers. From deploying code to virtual machines to provisioning infrastructure in the cloud, the term encapsulates a lot of activities traditionally performed by people from varying departments in a corporate setting. Things that used to take humans hours or even weeks can now be handled with automation in minutes. Errors and inconsistency that once plagued IT groups can eliminated due to DevOps, which is repeatable and deterministic with a much higher level of quality.
Pipelines
So, how do modern organizations do DevOps these days? IT shops have varying maturity levels so that I will describe popular DevOps aspects in an ideal configuration. The usual starting point is Continuous Integration (CI), which many people call “Pipelines.” The idea assumes multiple people making changes to the same system simultaneously and then integrating their changes frequently, ideally daily. This means a shared repository for the code or scripts and an associated deployment pipeline to integrate changes, run unit tests, and then package and deploy the code to some target, be it a virtual machine or serverless host in the cloud (ignoring containers for simplicity).
Test automation can be a large value-add using Continuous Deployment (CD). Unit tests are normally included in the CI pipeline, whereas integration and end-to-end UI tests are included in the CD pipeline. These tests run after the code has been deployed, which traditional people do to ensure integration with other systems or resources is working and to validate specific features. Using test automation for these common tasks serves as a basic “regression test” of the system or component each time it is deployed, and it saves companies time and money having the automation do it orders of magnitude faster than people. Let them focus on the more difficult tests.
The Environment Problem
What about multiple environments? In distributed systems, multiple environments often exist to deploy and test the system before any features are made available to the business users (go-live). DevOps can help with this by deploying the same package across multiple environments; the only thing that needs to change is the configuration values for a given environment. For example, an API will likely target a different data store for each environment; the code is the same for all. A CD pipeline can switch out the value for the data store when the code is being deployed to its host. It’s all just configuration built into the system. Advanced systems will use Feature Flags/ Toggles to use different values for different environments and can turn a given feature on or off by environment.
Gone are the days of sending emails to the infrastructure team to manually provision a virtual machine or some suite of cloud resources only to wait another 2-3 days for runtimes and tools to be installed before any code can be deployed
Something that has gained wide adoption in the last ten years or so is a DevOps technique known as Infrastructure as Code (IaC). Gone are the days of sending emails to the infrastructure team to manually provision a virtual machine or some suite of cloud resources only to wait another 2-3 days for runtimes and tools to be installed before any code can be deployed. Using IaC and pipelines, one can click a button and have resources created and configured in minutes, often with all the software needed to subsequently deploy code to it. There are even automated configuration tools for on-premise virtual machines to bring parity between provisioning similar things in a cloud provider. Databases, Websites, networking, firewalls, and all of it can be provisioned in minutes with DevOps automation.
Security In Devops
DevSecOps has become a critical part of the DevOps movement in recent years. Both code and infrastructure can be secured consistently using CI and CD pipelines. Security best practices can be incorporated into various stages of the DevOps lifecycle. Code can be statically scanned for vulnerabilities during a build. Test automation can validate all running APIs are secured properly. Dynamic scans can be automated, and any failing reports can be sent to the proper audience to address flaws. IaC can be code-reviewed by the CyberSecurity personnel to ensure no resources are public and that proper firewall rules are in place for each resource provisioned. Doing all of this with automation returns to making things repeatable and deterministic, saving organizations hours by eliminating manual security reviews for each detailed resource or API.
So, what does DevOps mean to you? Take it in part or compose a larger set of pieces and realize the value it can provide when done well. It can save you time and money, mitigate security attack vectors, or possibly all these things. Get started with DevOps and ship it!

