You are here

A software engineer's approach to streamlining DevOps processes

public://pictures/Kurt-Collins .jpg
Kurt Collins, Developer Evangelist,
The Journey to Enterprise‐Scale DevOps: Becoming DevOps Determined

Thanks to the rise of DevOps, the landscape of tools, technologies, and processes software engineers must contend with has changed dramatically. Suddenly, technologies like Docker, Jenkins, Chef, and Kubernetes are all the rage, and it seems as though everyone is hiring DevOps engineers to optimize their software deployment processes. But even as DevOps practices become ubiquitous, optimizing those processes remains a work in progress. Here are the seven tips I've followed for streamlining DevOps processes.

  1. Find the root cause of a breakdown. Processes will break—it's inevitable. While your company (or client) mainly cares about getting things back up and running quickly, it's equally important to discover the root cause. Rather than resolving only the immediate issue at hand, make sure you address all the issues that will inevitably follow by identifying and addressing the fundamental reason everything broke down.
  2. Isolate the issue. Applications today are systems with complex integrations that spread out across intricate architectures. When problems arise in an application, it's imperative to determine the contributing factors and isolate each. By doing so, you'll better understand exactly what's going on in the affected systems, leading to a faster resolution.
  3. Prioritize tickets through context. Every organization has some kind of ticketing system, whether it's a Google spreadsheet or a Bugzilla instance. Prioritizing tickets can be difficult at times, but it generally requires juggling between urgent tickets prioritized by the origin (an important customer) or by how quickly the problem needs to be resolved. A good DevOps engineer learns how to juggle priorities based on urgency, business impact, and context.
  4. Confirm application status in real time. We live in a world where you can get real-time information on the status of a particular application, and every software engineer should take full advantage of this capability. Just because a worker queue was running slowly an hour ago doesn't mean it's running slowly now. Make sure you have the most up-to-date information on an application before proceeding with any fixes.
  5. Check. Double check. And then check again. If everything appears to be working, go back and double check it. If you've confirmed that everything is working, check your monitoring system to make sure it's not malfunctioning. There's nothing wrong with triple-checking.
  6. The user experience is everything. Manage expectations accordingly. Maintenance is a fundamental requirement in DevOps. Infrastructure upgrades and code deployments should be a regular thing, and communication should be of primary importance when you expect downtime. Let the user know about scheduled downtime as soon as possible. Planning for maintenance, with or without downtime, requires considering the end user experience throughout the process.
  7. Zoom in, but don't forget to zoom out. DevOps engineers spend a lot of time in the weeds, but it's important to always step back and look at the 10,000-foot view. For example, modifying small aspects of the application's infrastructure can have magnified effects on performance and stability. Every time you make a change, monitor its impact and make adjustments as needed.

These are just some tips that have made my life better in the DevOps world. But I'd love to hear your ideas for streamlining DevOps processes. Sound off in the comments below if you think I've missed anything.

[ Webinar: Paving the Last Mile to Production: Putting the "O" in DevOps ]

[ Report: Gartner Magic Quadrant for Software Test Automation ]