As the name suggests, DevOps is a crossover between “Development” and “Operations”.
To describe it in familiar terms, DevOps is the marriage of “Development” and “Operations” – two conflicting entities bound together to align themselves towards a common good. Just like a husband and a wife, Development, and Operations always desire for different things. For example, Dev wants change and Ops wants stability.
However, by virtue of the marriage, they promote collaboration thereby encouraging potentially radical changes in the organization culture to unify different departments or verticals to work towards a common goal.
“If Ops goes to lunch with Ops and Dev goes to lunch with Dev, a low level of efficiency is a certainty.” And that’s the underlying push for the DevOps movement. Yes, it is not just a concept but a movement, on the cultural as well as the philosophical level, spreading throughout the technical community.
What is DevOps?
DevOps means a lot of different things to many people and that’s where the challenge lies to define and understand DevOps.
On a philosophical level, DevOps is the combination of cultural practices, and tools that enhances the ability of an organization to deliver applications and services at a higher speed. In simple terms, DevOps is about blurring the barriers between two traditionally siloed teams, development, and operations.
DevOps methodology helps organizations evolve and improve products at a faster pace than traditional software development and infrastructure management processes, enabling businesses to compete more effectively in the market.
In a DevOps model, the development and operations teams no longer work in silos, rather they collaborate with each other throughout the entire application lifecycle. Many a time, the teams are merged together, where the engineers and the operations specialists develop a range of skills not limited to a single function.
DevOps inculcates cooperation, wherein developers take on some responsibility for Ops, like performance testing and writing Ops automation code, while the Ops teams get involved in the development process to understand the application requirements to operationalize for a seamless release schedule.
DevOps Process: A Brief History
DevOps is so widespread that it is hard to believe that the bond (i.e. the marriage) had been forged just a few years ago. DevOps is the outcome of the need to keep up with the enhanced software velocity and throughput achieved via agile methods.
It all started with Patrick Debois, a Belgian software development consultant, who wanted to achieve Nirvana in the field of IT; or in more comprehensive terms, he had the goal to learn all aspects of IT.
In 2007, Debois got frustrated by the conflicts between developers and system admins while consulting on a data center migration for the Belgium government. This sowed the seed of the quest to find a solution to drive collaboration between the two teams.
In August 2008, a notice posted by Andrew Shafer about a “birds of a feather” session entitled “Agile Infrastructure”, at the Agile Conference in Toronto caught the attention of Debois. Of course, Debois went to the session being the only attendee. However, Shafer himself did not turn up.
Debois was not ready to give up and he tracked down Shafer and collaborated with him to for a Google group named “the Agile Systems Administration Group.” Inspired by the suggestion of John Allspaw and Paul Hammond of the O’Reilly Velocity 09 conference fame, Debois organized a conference, named DevOpsDays in Belgium.
DevOpsDays opened its doors to developers, system administrators, and other IT tool smiths on October 30, 2009. Later, Debois shortened the name to #DevOps to create a memorable hashtag for Twitter and the movement has been known as DevOps ever since.
Until 2011, the DevOps movement was being sustained by individuals and open source tools. It gained little attention from analysts or vendors. But, the DevOps movement began to emerge as the dark horse.
It started to catch the attention of well-known analysts like Gartner’s Cameron Haight and Jay Lyman from 451 Research. Also, big vendors became inclined to market DevOps. By 2012, DevOps had emerged as a buzzword as DevOpsDays continued to grow.
With the advent of 2014, DevOps made it to the enterprise. Several large companies like LEGO, Nordstrom, Target, etc, embraced the DevOps movement.
Benefits of Implementing DevOps Methodology
The goal of implementing DevOps is to deliver software rapidly and effectively by harnessing collaboration between different departments.
The DevOps methodology basically extends agile development practices by further streamlining the movement of software change through the building, testing, deployment and delivery stages, while empowering cross-functional teams with full ownership of software applications.
To enlist, some of the benefits of DevOps are as follows:
- High Speed
Implementing DevOps enables developers and operations teams to achieve high velocity so that the organization can innovate for customers faster and better adapt to changing markets.
- Rapid Delivery
DevOps practices like continuous integration and continuous delivery automate the software release process, from build to deploy, which increases the frequency and pace of releases enabling the teams to improve the product and fix bugs faster.
The practice of testing and validating each phase besides monitoring the performance in real-time ensure that the quality of application updates and infrastructure changes are maintained so that the product can be reliably delivered at a rapid pace while maintaining a positive user experience.
DevOps promotes automation that helps the developers as well as the operations team to manage complex or changing systems efficiently. This allows the organization to operate and manage infrastructure and development processes at scale.
- Increased Collaboration
Under a DevOps model, developers and operations teams work closely, share responsibilities, and combine their workflows, which in turn reduces inefficiencies and saves time.
Key DevOps Practices
Some of the key DevOps practices that help organizations innovate quicker through automating and streamlining the software development and infrastructure management processes are:
- Continuous Integration
This is a software development practice. In this DevOps practice, developers regularly merge their code changes into a central repository, following which automated builds and tests are run. Continuous integration helps developers find and fix bugs quicker, improve software quality, and reduce the time taken to validate and release new software updates.
- Continuous Delivery
This DevOps practice expands upon continuous integration where all code changes are deployed to a testing environment and/or a production environment after the build stage. In this software development practice, code changes are automatically built, tested, and prepared for a release to production.
- Infrastructure As Code
In this DevOps practice, infrastructure is managed using code and software development techniques, like version control and continuous integration. The API-driven model enables developers and system administrators to programmatically interact with the infrastructure, without the requirement to manually setup and configure resources.
- Communication and Collaboration
Increased communication and collaboration are key DevOps practices. DevOps tools and the automation of the software delivery process physically brings together the workflows and responsibilities of development and operations. The teams also share information and facilitate communication through chat applications or project tracking systems thereby speeding up communication across developers, operations, and other teams.
- Continuous Monitoring and Logging
DevOps methodology implements real-time monitoring and logging practices to see how application and infrastructure performance impacts the end user experience.
Why DevOps Matters?
Prior to DevOps application development, development and operations teams worked in high-walled compartments. Developers were in charge of gathering business requirements for a software program and writing code while a separate QA team tested the program in an isolated development environment.
The deployment teams were further fragmented into separate groups like networking and database. This often resulted in a blame-game situation, wherein each team had opposing goals (unaware of the roadblocks faced by other teams) leading to inefficiency.
DevOps caters to these challenges by setting up collaborative cross-functional teams that share responsibility and accountability for developing the application and maintaining the system that runs the application.
According to the 2015 State of DevOps Report, high-performing IT organizations deploy DevOps 30 times more frequently with 200 times shorter lead times. The report also reveals that these organizations reflect 60 times fewer failures and recover 168 times faster.
With DevOps, professionals working on software development know there might be an odd performance or quality issue whereas the system administrators and the operations team are aware of the development bottlenecks. DevOps teams, regardless of their organizational structure, view the entire development and infrastructure lifecycle as part of their responsibilities.
Transitioning to DevOps requires a change in organizational culture and mindset. However, once you embrace DevOps methodology, you have laid your hands on the winning technology.