DevOps Guide

How to Achieve DevOps Success

It can be tempting to rush to implement a DevOps framework, especially if
your current software development process isn't functioning as well as you'd
like. Resist this impulse—as Greg Jacoby says, “Because DevOps is
a conceptual framework, if you don't set it up properly, it's useless.”
If you want DevOps to work in the long run, you have to ensure the changes
you make are sustainable. Here's how.



First Things First

Before jumping in, it's important to evaluate whether DevOps is the right
solution for your organization. “Sometimes your use case doesn't match
with what DevOps has to offer,” says Gaurav Murghai. “DevOps is
great for projects where you're consistently rolling out changes and updates,
but it's not as suited for maintaining a piece of software that you're not
changing in any meaningful way.”

If you determine that DevOps is the right approach, start asking some
questions about your system and identifying your pain points. You might think
about:

  • What are you trying to accomplish?
  • What are the stages in your current software
    development life cycle? Who is responsible for each stage?
  • In what ways does your production process
    help you achieve your goals? In what ways does it prevent you from
    accomplishing them?
  • What barriers to productivity are you
    facing?
  • In an ideal world, what would your software
    development life cycle look like?

Understanding what is and isn't working in your current system will help
you define your DevOps goals and guide your implementation process.



Pick One Project

The easiest way to begin implementing DevOps is to start small—pick
one project or one development sub-team to start experimenting with DevOps
processes. “Starting with just one project allows you to get a feel for
DevOps and gradually scale it up,” says Greg Jacoby.

And don't rush to buy a bunch of shiny new tools—at least not yet.
Give yourself a chance to experiment using the tools you have. This will
allow you to identify any gaps and prioritize purchasing software that you'll
use. You can also try out open-source or
freemium software
to test what works well for your team before committing to any purchases.

DevOps is, most importantly, a mindset change, so the most important thing
is to start thinking as one team. Define common goals and encourage everyone
to be open to new responsibilities and ongoing learning as you begin your
experiment.



Visualize Your Team's Work

To improve your workflow, you first need to understand it. You can do this
by visualizing your projects—identifying the stages in your software
development life cycle and observing work as it flows through them.

Here's where you should consider investing in a project management tool if
you're not using one already. If your project is small, you might be able to
get away with sticky notes or colored index cards on a wall, but this only
works well if your team all work from the same location. At best, it's a
temporary solution that won't be able to scale. Project management tools like
Backlog enable you to track project progress, log issues, and perhaps most
importantly, visualize your team's work through Kanban boards, Gantt charts,
and burn-down charts. (And did we mention that you can
get started with
Backlog for free?)



Remove Constraints and Bottlenecks

Once you've logged and visualized your projects, take some time to observe
your progress. After you've collected a few weeks' worth of data, you can
begin to think critically about your process: Where is work being held up?
What is causing these bottlenecks? What actions might you be able to take to
minimize them?

One frequent cause of bottlenecks? A lack of slack time. People might
think they're working at their most productive when they're constantly
preoccupied with projects because they feel busy, but that's not true. Staff
who are too busy cause slowdowns because they aren't ready to start
completing new work when it's handed off to them. If your team faces frequent
bottlenecks, identify where these constraints are happening and think about
how you can build in more time between handoffs.



Standardize and Automate

Another way to improve flow, increase cycle speed, and reduce error is to
standardize and automate recurring tasks. This is particularly important
because, as
Netflix notes, “Ownership of the full development
life cycle adds significantly to what software developers are expected to do.
Tooling that simplifies and automates common development needs helps to
balance this out.”

Remember the “pets” vs. “cattle” server models?
One big advantage of treating your servers like cattle is that the process of
configuring new ones is easy and repeatable. People who played no role in
setting the initial server up can look at the code to understand what the
infrastructure does. If errors occur, they are consistent across all devices,
instead of unique to a particular machine—making them easier to
fix.

Think about other recurring tasks that you can automate. You should try to
script repetitive tasks wherever possible to free up your engineers to solve
more complex problems.



Keep Learning

DevOps is iterative. The goal is to work in short cycles so you can get
feedback quickly and continuously improve not only your product but also your
process. The longer you do DevOps, the smoother your process becomes.

Push yourself to keep learning new skills. Never used a scripting language
before? Now is a great time to learn. “Even if you don't need it to do
your job, knowing a scripting language can help you with so many small
tasks,” says John Debs. And that doesn't just apply to
scripting—stay open-minded and make ongoing learning an integral part
of your DevOps practice.



Possible DevOps Pitfalls

Even though the results are worth it, the path to DevOps isn't always
smooth. Here are some of the most common challenges that teams implementing
DevOps face and some thoughts on how to fix them.

1. Reluctance to Change

Developers can sometimes be a little territorial—having to share
responsibilities that were previously their domain alone can take some
getting used to.

The Fix: Emphasize knowledge sharing. The more everyone learns
together, the easier collaboration becomes.

2. The Wrong Tools

“Having the right toolset is important,” says Gaurav Murghai.
“It drives the team's enthusiasm and willingness.” The tools you
think will work at the beginning of your DevOps journey might not be the best
fit for your team—and that's okay. It's all part of the process of
learning and improving.

The Fix: Take note of your pain points. What is your team finding
frustrating about your current tools? Look for software that fills those gaps
and take time to evaluate which solution(s) fit your needs best—not
which one is cheapest or flashiest.

3. Technical Debt

It can be so tempting to make a quick, easy fix and tell yourself you'll
go back to it later. But this is contrary to the ethos of DevOps—all it
ends up doing is piling up more work for yourself and slowing down processes
in the future.

The Fix: As good as your intentions might be, you have to be
realistic. “You're never going to have time to go back and fix it
later,” says Daphne Reed. “Do it right the first time.”

4. Cost

DevOps makes it extremely easy to harness more computing power in seconds.
But this might mean that you spend more on server space than you
intend—or have budget for. Even though these are virtual machines, they
still cost real money.

The Fix: Keep a careful eye on your server costs to avoid
unexpectedly high bills for your provider.



Conclusion

“People don't want to give up what makes them valuable,” says
John Debs. Remember the systems administrator from the introduction? He
wasn't patching machines individually because he wanted to—he was
reluctant to give up the very quality that made him valuable to the
company.

DevOps may provide the solution: While the role of the traditional systems
administrator has all but faded away, many former sysadmins have moved into
development roles, adopting new skills while sharing their operations
expertise. DevOps practices promote knowledge sharing, so the whole
engineering team becomes more valuable over time. That's a win for
everyone.

Ready to start implementing DevOps?

Get started with Backlog, the all-in-one project management app for task
management, bug tracking, and version control. Effortlessly collaborate with
Wikis to capture your project details, custom fields to personalize your
workflow, and file sharing. Backlog's built-in Gantt charts, burndown charts,
and Kanban-style boards make it easy to visualize your project progress,
allowing you to quickly identify constraints and optimize your workflow.
Deploying small, frequent changes is simple, too—Backlog is fully
integrated with Git and SVN so you can manage source code right next to your
projects. With mobile apps for iOS and Android, you'll never be out of the
loop, even when you're on the go. Try it for
free.