What Is DevOps?
Lesson 4 of 27
DevOps is the combination of cultural philosophies, practices, and tools that
increases an organization’s ability to deliver applications and services at high
velocity: evolving and improving products at a faster pace than organizations
using traditional software development and infrastructure management
processes. This speed enables organizations to better serve their customers
and compete more effectively in the market.
DevOps emphasizes better collaboration and efficiencies so teams can
innovate faster and deliver higher value to businesses and customers.
An infinity loop formed by the software lifecycle stages is a common
depiction of the ongoing collaboration and efficiencies suggested by DevOps.
DevOps is short for Development (Dev) and Operations (Ops). Dev are the
people and processes that create software. Ops are the teams and processes
that deliver and monitor the software.
Developers change things quickly, release often, and measure success by
the rate of delivery. Operations are driven by maintaining stability of the
application. Frequent releases are a cause for concern of the stability and
reliability of the application on the supported platforms, especially during
high network traffic.
DevOps brings together formerly siloed roles (development, IT operations,
quality engineering, and security) to optimize the productivity of developers
and the reliability of operations.
DevOps is a combination of:
Cultural philosophies for removing barriers and sharing end-
to-end responsibility
Processes developed for speed and quality, that streamline
the way people work
Tools that align with processes and automate repeatable
tasks, making the release process more efficient and the
application more reliable
Improving efficiency and predictability of the application and services.
As you go through the course, keep in mind that teams practice DevOps to
increase innovation and agility, improve quality, release faster, and lower
cost. DevOps improves delivery efficiency and predictability of the
application and services.
Problems with Traditional
Development Practices
Lesson 5 of 27
Traditional ways of developing software have proven slow and inefficient,
and fail to support teams' efforts to quickly deliver stable, high-quality
applications. Challenges of Waterfall development, monolithic applications,
manual processes, and siloed team structures cause bottlenecks and delays.
Waterfall development projects are slow, not iterative, resistant to
change, and have long release cycles. Some reasons for this include:
Requirements are rigid, set at project start, and will likely not change.
Development phases are siloed, each starting after the previous phase has
ended. Each phase is supported by highly specialized teams.
Hand offs from one phase to the other are long, often requiring teams to switch
tools and spend time clarifying incomplete or ambiguous information.
Testing and security come after implementation, making corrective actions
responsive and expensive.
Development phases supported by siloed and specialized teams cause
delays and are costly.
Monolithic applications have tightly coupled functionality.
Monolithic applications are hard to update and deploy because they:
Are developed and deployed as a unit, so when changes are made, the
entire application must be redeployed
Have tightly coupled functionality, so if the application is large enough,
maintenance becomes an issue because developers have a hard time
understanding the entire application
Are implemented using a single development stack, so changing
technology is difficult and costly
Manual processes throughout the application lifecycle are slow, inconsistent,
and error-prone. For example, manually setting and configuring the
infrastructure is time-consuming. Manually repeating this process is no
guarantee that a step will not be missed. Another example is telling the
developers to make sure their code is thoroughly tested before pushing it.
Even with the best intentions, this manual process is slow, and does not
preclude someone from forgetting a test or two.
Manual processes throughout the application lifecycle are slow, inconsistent,
and error-prone.
Teams supporting the software development lifecycle have traditionally been
siloed. Specialized in their skill set, teams such as business, development,
quality assurance, specialists, maintenance, and operations, have been
separated from each other and require scheduled and rigid hand-offs. Even
though these teams have a common goal of delivering and supporting the
application, they also have their own priorities, tooling, and processes. It is
difficult to achieve efficiencies when project members are reporting to
different units and aimed for different targets.
Why DevOps?
Lesson 6 of 27
Proven success
According to the Accelerate State of DevOps 2019 report, organizations of
any size, and in any industry, can benefit from DevOps. According to the
report, teams who successfully adopt DevOps see shorter delivery cycles,
decreased change failure rates, and improved performance.
Source: Accelerate State of DevOps 2019, DevOps Research and Assessment
(DORA)
The benefits of DevOps
Organizations of all sizes, from small startups to big enterprises, can benefit
from adopting DevOps. Following are some of the main benefits of DevOps.
To learn more choose each numbered marker.
1.
2.
3.
4.
5.
6.
Why do some teams initially resist adopting DevOps?
Reluctance to DevOps adoption is natural because DevOps will bring change
and disrupt the way you work and interact with others. DevOps will have
organizational and team-level impact. To overcome this reluctance, it is
important to understand the value of DevOps, and set realistic expectations
for the teams. To be successful, you need buy-in across the organization and
development teams.