Author: David Pratt
Author: Samuel Fleming
A short time ago in a galaxy that’s right here, actually, DevOps became the fastest, easiest way to deploy software.
What is DevOps? Simply put, DevOps is a collection of tools that enables deployment of code and other software updates in a repeatable, automated process that anyone in your organization can manage.
DevOps can make deploying software entirely hands free, allowing developers to work in fully integrated environments without having to wait for deployments or push the code themselves. Engineers are able to focus on infrastructure while no longer burdened with deployment operations.
Gone are the days of writing up a deployment guide and then working through the wee hours of the night to deploy and test a release. Properly implemented, DevOps completely transforms a software development lifecycle faster than you can say “I’m your father”.
How? Developers can have code tested, built, and deployed for QA as soon as it’s committed to their source code repository. QA can push code on for user acceptance testing (UAT) once testers have signed off. Production updates can be pushed or rolled-back. All with the click of a button.
DevOps isn’t just for code though; with infrastructure-as-code tools, cloud infrastructure can be deployed alongside the software that runs on it! Of course, with the security and control built into modern DevOps tools, you get to determine who can promote or revert code to each environment and can always audit the history.
However, just like a certain Force, DevOps has both its light side and dark side. In Part 1 of this two-part series, we’ll be discussing the benefits of DevOps tools.
Ephemeral environments are short lived environments — with all the related services and infrastructure to run full blown regression testing — isolated from everyone else. Such a thing was impractical, at best, before DevOps.
Now, software and infrastructure can be automatically created and destroyed, so new avenues for development and testing have become a reality. Teams can work on fully integrated features independently and only merge their completed work with the rest of the solution when it’s ready. No more “blockers” because dev is down from a bad commit.
Secrets like usernames, passwords, keys, etc. have often proven difficult to manage, with results ranging from complex processes to even storing them in source control! With a well implemented DevOps pipeline, “secrets” can be kept 100% confidential through a variety of options.
One such option is to introduce variable substitution in config files during deployment. Your ops team can even securely store and manage those encrypted secrets in source control just like code. Static code analysis tools can be integrated into the process to ensure that passwords are not stored in clear text with your source code.
These tools also automatically scan for known vulnerabilities and inform you of recommended patches. Using modern tools incorporated into your build pipeline ensures your software stays more secure than ever before.
The most significant benefit from a well-tested and maintained DevOps pipeline is the ability to promote and demote code on demand. This is most obvious when QA, UAT, or another non-operations group may release updates into production with a single click, a signature, or in some instances, by simply merging code into a release branch.
However, this functionality really shines in the cloud. Development can optionally designate their code and other dependencies for deployment to a completely fresh, isolated integration environment. Even just a quick demo of new functionality can benefit from an ephemeral environment.
For example, some features require development across multiple services. They may incorporate a substantial change to existing data models that is expensive, time consuming, and delicate to replicate in “normal” environments. When infrastructure is code and code is deployed automatically, whole new environments can be created and destroyed with the press of a button.
When correctly architected and implemented, DevOps replaces previously manual and error prone tasks required to manage software throughout the development lifecycle. Your DevOps platform should bring developers and system engineers together, remove obstacles and friction between teams, improve security, and greatly reduce the time it takes to release.
In part 2 of this series, we will cover some of the common mistakes made when designing a DevOps implementation.
Have questions about DevOps? Schedule a quick call with one of our experts today.
David Pratt is a Senior Architect at RevGen Partners, with years of experience tailoring digital solutions to our clients’ unique needs.
Samuel Fleming is an architect at RevGen Partners. He is passionate about delivering technology solutions to address big and small business challenges.