About ten years ago, a new term was introduced to the world of software development: DevOps. Despite confusion about exactly what it is, the DevOps approach has been slowly gaining adherents, especially among those web application developers who have seen its impact on their development processes.
In this post, I thought I’d try to shed some light on the topic so you can consider whether DevOps is right for you.
Let’s start with the AWS definition of DevOps:
“DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.”
That’s a pretty solid definition as it focuses on speeding up the process of getting applications to market. But it doesn’t say much about how these processes are sped up. There are several ways we accomplish this for our DevOps customers.
One way is to automate everything that can be automated. Our DevOps engineers understand all the steps in the traditional process of developing, testing, and releasing code. By automating many of these steps, we lower the chance for error and speed up the process.
Another related concept that’s important to understand is that of “Infrastructure as Code.” Since I gave an AWS definition earlier, let me give an Azure definition this time:
“Infrastructure as Code (IaC) is the management of infrastructure (networks, virtual machines, load balancers, and connection topology) in a descriptive model, using the same versioning as DevOps team uses for source code.”
Think of this as programming the environment. When we need to spin up a dev/test environment or a new production environment, we run the program. Codifying infrastructure offers several related benefits:
- Like automation, Infrastructure as Code lowers the chance for error. When environments are set up manually, there is almost always some deviation. If something goes wrong, the developer needs to determine if it was an error in the environment or an error in the code before they can address it. This creates a significant drag on the development process.
- Because it’s easier and faster to spin up Dev/Test environments, developers can also start testing earlier in the development cycle. And because these environments are identical, there’s less chance of introducing errors into the code that care caused by an improperly configured environment.
- The same goes for Beta environments used to roll out an application to a controlled number of users. When trouble shooting, the developer can have high confidence the problem is in the code, not the environment.
- Standardization of the production environment lowers the chance of configuration errors once the code is released. This leads to higher application performance, tighter security, and higher customer satisfaction.
There are other benefits of a Managed DevOps environment. For example, as any developer know, unexpected issues can crop up that require code to be rolled back to a previous version. This can be both time-consuming and cumbersome. Our DevOps engineers will follow your prescribed escalation procedures and manage the roll back process for you.
Finally, development leads know that documentation is critical, but it’s not always easy to make sure it gets done. Our DevOps team will document all of your processes and escalation procedures as well as trouble shooting in both the pre- and post-production environments.
While documentation may seem like an after-thought, it’s one of the most critical pieces of the puzzle. Pohlman USA is a DevOps customer of ours, and as Alicia Hart, Executive Director of Litigation Support and Technology Services, puts it, “If someone new were to come into our organization, they could get a snapshot pretty quickly of our IT environments. We also have documentation for all issues and how they were resolved, so the next person will know what to do should it ever happen again. Prior to working with Connectria we had zero documentation.”
DevOps can be a deep and sometimes complex topic, but it’s a philosophy that makes a lot of sense in today’s fast-paced, competitive world where speed to market matters. If you would like to discuss DevOps in more depth, you can reach out to me. We’d be happy to talk through your situation and help you determine if Managed DevOps is right for you.