There's a massive culture shift occurring at the moment in enterprise IT operations and software development departments.
In this post, I'll explain why DevOps is relevant to your business, and why you should care about adopting the approaches it outlines.
Before we get into what DevOps is and why the hell you should care, I'd like to introduce a brief history of how DevOps emerged and the people involved in establishing the movement.
A Brief History of DevOps
According to Damon Edwards of DTO Solutions, the first seeds of the DevOps movement were sown in Belgium back in 2007.
An IT consultant named Patrick Debois was frustrated by the conflict, lack of communication and the disconnection between development and traditional IT operations departments.
While working on a large data centre migration project for the Belgium Government Ministry, Patrick found himself straddled between development and operations. He was, on one hand, firefighting in the unpredictable world of IT operations, while, on the other, he would be working on agile development.
He was certain there was a better way of working and bridging the substantial gap between development and operations.
At the Agile2008 Conference in Toronto, Canada, Andrew Shafer (then a partner at Reductive Labs) proposed a discussion topic for an ad-hoc session entitled ‘Agile Infrastructure’. Unfortunately, due to the lack of interest and feedback, Andrew cancelled.
There was a little interest, though. Patrick Debois turned up for it. In fact, he was the only person who did.
Patrick eventually tracked down Andrew at the conference, and they had an in-depth discussion about their mutual frustrations.
After the event, Andrew and Patrick formed the Agile System Administration group on Google Groups. While the group was not overly popular, it did generate some fascinating discussion.
Now we jump forward to 2009, and to the famous talk given at the Velocity Conference in San Jose by John Allspaw and Paul Hammond of Flickr.
The talk, entitled ‘10+ Deploys Per Day: Dev and Ops Cooperation at Flickr ’ (along with encouragement from Paul Nasrat), inspired Patrick to start an event of his own. DevOpsDays was born, and the first event ran between October 30th to 31st 2009 in Ghent, Belgium.
The event drew a pretty impressive crowd of systems administrators, developers, and managers from all around the world. It was so successful and inspiring that other DevOpsDays events began to spring up in different countries.
These events were the catalyst that got the conversation going and a grassroots movement emerged.
While vendors, analysts, and traditional enterprise IT shops mostly ignored the movement, the spark had ignited the passions of those it struck a nerve with, and the movement began to grow.
It spawned tools such as Vagrant, Puppet, Chef and FPM , and they were running circles around legacy enterprise IT systems.
At this point, analysts started to get in on the conversation and not long after that almost all of the larger vendors took note. DevOps was taking root.
So, What is DevOps?
Before we tackle what DevOps is, let's first define what DevOps isn't.
DevOps isn't a thing. It's not a product, standard, specification, framework or job title (although it has spawned a whole host of job roles and disciplines, such as the Full-stack Developer and DevOps Engineer).
DevOps is about experiences, ideas and culture. It's about the close collaboration between IT operations and development, and how they can improve the products and services that they produce by thinking differently about how they work together, using a new mentality.
DevOps is also about communication, helping what should be tightly integrated disciplines understand each others roles and challenges better.
It's about working together toward a common goal, and enabling businesses to succeed by helping them release quality and stable products and services, faster and with fewer failures and bottlenecks.
There's no overall authority on DevOps. It's a movement, inspired by practitioners for practitioners.
No one owns DevOps. It's a culture, and it's about improving how we work together.
DevOps is an evolving organism, and open to change but the best practice approaches and frameworks (Agile, Lean, ITIL, etc.) underpinning DevOps are not new.
Born of the agile software development movement, DevOps emphasises communication, integration, collaboration and automation, while measuring cooperation between software developers and IT operations, as well as other IT professionals within an organisation.
Source: 2014 State of DevOps ReportSource: 2015 State of DevOps Report
Why Should I Care About DevOps?
The common goal of any business is to succeed. To create excellent products and services, that customers love, in turn generating revenue and profit.
If the different departments within your organisation don't communicate well with each other, then this is going to cost you money and ultimately hurt your business.
Finger pointing and ignorance of the challenges involved for a given department is not helpful. If individuals and teams don't communicate and collaborate, then the disconnect between them will get wider, and this will be ultimately detrimental to any operation.
With focus coming from key stakeholders to push quality, stable products and services to market faster, it's now more critical than ever to maintain a constant dialogue between the teams and individuals that make it happen.
If you're a CEO or IT professional, and you're not already on board with DevOps and its benefits, make yourself a brew, sit back and let me explain why I think you should be.
11 Reasons Why You Should Care About DevOps
1. We All Have Challenges, Let's Collaborate
Every individual and every single team, whether it's development, operations, quality assurance or the support team, all come across challenges on a daily basis.
These challenges impact the business and its operations, and an incident or blocker in one department could resonate in another.
Regardless of who is responsible, the problem needs to be solved!
It's unnecessary placing blame and pointing fingers, the key here is to use the available time and resources to solve the issue.
Without collaboration, this process takes longer and can create further problems that may not be immediately apparent.
Working together and communicating efficiently allows you to implement solutions that help prevent similar incidents in the future.
When I first started work at Purple Griffon, key departments didn't communicate with each other efficiently, and this resulted in systems and processes that were disconnected.
There was no automation of tasks and each department used a set of bespoke and off the shelf tools that were not integrated, resulting in duplicated and fragmented data.
The first thing I did was to get the key stakeholders together to discuss and share ideas. I needed to get a sense of how each department worked and what challenges they faced.
I organised group sessions and encouraged each team to collaborate and discuss ideas and processes with each other.
Collaboration enabled us to build a better system that consolidated our data and practices into a streamlined and integrated ERM (Enterprise Resource Management) system, with further benefits added through automated development and deployment processes.
The result is that we are now working faster and smarter than we ever did before. We are far more aware of the challenges that each department faces on a day-to-day basis, and we all thoroughly understand the needs of the business.
2. Improved Speed to Market
Increased speed to market will allow you to gain a competitive edge in an industry where software and tools are outmoded almost as quickly as they are released.
Introducing a DevOps approach will enable you to go from an initial concept to a viable product in a shorter timescale than was traditionally acceptable with a waterfall approach.
It also lets you free up resources to concentrate on improving your software and infrastructure, meaning that you can get ahead of your competitors by releasing new features and functionality sooner.
3. Continuous Integration & Delivery
Continuous integration is a development practice that involves deploying code to a shared repository several times per day. Using an automated build process in combination with automated testing helps to verify each check-in, which produces more stable software.
Typical continuous integration tools and services such as Travis CI, CruiseControl and Codeship allow developers to hook their source control systems into them to perform automated testing of code.
This process allows developers to spot problems earlier, letting them implement fixes sooner.
Detecting issues early means they often tend to be smaller and less complex, making the process of debugging and fixing them easier.
According to a report published by Puppet Labs entitled 2014 State of DevOps , high-performing IT organisations that employ a DevOps approach are far more agile and reliable than those that don't.
The updated 2015 State of DevOps Report indicates that a DevOps approach and culture allows organisations to deploy code up to 30 times more frequently, with 200 times shorter lead times.
These are substantial increases in productivity, and measured against key performance indicators they could make the difference between failure and success.
This type of environment has shown time and time again to increase productivity and produce better software.
The above tools and methods are invaluable, not just to businesses and their performance but the practitioners themselves. They not only allow them to do their jobs more easily, but they also make their work more satisfying.
Traditionally, keeping server hardware and operating environments stable was the role of IT operations and systems administrators.
Functioning as a single team of cross-functional team members including database administrators (DBAs), business analysts, developers, quality assurance (QA) and operations engineers, DevOps delivers many benefits.
With DevOps, a single team handles both new functionality and the stability of the system. Each team member takes ownership of the business goals.
Deploy frequency, small changesets, and monitoring tools such as New Relic and Boundary help to improve environment, infrastructure, and codebase stability.
Deploy frequency and small changesets, in particular, are a huge factor where stability is concerned.
Deploying often and in smaller, indivisible groups allows engineers to troubleshoot and resolve issues faster. Such practices reduce Mean Time to Resolution (MTTR) (an important measure of speed when applied to stability), thus restoring stability (service) more rapidly after a critical infrastructure failure.
Application and server monitoring software such as New Relic and Boundary also help maintain stability by giving engineers access to vital information about their software and environments, again allowing them to spot issues sooner.
The combination of all these tools and best practices, along with automation allows a DevOps team to increase overall stability and reduce critical infrastructure failers, enabling them to act quickly and concisely if a failure does occur.
5. Faster & Easier Fixes
Due to the agile nature of a DevOps environment, DevOps teams can introduce new functionality in smaller, more modular deployments. Because these deployments are more targeted and isolated, bugs are easier to spot and in turn, fixes are often faster and easier to implement.
The team often only has to check the latest code changes for errors to be able to fix the issue. Of course, this approach brings considerable benefits to the business.
Being able to implement faster bug fixes keeps customers happy and frees up valuable resources to concentrate on other tasks, such as designing, developing and deploying new functionality.
The combined use of version control systems, continuous integration, automated deployment tools and test-driven development (TDD), has allowed DevOps teams to implement smaller incremental changesets.
Because of these more modular implementations, DevOps teams can expose problems in configuration, application code and infrastructure earlier, as responsibility isn't passed to another team once coding is complete.
Because of the small changesets, problems tend to be less complex and resolution times for issues are faster, directly because the responsibility for troubleshooting and fixes remains contained within a single team.
As the 2015 State of DevOps Report (published by Puppet Labs) reveals, high-performing IT organisations recover from failures 168 times faster than lower performing peers.
6. Breaking Down Silos
By combining multiple teams and disciplines into one lean, mean DevOps team that have cross-functional skill sets and communicate efficiently, you automatically break down traditional silos created from departmentalisation.
No longer is each specialist a single point of failure. Everyone in the team takes responsibility for the business goals and because of the close collaborative nature of DevOps, team members can tackle multiple challenges in various areas of operation and development.
This approach, of course, is of tremendous benefit to an organisation. It enables teams to complete tasks quickly and efficiently while maintaining stability and quality.
7. Resource & Cost Reduction
By implementing a DevOps approach, you will be able to reduce significantly, the costs and demand for resources associated with traditional IT implementations.
Traditionally, IT was seen as a cost center but the implementation of DevOps has shown that this approach provides real business value.
When you use continuous delivery and lean management practices, you get higher quality results and shorter cycle times, further reducing costs.
These practices contribute to reducing the resource requirements in terms of both manpower and hardware. A modular architecture consisting of well-encapsulated, loosely coupled components allows organisations to make efficient use of cloud computing.
Cloud computing has enabled, through the use of automated processes and robust design, products and services that can scale to the needs of the business.
The benefits of cloud computing are numerous, and each helps to reduce cost.
While DevOps and cloud computing are neither mutually exclusive nor directly related, when combined they each reinforce the other.
The flexibility that comes with cloud computing enables DevOps teams to meet the demands of the business and its customers almost instantly. If more resources or a new database or load balancing server are required, the cloud enables automated delivery of these requirements in a matter of minutes.
Cloud computing services also aid in disaster recovery time as the majority of issues are handled by the provider of the service.
Also, automatic software and infrastructure updates, traditionally handled in-house, are offloaded to the cloud provider, freeing up time and resources to be used elsewhere.
Other benefits that help to reduce cost and resource requirements include minimal project start-up and ongoing operating costs, increased collaboration, increased data availability and accessibility, and improved security.
8. Increased Performance
There is typically an enormous amount of waste in traditional IT environments.
Time is often spent waiting around for others to complete tasks or in solving the same problems over and over again, and this causes frustration and costs money.
Standardised production environments and automation tools help make deployments predictable. These processes free people from routine tasks, allowing them to concentrate on the most creative aspects of their role, adding value to the business and benefiting everyone.
The type or complexity of systems these practices get applied to is not a significant factor. As long as software is architected with testability and deployability in mind, high performance is more than achievable.
The 2015 State of DevOps Report highlights several key points that show where DevOps IT teams significantly increase performance when compared to their peers.
- 30 times more code deployed
- 200 times faster deployments
- Increased stability
- 60 percent fewer failures
- 168 times faster mean time to recover (MTTR)
I think you'll agree that these are hugely substantial increases in performance.
9. Innovation & Creativity
As mentioned above, the introduction of continuous integration, standardised production environments and automated deployments allows practitioners to focus on the more inventive and creative side of their role.
More time and resources spent on experimentation and innovation allows teams to develop and release improved software, and this directly translates into achieving business goals.
The environment and culture that DevOps produces and nurtures is one that encourages a deeper understanding and implementation of best practices.
10. Job Satisfaction
As a fully-committed DevOps engineer, I can tell you from experience that working in a collaborative and multi-skilled environment is an enormous factor when it comes to job satisfaction.
In my role as Lead Web Application Developer, I manage all aspects of the product lifecycle, from infrastructure and configuration management to development, testing, automation and deployment.
Being able to diagnose server issues, while possessing the skill set necessary to implement fixes quickly is a valuable asset to Purple Griffon.
But why is job satisfaction significant?
According to the 2014 Sate of DevOps Report, "Job satisfaction is the No. 1 predictor of organisational performance.", meaning that the satisfaction of team members in performing their role is a significant factor in increasing corporate performance.
DevOps practices and culture increase employee satisfaction, and this leads to better business outcomes.
11. Fewer Failures
In the 2014 State of DevOps Report, the data showed that high-performing organisations had 50 percent fewer failures.
Continuing the trend, the 2015 State of DevOps Report revealed that the organisations who adopt a DevOps mindset and culture have 60 times fewer failures than those not implementing a DevOps approach.
This information is very revealing and highlights the huge benefits DevOps as a mindset and culture offer businesses, and indeed individuals.
Fewer failures mean more time operating your service, and fewer resources spent fixing issues, allowing you to concentrate on further improvements and creative innovation.
I hope I've been able to highlight the benefits of adopting a DevOps approach. It's certainly clear that the culture of IT is changing, and that traditional methods of managing product releases are often inefficient, costly and counterproductive.
DevOps may be the latest 'buzzword' being banded about, but it's here to stay, and it's revolutionising the IT industry.
Increasing performance, reducing costs, and building better software that has fewer failures is something all IT shops should be looking to achieve. With a DevOps approach, this is more than achievable.
To find out more about DevOps and how your organisation can implement a cultural change towards DevOps best practices, visit our friends over at the DevOps Institute, or check out our DevOps courses.