DevOps Implementation Best Practices
It doesn’t matter if you’re working at a startup or a large company. If your job has anything to do with software development and deployment, DevOps is probably becoming a big deal for you.
DevOps is a tricky one though. Even if you can pin down what it actually is and how it works, it’s even trickier to implement it properly. The good news is that this article will discuss some DevOps implementation best practices to follow.
The DevOps Problem
Traditionally, IT departments have distinct application development and IT operations teams or departments. The application development team is responsible for things like:
- Software design
- Writing code
- Testing code
While the operations team is responsible for things like:
- Network infrastructure
- Server management for applications
- Deploying, updating, and maintaining applications
- Database management and backups
You get the idea. Basically, one team is in charge of writing the code, the other is in charge of getting it to where it needs to be and running it. This system has worked in the past, but it is outdated. Now, customers and businesses want things done faster.
DevOps refers to streamlining and automating the whole process of designing, deploying, and updating code. By breaking down this process and automating key parts of it, companies can get the code to where it needs to be quickly, easily, and safely. Updates and security patches can happen in minutes rather than weeks, which is a win for the company and the customers. This idea might seem quite alien to veteran software developers.
The Importance of Getting DevOps Right
DevOps implementation best practices can bring some serious benefits to an organization. Things like:
- Faster time to get your products to market – Giving you a competitive edge
- Faster bug fixes
- Predictability and trust – When you deploy some code to production, you just know that it’s going to work because much of the process is automated and predictable
- More integrated development and operations teams, and broader skill sets
- Reduced burden on IT staff
- Better work environment and culture, with less finger-pointing
With all these possible benefits, it seems like a no brainer. And it is. In fact, one Gartner survey found that 38% of responding companies were already using DevOps in 2016, and a further 35% were planning to do so in 2017. That’s huge. Docker, one of the most popular DevOps technologies recently saw a 40% increase in users in just one year.
But, like any new IT idea or transformation, there are risks, costs, and resistance to change. Money and time can be wasted, projects can be delayed, and worst of all, your team can get disheartened. Following some best practices can make sure you can get all the benefits quickly and smoothly.
DevOps Implementation Best Practices
Let’s take a look at some key areas to focus on when implementing DevOps into your organization.
Choose the Right Projects to Start With
Overhauling and improving an IT system is always a big task. Automating large sections of your software deployment methods won’t happen in an instant. You’ll have to do it in stages, moving components and adding tools and technologies incrementally. The trick is to choose the right ones first. This will make sure there is an impact, without disaster. The right one won’t be too large or critical, to minimize risk, but also large enough to give you real benefits and get everyone on board.
This is especially true at larger companies. One decent win will prove to leaders, management, and developers that DevOps can work. Getting this right will mean less resistance to change, and an opportunity to learn from mistakes. Some good places to start are continuous integration and distributed version control.
Learn As You Go
Implementing DevOps in your company means making big changes in the way people work together, the way the business is run, and adopting many new tools and technologies. While you’ll still need milestones and well-defined deliverables, having a rigid plan in place to implement ALL of this isn’t the best way.
As Jeff Sussna from Engineering.IT puts it, it’s a good idea to approach DevOps in an agile way, saying:
“Make a plan of where you think you want to go, start going there, and learn as you go. Pretty much every single DevOps implementation adjusts as it goes. It almost never ends up exactly as people expect it to. If you go into this and say ‘This isn’t working the way we want it to, we’re going to give up and go back to the way things were,’ you’ve missed what you were trying to accomplish.”
This style of thinking is becoming more popular in all parts of the tech world. It means getting real benefits faster, with less risk.
Get the Leaders On Board
DevOps isn’t just using a new set of tools, it’s a much broader business problem. To work properly, everything from technologies to business processes need to realign. To achieve this, make sure executives, managers, and developers are all committed to the change. This will also make it easier to get the budget and resources to turn your organization into a DevOps organization.
Build a Collaborative Culture
DevOps implementation best practices refer to more than just learning and using a new set of tools. A DevOps team structure requires a change in the way everyone interacts at an organization.
Traditionally, if something went wrong after some code was deployed, the finger-pointing would begin. Developers would be blamed for bad code, software testers would be blamed for not finding a bug, or operations managers would be blamed for mistakes in deploying. This culture leads to all sorts of bad things. Mistrust between coworkers diminishes collaboration and productivity. In turn, this silos information and collaboration even more.
A better DevOps culture is one where the focus is on what actually went wrong or needs improving, rather than who is to blame. Eventually, greater trust and collaboration will lead to fewer problems.
The traditional model of automated testing means you design a set of tests, and run them at the end of the development cycle. Like many of the ideas I’ve discussed here, this used to be fine, but it’s no longer good enough.
In a DevOps model with continuous delivery, the software is constantly being pushed to production and updated. It needs to be ready and safe at all times. Test Automation (yes it’s a completely different term from automated testing) means automating the process of tracking, managing, and actually running the tests. This ensures that software is appropriately tested and ready at all stages of the development life cycle.
Doing things this way will speed things up too, and make the wh0le process easier. By having all automated tests done automatically when they are needed, fewer unexpected problems will arise. For more info on this topic check out this great article on testing automation and automated testing.
Measure DevOps Success
Before you even start implementing a DevOps model, you should have well-defined methods to measure its success. This way, you’ll know exactly which areas are delivering the most value, and if it has been worth the effort.
Popular things to measure are:
- Deployment frequencies
- Mean time to recovery
- Change fail rates
- Lead time (time from development to deployment)
- Percentage of failed deployments
- Speed of updating, testing, etc…
This Datical article goes into more detail on how to track each of these.
Invest in People
All these changes to technologies, processes, and culture will require a big shift in the way everyone at your organization thinks and works. Many people will be working with technologies they’ve never used before, and with people that they’ve never worked with before. To get the greatest benefits from DevOps, you’ll need to invest in these new skill sets.
DevOps is a new way of doing things, so new training will be needed.
Change How You Think About Systems
DevOps can be thought of as extending agile thinking past just code and to the whole system of delivering IT services. Breaking down a system into smaller, repeatable parts is how you automate it. That’s what DevOps operations is all about. You’ll be able to improve each part incrementally and continuously improve each part – giving you an even faster and more secure system.
DevOps – Do it now and do it right!
The way things are done in IT is changing rapidly. Customers and executives expect things to be done faster than ever. DevOps is already helping many companies achieve this goal. And, by using some DevOps implementation best practices like you’ve seen here, your company can too.
Just like cloud technologies, DevOps is not a trend or a fad. It’s now seen as a business necessity for any company that needs to deliver software services – which is pretty much everyone these days. Get started implementing DevOps at your organization as soon as possible!