DevOps











PDF version of this report
You must have Adobe Acrobat reader to view, save, or print PDF files. The
reader is available for free
download
.

DevOps

by Faulkner Staff

Docid: 00021028

Publication Date: 2005

Report Type: TUTORIAL

Preview

Software development has become a concern for a broad array of people –
not just coders, but everyone in IT and even company executives. The best
practices for dealing with this change, dubbed “DevOps,” are still taking
shape. But understanding these practices is critical for companies that
create software, whether it is to be sold or for in-house use.

Report Contents:

Executive Summary

[return to top of this
report]

“DevOps” is an approach to software development that has emerged partly
in response to the advent of large-scale cloud computing.


Related Faulkner Reports
Big Data Technology Tutorial
Agile Software Development
Tutorial
Scrum Project Management
Techniques Tutorial

Currently, there is no agreed upon definition of the concept – no
organization owns the term – but it commonly refers to development
philosophies that encourage tight collaboration among all technical
personnel as well as executives; the frequent releasing and testing of
software updates; the automation of processes; and a culture that accepts
problems as inevitable.

While the definition of DevOps remains unsettled, the trends behind
it are clearly visible. The shift toward delivering software over the
cloud has dramatically changed the way that applications are being
developed and deployed. And that change is affecting many types of
organizations and many departments within them. An organization’s
ability to adjust depends on how well it understands its own needs – some
may not adopt DevOps and some may use only parts of it. For those that
decide to fully embrace the concept, planning carefully and keeping an eye
on emerging best practices are crucial.

Description

[return to top of this
report]

The term “DevOps” refers to a philosophy of software development that is
practiced widely today, notably by some of the most influential companies
in technology. This philosophy has developed organically rather than being
rigidly defined by a single organization, so it lacks a universal
definition. The most basic definition is that it is the tighter
integration of software DEVelopment and IT OPerationS. But the term has
taken on a much broader meaning, even encompassing ideas about management
styles and corporate cultures.

While a standardized definition has yet to emerge, DevOps is commonly
thought to entail the following:

  • Increased Collaboration – Tighter, more routine
    collaboration is encouraged not only between development and operations
    but also among other business functions, including executives. Software
    development is no longer seen as simply a technical issue. Instead, it
    is also a strategic concern.
  • Continuous Deployment – DevOps is designed
    particularly for services like Netflix and Facebook, which update
    software almost daily.
  • The Use of Agile and Lean Development Methods
    Agile development is an approach that emphasizes creating software in
    small steps and having team members communicate frequently. (For more
    information on agile development, see the Faulkner report “Agile
    Software Development.”1) DevOps also makes frequent use of
    lean development, which is a philosophy similar to agile.
  • An Emphasis on Ongoing Feedback and Testing
    Providers of cloud services get constant data about how their software
    is being used and how it is performing. This “Big Data” is then used to
    make regular updates of the software. The size of some of the leading
    cloud services makes this data highly valuable in addition to
    highly complex to manage and use.
  • A Culture That Accepts Failure – DevOps considers
    problems in the development process to be inevitable, so it encourages
    managers and teams to accept problems and not to blame individual team
    members.
  • Extensive Use of Automation – DevOps aims to
    automate many parts of development, testing, and deployment, often with
    tools from organizations like Chef or Puppet. As explained by
    Amazon’s Ian Massingham, automation supports continuous deployment
    practices by yielding “deterministic and reproducible results.”2
    Because of this, Massingham says, “You can step up the beat rate at
    which you deploy your software.”

DevOps has emerged as cloud computing has become widespread. The constant
and pervasive connectedness of cloud environments enables software to be
updated continually rather than in large, occasional releases. And today’s
Big Data tools provide constant feedback about the performance of cloud
applications, which helps to drive updates. An example of how a cloud
company uses DevOps can be seen in a case study of Netflix, which is one
of the largest and most committed users of the concept. The study, by C.
Aaron Cois of Carnegie Mellon University’s Software Engineering Institute,
explains that if one part of the movie streaming service suffers a
problem, then only that one part will be taken down and the rest of the
service is unaffected. For example, a list of recommended movies might
disappear temporarily while other features function as usual. “To achieve
this result, Netflix dramatically altered their engineering process by
introducing a tool called Chaos Monkey, the first in a series of tools
collectively known as the Netflix Simian Army,” Cois says.3
“Chaos Monkey is basically a script that runs continually in all Netflix
environments, causing chaos by randomly shutting down server instances.
Thus, while writing code, Netflix developers are constantly operating in
an environment of unreliable services and unexpected outages. This chaos
not only gives developers a unique opportunity to test their software in
unexpected failure conditions, but incentivizes them to build
fault-tolerant systems to make their day-to-day job as developers less
frustrating.”

In addition to better accommodating large-scale cloud computing, DevOps
can do the following:

  • Put the focus on business goals
  • Increase deployment speeds
  • Reduce failure rates
  • Accelerate the speed of recovery after failures
  • Make more efficient use of developer time
  • Lead to better job satisfaction among developers

Current View

[return to top of this
report]

The Core DevOps Philosophy

DevOps is today considered a fundamental best practice for software
development among many of the most influential technology players. Leading
cloud-based services companies like Netflix and Amazon have made it a
centerpiece of their approach, and traditional software companies like CA
and Microsoft have pushed to make their offerings more compatible with it.

The broad adoption of DevOps has also created confusion, however. It can
sometimes be difficult to distinguish the full vision of DevOps from more
traditional practices that are being branded as it. “The commercial
marketing machine has taken over ownership of the term, bending it to
their needs,” says Daniel Greene of software company 3Pillar Global.4
The looseness with which some people use the term may prevent or delay a
more standardized definition from emerging, but there is fairly wide
agreement on the basic elements of DevOps.

Common Tools

While no single set of products defines DevOps or is required for it,
certain tools have become popular among practitioners. Perhaps the most
common include the following:

  •  Ansible
  • Atlassian
  • Chef
  • Consul
  • Docker
  • Git
  • Gradle
  • Jenkins
  • Kubernetes
  • Nagios
  • New Relic
  • Prometheus
  • Puppet
  • Rundeck
  • Slack
  • Vagrant

This is just a small list of the tools being used and new ones will
continue to emerge. Major companies like VMware have released DevOps
products (vRealize Codestream), and there are numerous free and low-cost
tools. It is unclear at this time whether the industry will consolidate
around the tools that are popular today, whether different tools will
become de facto standards, or whether a wide variety of tools will be used
without significant consolidation occurring. Some cloud hosts, such as
market leader Amazon Web Services, also offer DevOps utilities. Given how
many online services use Amazon’s cloud hosting, features that are built
directly into platforms are likely to be among the most commonly used
tools.

Software Development Practices

The use of DevOps has helped to encourage the creation of a new type
of agile development, the Scaled Agile Framework (SAFe). Other forms of
agile development, like the popular Scrum, are designed to be used by
small development teams. But SAFe, which is designed and owned by the
company Scaled Agile, extends agile principles to teams of the size that
maintain large cloud services. Whereas a traditional scrum team typically
has five to nine members, a SAFe team might have hundreds or more than a
thousand people.5

There is also an approach called “Scrum of Scrums,” which is another way
to apply agile methods to larger teams. This approach is actually a much
more popular scaling method than SAFe, according to VersionOne’s “State of
Agile” report.6

And DevOps is not only relevant to companies that make commercial
software or even those that sell any type of technology. Software
development has become a common practice in many types of companies, which
are also being influenced by new best practices.

Outlook

[return to top of this
report]

The practice may be growing more standardized. For example Red Hat has
launched several exams that “demonstrate expertise in technologies closely
associated with DevOps”:

  • Developing Containerized Applications
  • OpenShift Enterprise Administration
  • Cloud Automation with Ansible
  • Managing Docker Containers with RHEL Atomic Host
  • Configuration Management with Puppet

People who pass all of these tests will earn the designation Red Hat
Certified Architect (RHCA): DevOps. Describing the motive behind the
creation of this certification, Ken Goetz of Red Hat said, “Our goal with
this new RHCA concentration is to offer a way for employers to validate
these critical open source skills, and in the process, further enable
enterprises to accelerate application delivery.”7

The effect of this standardization may be that the term “DevOps” comes to
refer to specific technologies rather than to generally defined concepts
and processes. The term is still relatively new, so its meaning is likely
to change in the coming years and even months. But the processes and ideas
to which the term refers have been maturing and becoming widespread for
many years. So even though a precise definition of the term hasn’t been
universally agreed on, many of the core concepts and the reasons behind
them are commonly accepted and well developed.

Recommendations

[return to top of this
report]

Perform a Self Evaluation

A good starting point for organizations considering DevOps is a self
evaluation. Different organizations will apply DevOps in different ways,
and some might not find the approach suitable at all. Some of the factors
to consider include:

  • The size of the user base
  • The size of the development team
  • The frequency of deployments
  • How extensively the cloud is used as a platform

Depending on the self evaluation, some development teams may simply adopt
agile methods or use a framework like ITIL rather than fully embracing
DevOps.

Plan the Implementation Carefully

There isn’t a single, universally accepted blueprint for implementing
DevOps, so organizations need to handle most of the planning themselves.
One key decision to make is what metrics to measure. Discussing this,
IBM’s Payal Chakravarty recommends measuring the following:

  • Deployment frequency
  • Change volume
  • Lead time
  • Percentage of failed deployments
  • Mean time to recovery
  • Customer ticket volume
  • [Percentage] Change in user volume
  • Availability
  • Performance (response time)8

Another key decision is what tools to use. But selecting tools is only
part of the planning process.

“As with anything that hinges on culture … it can be too easy to
slap together a few tools, sprinkle in new processes, and call yourself a
DevOps-fueled organization,” writes Adam Bertam.9 “After all,
saying that your company embraces DevOps and regularly practices DevOps
techniques is popular nowadays, and it can serve as great PR for bringing
in great talent to your team. But in truth, many companies – and technical
recruiters – that are proclaiming their devotion to DevOps from the
hilltops aren’t really DevOps organizations.”

Enterprises that have long used traditional development approaches may
find switching to DevOps difficult. “[E]stablished enterprises have a
challenge that the DevOps innovators did not,” says a white paper from
Chef Software.10 “They have legacy workloads and regulatory
requirements to consider. Migrating these workloads to a flexible
technology stack must be done in a way that reduces risk, ensures
stability and guarantees regulatory compliance. In addition, established
enterprises have existing processes for managing change, that often
involves many manual steps. These processes must be replaced by a more
automated and collaborative workflow.”

Monitor Trends

After implementing DevOps, organizations would be wise to keep a close
eye on how the concept is evolving. DevOps is not imposed from the top
down. It is not officially defined or controlled by anyone. Instead, it is
defined by the various ways that software development is actually being
done. Following the activities and publications of industry leaders can
help in identifying changing best practices, which tools are most popular,
and what metrics are commonly used to evaluate development projects.

According to
TechRepublic

, during 2020, there will be a focus on
end-to-end lifecycle management, a SQL comeback, and consolidation around
a specific service mesh implementation. Additionally, TechRepublic
reports that organizations are looking to validate and optimize the value
that their DevOps tooling provides at scale. It predicts that the
developer skills gaps will close, and there will be a faster adoption rate
of new technology. Low-code will be overtaken by no-code solutions, and a
container-first strategy will be a priority.11

References

[return to top of this
report]

1 Geoff Keston. “Agile Software Development.”
Faulkner
Information Services
. November 2018.

2 Ian Massingham. “Enabling Business Agility: Automating
Deployments.” Amazon. August 27, 2014.

3 C. Aaron Cois. “DevOps Case Study: Netflix and the Chaos
Monkey.” Carnegie Mellon University Software Engineering Institute:
DevOps Blog
. April 30, 2015.

4 Daniel Greene. “What Is DevOps?” TechCrunch. May
15, 2015.

5 Matthew Heusser. “Introducing the Scaled Agile Framework.” CIO.
Jun 17, 2015.

6 “2015 State of Agile.” VersionOne. 2016.

7 “Red Hat Introduces New DevOps Training and Certifications.”
Red Hat. April 5, 2016.

8 Payal Chakravarty. “The DevOps Scorecard.” DevOps.com.
November 10, 2014.

9 Adam Bertram. “Seven Signs You’re Doing DevOps Wrong.” InfoWorld.
December 7, 2015.

10 “Automation and the DevOps Workflow.”
Chef Software.
October 2015.

11 Teena Maddox. “11 DevOps Trends That Will Matter Most in
2020.”

TechRepublic
. January 21, 2020.

[return to top of this
report]

[return to top of this
report]