What is unique about the concept of DevOps, a development methodology used for software development and delivery? What were the underlying problems in software delivery and distribution that prompted people to propagate what they felt were improved processes; processes identified by the concatenation of Development and Operations into one expression – DevOps?
Search Google and you will find page after page with definitions and explanations ranging from values, principles, methods and practices to summary statements like “stop being a jerk and work as a team member.” Read on to find out more about DevOps, some of the issues it seeks to overcome, and how a skilled DevOps team can handle infrastructure as a managed service.
The origin of DevOps
The DevOps methodology grew as an extension of the Agile Manifesto of 2001, an initiative by a group of influential software development organisations calling themselves the Agile Alliance. Their manifesto was created in response to the need for something better than documentation-driven software development processes.
DevOps was a less formal initiative by a group of developers who felt that end-user satisfaction could be further enhanced. The methods they propagated emphasised team work, crossing the boundaries of development and operational staff.
The problems DevOps seeks to eliminate
IT departments are traditionally divided into autonomous Development and Operational groups. These groups are managed separately and frequently split up into sub-groups supervised by project managers with the complex task of co-coordinating activities between disparate groups of people. Fences arise and an “us versus them” attitude easily develops. It is human nature. It is also a manifestation of poor collaboration between people who should, but do not necessarily share the same goals.
Infrastructure development was traditionally managed by an operations team, and configuration was largely a manual process. Today, the infrastructure can be defined by code using a process referred to as programmable infrastructure or infrastructure as code. However, this is a specialised area and most developers may not be familiar with the methods and the tools required.Infrastructure as Code implies the creation of scripts which define the infrastructure on which an application will run. The main advantages with this method is that the infrastructure can be easily replicated on different servers, environments can be built with a high level of certainly about their performance and functionality and a high level of consistency exists meaning the configuration will does not change from build to build unless its been managed through a change management process.
The key here is automation. Automate from the beginning and get it right long term. If processes are designed to be repeatable, dependable and consistent then efforts can be more focused on constant improvement within the business. These efforts include working closer with development teams to automate the delivery process to provide an environment where continual delivery is available. Continual delivery enables development teams to release updates that are tested and complete into a environment that is ready for production release when the business is ready.
Finally a key attribute of the DevOp’s methodology is collaboration. All the automation in the world won’t solve issues when teams sit in silo’s and pass issues off to one another. When the ‘me’ or ‘them’ attitudes are dropped and a ‘us’ and ‘we’ attitude becomes common place then the DevOp’s methodology takes hold and transforms. Walls break down between traditional business units and everyone is working toward the same result, together. Perhaps in the future we will begin to see Chief Collaboration Officers (CCO) within organisations and their roles will be to ensure walls and silos are constantly broken down and kept out of organisations.
A specialist organisation like Haylix can provide the expertise required to ensure the infrastructure, testing and deployment methods are designed with a vision to support continual delivery. We design the environments and processes so as to allow development teams to always be working on new business requirements while the business plans releases safe in the knowledge that each change (feature/bug fix etc) is tested and proven ready for automate deployment.