You are on page 1of 11

What is DevOps?

DevOps is an evolving philosophy and framework that encourages

faster, better application development and faster release of new or

revised software features or products to customers.

The practice of DevOps encourages smoother, continuous

communication, collaboration, integration, visibility, and

transparency between application development teams (Dev) and

their IT operations team (Ops) counterparts.


This closer relationship between “Dev” and “Ops” permeates every

phase of the DevOps lifecycle: from initial software planning to

code, build, test, and release phases and on to deployment,

operations, and ongoing monitoring. This relationship propels a

continuous customer feedback loop of further improvement,

development, testing, and deployment. One result of these efforts

can be the more rapid, continual release of necessary feature

changes or additions.

Some people group DevOps goals into four categories: culture,

automation, measurement, and sharing (CAMS), and DevOps tools

can aid in these areas. These tools can make development and

operations workflows more streamlined and collaborative,

automating previously time-consuming, manual, or static tasks

involved in integration, development, testing, deployment, or

monitoring.

Why Does it matter?


Along with its efforts to break down barriers to communication and

collaboration between development and IT operations teams, a core

value of DevOps is customer satisfaction and the faster delivery of

value. DevOps is also designed to propel business innovation and

the drive for continuous process improvement.

The practice of DevOps encourages faster, better, more secure

delivery of business value to an organization’s end customers. This

value might take the form of more frequent product releases,

features, or updates. It can involve how quickly a product release or

new feature gets into customers’ hands -all with the proper levels of

quality and security. Or, it might focus on how quickly an issue or

bug is identified, and then resolved and re-released.

Underlying infrastructure also supports DevOps with seamless

performance, availability, and reliability of software as it is first

developed and tested then released into production.

DevOps Methods:
There are a few common DevOps methods that organizations can

use to speed and improve development and product releases. They

take the form of software development methodologies and

practices. Among the most popular ones are Scrum, Kanban, and

Agile:

● Scrum. Scrum defines how members of a team should

work together to accelerate development and QA projects.

Scrum practices include key workflows and specific

terminology (sprints, time boxes, daily scrum [meeting]),

and designated roles (Scrum Master, product owner).

● Kanban. Kanban originated from efficiencies gained on

the Toyota factory floor. Kanban prescribes that the state

of software project work in progress (WIP) be tracked on a

Kanban board.

● Agile. Earlier agile software development methods

continue to heavily influence DevOps practices and tools.

Many DevOps methods, including Scrum and Kanban,

incorporate elements of agile programming. Some agile

practices are associated with greater responsiveness to

changing needs and requirements, documenting


requirements as user stories, performing daily standups,

and incorporating continuous customer feedback. Agile

also prescribes shorter software development lifecycles

instead of lengthy, traditional “waterfall” development

methods.

DevOps Toolchain:

Followers of DevOps practices often use certain DevOps-friendly

tools as part of their DevOps “toolchain.” The goal of these tools is

to further streamline, shorten, and automate the various stages of

the software delivery workflow (or “pipeline”). Many such tools also

promote core DevOps tenets of automation, collaboration, and

integration between development and operations teams. The

following shows a sample of tools used at various DevOps lifecycle

stages.

● Plan. This phase helps define business value and

requirements. Sample tools include Jira or Git to help

track known issues and perform project management.


● Code. This phase involves software design and the

creation of software code. Sample tools include GitHub,

GitLab, Bitbucket, or Stash.

● Build. In this phase, you manage software builds and

versions, and use automated tools to help compile and

package code for future release to production. You use

source code repositories or package repositories that also

“package” infrastructure needed for product release.

Sample tools include Docker, Ansible, Puppet, Chef,

Gradle, Maven, or JFrog Artifactory.

● Test. This phase involves continuous testing (manual or

automated) to ensure optimal code quality. Sample tools

include JUnit, Codeception, Selenium, Vagrant, TestNG, or

BlazeMeter.

● Deploy. This phase can include tools that help manage,

coordinate, schedule, and automate product releases into

production. Sample tools include Puppet, Chef, Ansible,

Jenkins, Kubernetes, OpenShift, OpenStack, Docker, or

Jira.
● Operate. This phase manages software during

production. Sample tools include Ansible, Puppet,

PowerShell, Chef, Salt, or Otter.

● Monitor. This phase involves identifying and collecting

information about issues from a specific software release in

production. Sample tools include New Relic, Datadog,

Grafana, Wireshark, Splunk, Nagios, or Slack.

DevOps practices:

DevOps practices reflect the idea of continuous improvement and

automation. Many practices focus on one or more development

cycle phases. These practices include:

● Continuous development. This practice spans the

planning and coding phases of the DevOps lifecycle.

Version-control mechanisms might be involved.

● Continuous testing. This practice incorporates

automated, prescheduled, continued code tests as

application code is being written or updated. Such tests

can speed the delivery of code to production.


● Continuous integration (CI). This practice brings

configuration management (CM) tools together with other

test and development tools to track how much of the code

being developed is ready for production. It involves rapid

feedback between testing and development to quickly

identify and resolve code issues.

● Continuous delivery. This practice automates the

delivery of code changes, after testing, to a preproduction

or staging environment. A staff member might then decide

to promote such code changes into production.

● Continuous deployment (CD). Similar to continuous

delivery, this practice automates the release of new or

changed code into production. A company doing

continuous deployment might release code or feature

changes several times per day. The use of container

technologies, such as Docker and Kubernetes, can enable

continuous deployment by helping to maintain consistency

of the code across different deployment platforms and

environments.

● Continuous monitoring. This practice involves ongoing

monitoring of both the code in operation and the


underlying infrastructure that supports it. A feedback loop

that reports on bugs or issues then makes its way back to

development.

● Infrastructure as code. This practice can be used

during various DevOps phases to automate the

provisioning of infrastructure required for a software

release. Developers add infrastructure “code” from within

their existing development tools. For example, developers

might create a storage volume on demand from Docker,

Kubernetes, or OpenShift. This practice also allows

operations teams to monitor environment configurations,

track changes, and simplify the rollback of configurations.

Benefits of DevOps:

DevOps proponents describe several business and technical

benefits, many of which can result in happier customers. Some

benefits of DevOps include:

● Faster, better product delivery

● Faster issue resolution and reduced complexity

● Greater scalability and availability


● More stable operating environments

● Better resource utilization

● Greater automation

● Greater visibility into system outcomes

● Greater innovation

History of DevOps:

Many DevOps methods for streamlining software development and

deployment have an early basis in agile software development and

lean programming. But DevOps originally evolved from several

grassroots movements to harmonize the activities of developers and

their operations team counterparts.

The early 2000s saw the need to maintain availability of popular

websites such as Google and Flickr against massive hits. This need

led to the use of software reliability engineers (SREs) — operations

people working closely with developers to ensure that the sites

would keep running after code was released into production.


In 2009, Flickr engineers John Allspaw and Paul Hammond

presented their own DevOps-like methodology at a conference.

Their presentation was entitled “10+ Deploys per Day: Dev and Ops

Cooperation at Flickr.” The same year, Patrick Debois organized the

first “DevOps Day” in Belgium. A #DevOps hashtag was also

incorporated and gained momentum as more DevOps Days were

held around the world.

Over the coming years, industry and open-source tools and

frameworks were developed and proposed to further the goals of

DevOps.

You might also like