Dos and Don'ts of DevOps: How Not to Bite Off More Than You Can Chew
Learn how to properly prepare and strategize to shift your IT organization's operations to DevOps.
Join the DZone community and get the full member experience.Join For Free
Many businesses are hell-bent on doing some kind of transformation. While DevOps is definitely not as ubiquitous as digital or agile transformation (17% of software developers have fully embraced DevOps in 2018), the hype is real. If you aren’t doing DevOps in your IT organization, you’re not taking advantage of such benefits as continuous software delivery, faster problem resolution, more productive teams, improved communication and collaboration, and so on. At least the talk goes like that.
While there’s no denying that DevOps is good for basically any company, many IT organizations bite off more than they can chew when kicking off their DevOps transformation. Some of them try to do everything at once, pushing their teams into disruption and dissatisfaction. Others simply cherrypick certain practices that they like and end up with dysfunctional “pockets” of DevOps.” Of course, this results in misaligned pipelines, broken down processes, and burned-out employees. And there are many other reasons for DevOps failure.
In this article, I list five dos and five don’ts that will help you avoid basic mistakes in your DevOps transformation. Let’s dig in!
Do’s — What to Prioritize for DevOps Success
1. Establish Direct Communication Between All Stakeholders
DevOps is a software engineering practice and a culture of efficient collaboration and frictionless communication. So all stakeholders of the DevOps process, not just a DevOps team, should be able to effectively communicate with each other. By stakeholders, I mean product owners, business and technical architects, developers, security, operations, UX designers, testers, project managers, Scrum masters, etc. We don’t talk just about Dev, QA, and Ops teams here.
To establish direct communication between all stakeholders, consider ChatOps, a practice of using chat clients, chatbots, and real-time communication tools to facilitate how tasks are communicated and executed.
DevOps is all about team effort. If any stakeholder is excluded from discussing new ideas, assessing feedback, or working on implementing changes, the IT-organization becomes more likely to fail.
2. Prioritize Culture, Not Tools
DevOps can’t be implemented unless you approach it as a cultural change from the very start. But this I mean that you should focus on people and concrete tasks they do, not on tools that are required for the shift to DevOps.
Don’t get me wrong. Tools are important, specifically when it comes to DevOps automation, but people are still at the core of DevOps. Should they fail to work as a team on one common goal (which is to deliver innovation and value to the end-user), your organization will never succeed in DevOps.
The transition may be challenging, for sure. Some employees refuse to change their ways. Others are just too used to working in silos. And so they choose to follow the path of least resistance, which is “Let’s add tools to the equation, and that’s it.”
Unfortunately, it doesn’t work that way. You need to instill DevOps culture first into communication, collaboration, feedback collection and analysis, and so on. Introduce change gradually to let employees reevaluate and reassess how they do things and to slowly transition to DevOps.
3. Simplify Processes Before Automating Them
Efficient automation is the strongest predictor of a successful transition to DevOps (You won’t achieve continuous delivery without it, right?). Sadly, the lack of communication and culture pushes many IT-organizations to fall far short of the mark here. Basically, what they do wrong is automate every process and practice that they have had in their organization before DevOps. What they should do, however, is
Create a list of all processes in the organization
Analyze and assess complex, fragile manual processes
Figure out which of them are wrong processes and should be eliminated
Figure out how to simplify remaining processes for automation
You don’t want to automate anything that doesn’t work in the first place. You don’t want to automate processes that are too complex and even high maintenance.
This line of attack is pretty much confirmed by DORA’s "Accelerate: State of DevOps 2018: Strategies for a New Economy" report by Dr. Nicole Forsgren, Jez Humble, and Gene Kim. A must-read, by the way. Check it out!
4. Incorporate Automated Testing
Automated testing does allows you to implement a comprehensive CI/CD pipeline in your organization. Just consider the number of deploys you're supposed to do in a DevOps-ready organization and you’ll quickly realize that no QA department can handle it manually. And the potential bottlenecks are many.
Of course, if you want to improve quality and optimize flow, test-driven development should be in place as well.
5. Build a Governance Infrastructure
Another important "do" is governance infrastructure. Why? Because DevOps teams often forget about it and pay dearly when it gets out of hand.
In DevOps, you have to use multiple tools, services, and resources, such as APIs, storage, compute, and so on. To ensure DevOps efficiency, they should be managed and be easily accessible to all stakeholders (if required). Otherwise, chaos is inevitable, sooner or later.
That being said, you should build a proper infrastructure to govern your tools, services, and resources in advance, well before you’ll need it.
There are many tools to do that. The important thing to bear in mind, however, is that you need to track, secure, manage, and govern (yes, you need to have policies in place about who and when can access this or that tool) your infrastructure elements in one directory. So choose the tools wisely.
Don’ts — What to Avoid in DevOps at All Costs
1. Don’t Start It All From Scratch
DevOps is a practice and culture with its own rules, principles, and best practices. However, they aren’t set in stone. Throwing your team’s experience in the dumpster for the sake of following what other organizations do is just stupid.
DevOps isn’t about starting it all from scratch. Just the opposite! Kick off your DevOps journey based on routines you already have in place. Most likely, they aren’t perfect, but you can always build better practices on top of them, rather than upsetting the applecart for nothing.
Bear in mind that people always resist change. Don’t believe anybody who says otherwise. Thus, improve practices that you already have gradually. By doing so, you’ll avoid the unnecessary amounts of dissatisfaction caused by disruption and distraction.
2. Don’t Oversell Automation
"What? You’ve just rambled on about how important it is…"
Yes, I know. However, automation is only a part of DevOps, not the entire practice, and you should approach it carefully. As I mentioned above, you need to automate processes that are simple and free of errors, but that’s not all. You shouldn’t over- and under-automate, which basically means that you have to understand your own requirements for development, testing, and deployment.
You should pay close attention to the tools you choose for automation and diligently train employees who will use these tools in DevOps, too.
Unless you have fully grasped these moving parts, don’t start automating anything. Pushing your software through incorrectly automated pipelines isn’t what you need.
3. Don’t Forget About Security
DevOps is all about speed. Processes are aligned and automated so that software could continuously be delivered to customers. Yet, there’s a considerable flaw here.
While DevOps professionals are OK about automating stuff for the sake of faster releases, infosec teams aren’t. To begin with, security tools are quite complex to automate and fuse into DevOps. Then, DevOps pros deal with cloud and containers, which bring many security concerns and challenges to the table (obviously, not in a positive way).
All of that brings us to DevSecOps, a software engineering practice that introduces security to the earliest stages of the SDLC. Security should become a vital element of your test-driven development and automated testing practices.
Though DevSecOps isn’t that simple to implement, it’s absolutely necessary since one single breach of business- or customer-sensitive data can quickly put the nail in your company’s coffin.
4. Don’t Rely on Outsourcing
While this one is definitely debatable, the recent State of DevOps report by Puppet (I’ve already referenced it above) clearly states the following:
Outsourcing by function is rarely adopted by elite performers and hurts performance. While outsourcing can save money and provide a flexible labor pool, low-performing teams are almost 4 times as likely to outsource whole functions such as testing or operations than their highest-performing counterparts.
I think that’s pretty much self-explanatory.
5. Don’t Demand Immediate Results
The last “don’t” is quite easy to grasp in the context of what has been said above. DevOps demands considerable investments in employee training, practices, processes, tools, and infrastructure overall, and it’s silly to expect immediate results. But some people do.
Approach your DevOps transformation cautiously. Improve what you already have, but don’t invest in what’s already broken. Give people time to adjust and learn. Do DevOps step-by-step and you will ensure a continuous flow of value to customers.
DevOps doesn’t have many easy pickings. Most of its practices are quite complex and require a professional approach. It’s necessary to see the big picture then and apply best practices while avoiding costly errors from the very start of your DevOps transformation.
The dos and don’ts featured in this article are very basic, yet they’ll help you navigate the murky waters of DevOps. Use these tips to accelerate and simplify your organization's shift to DevOps.
Published at DZone with permission of Eugene Duma. See the original article here.
Opinions expressed by DZone contributors are their own.