What is ‘DevOps’, what does it solve, and how can it add measurable value to your business?
DevOps has been steadily gaining momentum since a series of ‘DevOps Days’ began back in 2009. The term “DevOps” is about breaking down the silos of development and operations and typically refers to the collaborative working relationship between these two IT elements. Traditionally, the two departments work towards different objectives. Development encourage change to build new features, products and enhance the user experience whereas operations resist change to ensure stability in production environments.
Delivering software in the traditional way tends to display the following characteristics:
- Release details are largely hidden from operations and the solution is ‘thrown over the wall’;
- Delays in releasing to production, and operations are perceived as a bottleneck;
- Releases are larger, less frequent, more complex and error prone, which reinforces the belief that change is negative;
- Debugging is made more complicated due to the time between developing code and production bugs being reported;
- Requests for code changes that would improve operability are largely ignored.
It is true that agile techniques used in development have an impact on the way operations organises its work. Similarly, operations and system administrators are becoming programmers because of the virtualisation and automation trend where everything is managed through an API.
“DevOps” is about breaking down the silos of development and operations and typically refers to the collaborative working relationship between these two IT elements.
What can working together solve?
Facilitating closer working relationships between these two key business streams is an important part of the culture shift in adopting DevOps practices. This will enable an organisation to benefit from their combined knowledge and experience, provide learning opportunities and help improve job satisfaction.
Sharing operational knowledge and input is key throughout the Software Development Lifecycle (SDLC), not just at deployment time. By working closer together teams can align their goals, and work as one coherent function instead of pulling in opposite directions. This means improved planning, supporting each other during application development and production deployments and most importantly, builds trust.
The combined output of the teams is optimised towards one end goal – deploying quality software that delivers value fast.
An unintentional side effect of developing using agile frameworks was that operations was left behind.
By utilising DevOps practises, an organisation is able to automate and simplify the delivery pipeline using approaches such as Continuous Integration (CI), Continuous Delivery (CD) and Configuration Management. Reducing the friction to production and addressing deployment pain points will enable changes to be delivered faster, with less risk, and slashes the feedback cycle time from months to days, or even hours.
Having a repeatable, predictable and scalable delivery infrastructure and a high deployment frequency enables organisations to push small incremental changes into production. This minimises the risk of each release, simplifies the rollback procedure and reduces ‘unplanned’ work, which is known to dramatically throttle productivity.
How DevOps can add value to your business?
Introducing DevOps practices is a journey, and like any continuous improvement, it will adapt to the needs of the organisation over time. When DevOps core practise are actively integrated with a single goal of deploying quality software that delivers value fast, there are many business benefits.
Cross skilling employees across different departments encourages innovative solutions, improved collaboration, mutual team respect and employees that feel empowered and motivated.
Infrastructure as code
When single, one off changes are made across server infrastructure, over time these ad-hoc changes lead to wide configuration drifts between infrastructures performing the same role. These drifts usually go unnoticed until a release has a dependency on a particular third-party assembly version or an assumed configuration setting. Trying to battle these types of issues, during a deployment isn’t much fun. They are hard to track down and time consuming, meanwhile your application or service is offline.
Adopting automation and provisioning of infrastructure and change management can reduce or even eliminate configuration drift, maintaining a known desired state at all times.
Low lead time for changes
By performing small releases often, deployments become routine and not dramatic. Reducing customer feedback cycle times and having the ability to be the first to market with new products, additional features or enhanced user experience can provide a real competitive advantage and increase return on investment.
By utilising DevOps best practices and techniques such as Continuous Integration, automated testing, Continuous Delivery and Infrastructure as Code, it results in more robust software, reduced friction to production and applications with rich feature sets that deliver business value.
With a streamlined, dependable and repeatable deployment pipeline, attention can be focused on advanced monitoring principles and tools. Early detection of anomalies, drifts from baseline statistics and contextual information can help detect and resolve potential issues before customers are aware.
Mean time to recover from failure (MTTR)
No change is without risk. When production deployments become a routine process, coupled with up to the minute monitoring and contextual data, the impact of any issues can be reduced when they do occur.
With a Dev plus Ops and not a Dev versus Ops culture, it’s a win-win. According to a 2014 State of DevOps report by Puppet Labs, DevOps adoption was accelerating and high performing IT organisations were becoming more agile and reliable, deploying code 30 times more frequently with 50 percent fewer failures.
If you were only to take one point away from this article, I would like it to be that collaboration is king. The power of loosely coupled but tightly aligned teams cannot be overestimated. Of course, this can also be one of the most challenging culture shifts to achieve.