What is DevOps?
DevOps is a popular software development and deployment model that combines "development"
and "operations". It blends rapid, responsive software development with the reliable IT operations
necessary to deploy and manage applications in production. The primary goal of DevOps is to
accelerate the development cycle and continuously deliver quality software. It aims to eliminate the
traditional "silo" between development and operations teams, thereby increasing developers'
responsibility for software deployment and maintenance.
Key characteristics of DevOps include:
• An iterative approach to software development, where teams work on projects in short, frequent,
and repeating cycles, building software incrementally. This is in contrast to the traditional waterfall
model, which can take years to complete.
• A focus on increasing developer responsibility for software deployment and maintenance,
promoting a culture where developers understand "Ops responsibility," or "keeping the lights on".
• Adherence to quality standards during coding, such as coding style rules and uniform variable
and file naming conventions.
The Cyclical Stages of DevOps
DevOps is a cyclical process involving an established series of eight steps that are repeated in
short, frequent development cycles:
1. Plan: Organizations gather requirements, set program design elements, and select new features
and functionalities.
2. Code: Developers write code, adhering to established quality standards like coding style rules and
naming conventions.
3. Build: The code, including new code and existing libraries, is converted into machine-executable
files.
4. Test: The executable code is tested for stability, functionality, performance, and security.
5. Release: Builds that successfully pass testing become release candidates, ready for deployment
to production if desired.
6. Deploy: Appropriate and necessary release builds are deployed to production. This involves
provisioning and configuring on-premises or cloud infrastructure to host the selected release.
7. Operate: IT operations staff take steps to run the software in production, including creating virtual
instances, copying code, replicating databases, and performing cutovers from prior versions to the
newest one.
8. Monitor: Operations teams monitor deployed software to gather metrics on use and performance.
This data helps identify ongoing problems and informs corrections for subsequent iterations.
Relevant metrics should also work for new releases.
Benefits of DevOps
The DevOps model helps businesses deliver higher-quality, competitive software faster than
traditional methods. Key advantages include:
• Faster Time to Market: Unlike waterfall development that can take years, DevOps uses much
shorter cycles, with high-performing teams deploying code multiple times per day. This allows new
features, functions, and fixes to reach users sooner, leading to timely user experience (UX) feedback
and quick responses to flaws or changing market demands.
• Reduced Risk: Short, iterative cycles allow developers to release features regularly, incorporate
bug fixes quickly, and experiment with new features with minimal impact on schedules or budgets.
Flaws are caught early, and new approaches can be tried with less risk.
• Increased Collaboration: DevOps aims to break down traditional silos between development and
operations teams, fostering effective collaboration across the organization. This ensures successful
development cycles and meets stakeholder requirements, benefiting both developers and operations
staff, with operations employees gaining insight into development work and potential career
opportunities in product management.
• Efficiency: Teams perform work faster and more successfully, partly because individual iterations
can "fail occasionally." DevOps tool sets also enhance efficiency through automation and
interoperability.
DevOps vs. Agile
Both DevOps and Agile software development paradigms aim to accelerate development and
improve software quality through frequent and iterative improvements. However, there are subtle
differences:
• DevOps emphasizes a collaborative relationship between developers and operations staff
and typically involves fine-grained iterations with numerous commits and builds per day. It can be
seen as the Agile method of development combined with automated deployment.
• Agile does not directly overlap with operations; instead, it focuses on collaboration among
numerous smaller development teams. Its iterative sprints help these teams focus, adapt to
changing requirements, and manage complex development schedules.
Drawbacks and Challenges of DevOps
Despite its benefits, DevOps presents potential disadvantages and challenges:
• Lack of Meaningful Metrics: Success is not automatic. Organizations need meaningful metrics to
track progress, measure efficiency, and identify improvement opportunities. Without these, DevOps
initiatives can fail. Key metrics include deploy frequency, bug rates, and completed cycles versus
deployments (DORA metrics).
• High Costs: Costs extend beyond financial investments in new tools, impacting organizational
structure, changing traditional roles, and requiring significant time and effort for implementation and
management.
• Added Complexity: The additional tools and processes required can sometimes outweigh
efficiency gains, potentially creating new layers of bureaucracy. Teams might struggle with the
inertia of previously established development paradigms.
• Unrealistic Goals: DevOps initiatives can fail if goals are unrealistic, such as expecting immediate
fixes for all challenges, too much too soon, or guaranteed market success. It takes time to yield
benefits, so modest and reasonable goals, starting with pilot projects, are recommended.
• Organizational Resistance: Adoption might spark resistance due to deeply embedded corporate
cultures, legacy systems, attempts to build overly complex applications, and how different groups
work within a firm. An email notification system's failure, for instance, may have been a casualty of
not operating in a DevOps culture.
DevOps Tools
DevOps relies on various tools to automate and manage its processes. Examples mentioned
include:
• Jira, Chef, Jenkins are cited as common tools.
• Chef is primarily a configuration management tool used for automating the deployment and
management of infrastructure and software. It is generally associated with the "Ops" side of DevOps.
• Jenkins is a Continuous Integration/Continuous Delivery (CI/CD) tool used to automate the
build, test, and deployment of applications. It promotes regular integration of code changes and
frequent software releases, making it more aligned with the "Devs" side.
• Puppet is another tool that can even manage the entire CI/CD toolchain.
To mitigate the risks in rolling out DevOps, using pilot projects with a high operations
component to test the methodology first is advised. Once the value is proven, DevOps can be
gradually extended to more complex projects.