THE KEY TO ACHIEVING AN EFFECTIVE IT DEPARTMENT
In today’s competitive and fast-paced environment, a high performing IT department is a strategic asset, increasing productivity and profitability. Companies utilising DevOps are 5 times more likely to be high performing. This correlation suggests the importance of implementing DevOps practices as the key to achieving an effective IT department.
On an IT level, DevOps breaks down the barriers between ‘development’ and ‘operational’ activity and enables the IT function to develop and deploy high-quality software quickly. On a business level, DevOps allows organisation to respond faster to market changes, providing them with the means to increase the services they provide to their customers.
Organisations using DevOps realise a multitude of benefits including:
- Improved quality of software deployments
- More frequent software releases
- Improved visibility into IT process and requirements
- Greater responsiveness to business needs
- More agile development and change management processes
- Improved quality of code
This article examines the increasing popularity of DevOps and looks at ways in which organisations can capitalise on this collaborative IT movement. It advocates that by aligning two powerful and strategic business functions – business agility and IT – DevOps enables greater IT efficiency for an organisation.
In 2013, Puppet Labs conducted a survey called “State of DevOps”, involving over 9,200 participants in 110 countries across IT operations, software development and technology management roles. The results indicated that organisations that incorporate DevOps practices are more effective than their competitors.
The research also revealed that organisations using DevOps:
- Are five times more likely to be high performing
- Deploy code up to 30 times more frequently than their competition
- Complete deployments 8,000 times faster than their non-DevOps counterparts
- Have 50 per cent fewer failures
- Restore service 12 times faster than their competitors
The high performing IT practices that boost output and market value for an organisation are also commonly associated with DevOps.
In fact, successful IT organisations are twice as likely to exceed their profitability and productivity goals than that of their competition.
What is DevOps?
DevOps is a progression of the agile methodology. It encompasses the entire software lifecycle, uniting both development and IT operations (“Dev” and “Ops”) as an interdependent team. Both teams work side-by-side from the beginning to ensure the resulting system meets the required business outcome.
DevOps is a progression of the agile methodology – a software development approach in which requirements and solutions evolve through the collaboration of cross-functional teams. DevOps encompasses both development and IT
operations rather than solely focusing on any one part of the software product lifecycle.
In a nutshell, DevOps encompasses the entire software lifecycle, uniting both development and IT operations (“Dev” and
“Ops”) as an interdependent team.
To understand what this means, let’s take a step back.
Traditionally, the development team would develop a software product, often using the agile iteration-based development methodology. The IT team would produce the product code in their own environment, regardless of whether or not the production environment was a true representation of that in which the final system would be deployed and maintained.
The software would then be passed to Quality Assurance (QA), who would test for defects. Any bugs identified would be sent back to the development team to resolve. Once resolved, the software would return to QA for further testing. Often, under this scenario, the QA team would sit as an extension of the development team.
Once the system passed QA’s tests, it would be passed on to the Ops team to deploy and maintain in a production environment. Any issues identified once the system went into production would be sent back to the development team to resolve.
In this traditional model, still relatively common today, the Dev team and the Ops team have defined functions and responsibilities and operate in ‘silos’. Dev’s responsibility is to develop the system. Ops responsibility is to deploy and run the system.
The problem however, is when something goes wrong – more often than not, each team works in opposition to the other to resolve an issue. The following is a common scenario:
Ops team: “It’s not my server configuration, it’s your code.”
Dev team: “It’s not my code, it’s your server configuration.”
As each team has a separate focus and goal, neither understands the constraints and environment the other has to work with.
DevOps brings these teams together in a collaborative manner.
Rather than the system being developed and handed to the Ops team without further input or knowledge of what is required to run the software, the Dev team has an intimate knowledge of the Ops team’s requirements to support and maintain the system effectively in the production environment. Similarly, the Ops team understands the Dev team’s role to create the system to the point of production.
Both the Dev team and the Ops team work side-by-side from the beginning to ensure the resulting system meets the required business outcome.
In a sense, both teams have combined ownership to deliver a system that provides the business benefits that were outlined at the beginning. It is in their best interest to work together towards the same goal.
The big picture for organisations using DevOps
Organisations deploying the DevOps principles benefit from improved agility and reliability throughout the IT lifecycle. Using the latest technology to automate repetitive processes leads to time gains and cost savings.
Over the long term, implementing DevOps principles into an organisation will:
- Increase deployment frequency – On average, organisations using DevOps experience approximately 95 per cent less time between deployments than traditional organisations. This enables quick response to market changes,
customer feedback and innovative ideas.
- Reduce change lead-time – Organisations using DevOps can make changes with significantly less notice. On average, agile organisations can make 8,000 changes before their competitors deploy a single change.
- Reduce recovery time – Organisations using DevOps recover from downtime within minutes, compared to traditional organisations that take an hour or longer to respond.
- Reduce failure rate – Whilst changes often fail because the development and test environments do not match the
production environment, organisations with DevOps cultures experience over 50 per cent fewer failures from code changes.
How to make DevOps work in your organisation
More than anything, DevOps is a cultural shift. It’s about shifting the mindset from “I am a developer and this is what I do” to “If I understand how the system will be used and how it will perform in the production environment, I can anticipate any issues that may arise and prevent them”.
DevOps requires internal teams to think not like “Dev” or “Ops” or “QA” or “Security,” but as designers of solutions collaborating to bring measurable value to the business. As a result, code defects are detected much earlier in the development process, overall project risk is minimised, and the team responds faster to changing business priorities.
By increasing the collaboration and knowledge sharing between the teams and harbouring an environment where they have a shared goal, issues are resolved faster, systems are built and deployed more efficiently and the end result is a higher quality product.
By incorporating feedback loops (i.e. providing the development team with visibility into the issues that arise in the production environment), teams can identify problem areas and resolve them before they move into production.
For an operations team, this requires the modification of existing organisational behaviours, such as:
- Attending daily meetings with developers to understand what people are working on and where Ops can assist
- Providing development teams with production-like environments at the early stages of a project to improve quality and make deployment faster and simpler
- Providing constant production telemetry to see if the system is working as designed, to give developers a greater understanding of what’s happening within the environment
- Working side-by-side with developers to take their ideas, and incorporate them into the development of the code
- Participating in peer reviews to ensure a continuous flow of work.
Whilst it can be argued that when engaging in a DevOps shift, too much process will interfere with the main goal; several systems and processes must be implemented to facilitate the DevOps environment. These include:
Providing a version control system for all production artefacts
- Make it easier to recreate environments for testing
- Increase the ability to get changes into production repeatedly in a reliable, low risk way
- Allow quick redeployment when an error is identified in production to the last correct state, reducing time to recover
- Enable the organisation to create testing environments that are cost-effective, on demand
- Communicate the desired state of systems effectively across teams
Encouraging continuous delivery
- Ensure the focus remains on maintaining a releasable state throughout the software lifecycle
- Provide a process for continually releasing new versions of software to users in a cost-effective, low-risk manner
- Create multiple feedback loops to encourage effective collaboration between developers, testers, UX, product and operations people
Creating an environment of continuous integration
- Ensure developers use a version control system to merge their code into trunk, multiple times per day. This allows transparency across departments and creates an effective way to identify and flag errors which can be fixed immediately
- Create canonical builds and packages that are ultimately deployed and released
DevOps in action
By implementing DevOps, the IT team at Domain Group has reduced the time taken to publish changes to its real estate website. The team has created an automated pipeline for application development, deployment and monitoring that pushes changes directly from their .NET apps onto the cloud-based Amazon Web Services. This change has allowed the team to increase small changes in a single month from 8-10 to a staggering 150.
Barack Obama’s tech team faced a daunting task during his 18-month election campaign. However, using the DevOps methodology, the tech team managed 2,000 nodes across three data centres, processing over 8.5 billion requests with only 30 minutes downtime over the entire campaign.
Live video and photo sharing website, Flickr, is a prime example of effective DevOps in action. Development and operations staff manage an automated testing cycle, run in a realistic staging environment that must work efficiently at all
levels of the software lifecycle – fast. If the code passes, it is tagged, released, built and pushed into production at a rate that allows the software platform to be updated at least 10 times per day.
DevOps allows IT administrators with developer and IT operation skills at global companies such as Pinterest, Google and the International Securities Exchange, to deploy code 30 times faster with 50 per cent less failures.
The impact of DevOps will continue to grow over time.
With so many programming languages, tools and software services, there are unlimited options for developers to build and create innovative applications. To remain agile, start-ups to large enterprises are embracing the DevOps culture to push their applications forward and respond quickly to change.