What is DevOps? The Complete Guide
DevOps is a software development philosophy that combines software development (Dev) and IT operations (Ops) practices
First and foremost DevOps aims to streamline the software delivery process and also increase software quality through a set of unified practices. Such as continuous integration (CI) and continuous delivery (CD). In fact DevOps is an extension of the Agile software development methodology. In other words Agile focus on the what and DevOps focuses on the how.
The Definition of DevOps
There is no single definition of DevOps, so it means different things to different people. In spite of there being no single definition, the notation of bringing everyone in involved in the software delivery process together and use unified practices remains consistent. Thus the team as a whole is responsible for the software across the entire systems development lifecycle. Including building new features or enhancements and fixing production issues.
With this in mind we believe that DevOps is more practically defined as “DevOps is where everyone involved in the software delivery works together throughout the entire lifecycle. From design, to development, and finally production support.” . In addition DevOps is often characterised by operational teams using many of same techniques as development teams for their operational tasks. For example using source control to store and manage the versions of infrastructure and configuration.
In spite of DevOps specifically references Developers (Dev) and operations (Ops), it does not as different between the different types of disciplines within these domains. So it is import to understand that Dev refers to anyone involved in developing the product. For example developers, testers, business analysts, etc. And Ops refers to anyone involved in supporting and maintaining the product. Such as system administrators, system engineers, cloud engineers, DBAs and security professionals.
Lean, Agile and DevOps
DevOps is closely connected with Lean and Agile approaches. Even though Lean originated in the manufacturing industry many of its principles found there way into software development. Before DevOps there was Agile and before Agile there was Lean. In fact all three share the similar goals, including faster time to market, more efficiency, improved quality, increase customer satisfaction, cost savings and constant improvement through continuous delivery. In short these approaches focus on creating value.
With this in mind, DevOps extends the boundaries of Agile from just building software to delivering a service. And considers all aspects of delivering software from a single perspective. Including development, support and maintenance.
In the beginning there was Agile Infrastructure
Agile Infrastructure is the beginning of DevOps
So in Belgium 2007 an IT Consultant and Agile Practitioner by the name of Patrick Debios was working on a Data Centre Migration project for the Belgium Government Ministry.
Patrick was looking after certification/readiness testing and had to work closely with the Development and Operations teams (infrastructure, network, and database). But there was a lack of cohesion and walls of separation between these teams. As a result Patrick experienced a lot of frustration while working on the project. Consequently it was this frustration that caused him to take action.
So in 2008, while Patrick was at the Agile Conference Toronto he attended an ad-hoc breakout session to discuss ‘Agile Infrastructure’ moderated by Andrew Clay Shafer but unfortunately, he was the only one. Not even Andrew attended his own session. Nevertheless, Patrick and Andrew did manage to connect at the conference and later that year they decided to start the Agile System Administrator group on Google. So that they could open the conversation to the broader community. However they had limited success.
Around the same time Continuous Integration (CI) was gaining popularity in the Agile Community. Thus the Agile movement was moving more towards deployment. However there was still a big divide between development and operational teams.
DevOpsDays is born
Then on 23 June 2009 John Allspaw and Paul Hammond from Flickr gave their now legendary presentation. ’10+ Deploys per Day: Dev and Ops Cooperation at Flickr’ at the O’Reilly Velocity Conference. In fact, this presentation that re-ignited the DevOps movement. Because it made the case that the only rational way forward was for development and operations activities to be transparent, seamless, and fully integrated.
Patrick couldn’t attend the conference in person so he watched the presentation via live stream. And then proceeded to tweet about his disappointment about not being able to be there in person, to which Paul Nasart tweets back ‘Why not organise your own Velocity event in Belgium’.
So then in October 2009 Patrick decides to do exactly that and proceeds to organise a two-day event in Ghent, Belgium to bring developers and system administrators together. Due to nature of the audience, developer and system administrator he calls the event DevOpsDays. As a result DevOpsDays is born.
DevOps is here to stay
The event turns out to be an overwhelming success with an impressive list of developers, system administrators and managers from all over the world attending. When the event ended the not only did the conversation continued over twitter via the devops hashtag. But several the participants liked the concept so much they launch DevOpsDays conferences in their own Country’s.
What was interesting was the number of the practitioners that emerged from all over the world. Wanting to share their experiences and discuss their ideas on IT should be run under the devops banner. Devops had become this full fledge grassroots movement, created by practitioners for practitioners.
Not only that but the DevOps community started to drive a whole generation of tools that formalised the best practices that they wanted. Tools like Puppet, Chef, Vagrant, Logstash, etc.
Without a doubt DevOps delivers a number of benefits
What benefits and value does DevOps provide to an Organisation?
Ultimately every business is aiming to provide the absolute best service and feature that they can deliver to their customers as quickly as possible.
DevOps allows businesses to respond more quickly to changing customer needs. And produce more reliable products with higher availability and scalability while lowering long-term costs. Regardless of the industry they operate in.
DevOps provides the following benefits. Including,
Faster delivery time
Collaborative culture, automation, continuous delivery and fast feedback cycles are the cornerstone of DevOps principles. All of which make software development faster and more efficient. Being an evolutionary stretch to the Agile methodology, DevOps enhance technical practices to ensure a smooth flow through the Software Development Lifecycle.
DevOps fosters a culture of knowledge sharing between teams reducing the dependency on specific individuals. In addition to the automated, continuous testing and monitoring of the system it ensures that defects are detected and resolved early. Risk is further reduced by releasing code early and often. Resulting in smaller more frequent releases that are more manageable.
High collaboration between teams
To enable effective collaboration and communication and break down silos between teams involved in the software development process. DevOps focus on fostering a culture of mutual collaboration and communication through shared ownership across globally distributed teams. All teams and team members are responsible for building and running the system.
Innovating culture and mindset
By streamlining processes and having efficient releases of higher quality, teams and team members are more relaxed and engaged to bring new more innovative approaches to resolve issues and optimise the software delivery process. Furthermore studies indicate that employees in teams that leverage DevOps practices are happier and more fulfilled in their roles.
Improved customer experience
By leveraging DevOps Organisations can significantly improve their deployment frequency, recovery times and lower change failure rates. With the use of automated delivery pipelines, it is possible for Organisations to validate the reliability and stability of every release of the system and deliver a far better customer experience.
Having all teams and team members actively involved in the software delivery process from beginning to end not only leads to more efficient releases of higher quality but also reduces the amount of technical debt created and reduces the amount of rework required, reducing software delivery costs long-term.
DevOps Mindset and Principals
Culture is the foundation
Establishing a culture of share responsibility and accountability for software delivery. Or at least having a group of people devoted to establishing the culture in a grassroots type of way, with the support of senior management is paramount before silos can be broken down between teams.
Automation is critical
Automation helps to remove repetitive mundane tasks. It creates repeatable and consistent processes and creates reliable systems. Teams should automate where it makes sense to allow themselves to focus on higher value work. Reduce human errors and increase the speed at which they can deliver software without sacrificing quality or reliability.
LEAN principles enable DevOps practices
By applying Lean principles to the software delivery process teams can eliminate waste. And optimise the value stream by minimizing Work-In-Progress (WIP), making work more visible and reducing hand-off complexity and wait times.
Measurement of your DevOps capability
Collecting data is essential for continuous improvement, after all it’s hard to prove that you’re continuously improving with it. Teams need to collect data on their processes, deployments, etc to understand their current capabilities and where improvements can be made. This data should empower teams to make more informed decisions over where to invest their efforts.
Sharing is a large part of DevOps
Sharing is a large part of DevOps, sharing within and between teams (and enabled with the proper tools) keeps everyone working toward the same goals and eases friction. Shared learning, where team members learning from other member’s experiences and teams learning from other team’s experiences within the organization is vital for growth. Growth comes from both successful and failed small experiments.
Getting Started with DevOps
DevOps was started by practitioners for practitioners to address the disconnect between Development and Operational teams. In the same way that Agile was and extension of Lean concepts and practices. DevOps is an extension of Agile concepts and practices.
DevOps allows Organisations to respond more quickly to changing customer needs. And produce more reliable products while reducing overall costs.
Like Agile principles, DevOps principles describe the criteria that allow you to make intelligent decisions about how your Organisation approaches the delivery of software. The scope and breath of DevOps is often summed up as Culture, Automation, Lean, Measurement and Sharing or CALMS for short.
The biggest thing to understand when moving to DevOps ways of working is that you are ultimately undergoing a culture shift. So there is no single, easy way for effecting the kind of Organisational change that results in success. As a result you must be patient when embarking on the DevOps journey Organisations. And focus on sustained incremental improvement to your software delivery process.