Finally! DevOps Explained
Modern software development
Agile software development has led pressure to keep up with the speed of software development — from all sides of the organisation. As Agile working culture has really taken hold, a holistic approach to the end-to-end software delivery lifecycle has is needed.
In steps DevOps.
The tension between operations and developers in software development
Developers are close to the product, and are incentivised to write bug-free code that conforms to a specification. This results in a perverse incentive where development teams are rewarded for writing code where bugs are not found (note that this is subtly different from writing bug-free code).
Operations work to manage the infrastructure and IT policies.
The result of this rather siloed approach can be the following:
- Development teams are unaware of the Operational roadblocks that prevent the software from running as intended
- Operations have little knowledge of the business context for the software
- The opposing goals of the groups involved produces a blame culture
In some DevOps implementations Quality Assurance (QA) and security groups can also be tightly integrated. DevSecOps is a common derivation where security is important within the organisation.
DevOps is designed to create cross-functional teams that share responsibility for feature releases while reducing defects. The results of well-functioning DevOps is more than just continuous delivery but also about continuous improvement.
DevOps can use practices to automate historically slow and outdated processes. These tools can help engineers to to independently accomplish tasks such as deploying code or evolving applications in a reliable fashion without involving actors from other departments.
Cross-functional aspects of development and delivery
- Coding code development (and review) and source code management tools
- Building continuous integration tools
- Testing continuous testing tools
- Packaging application staging (pre-deployment)
- Releasing change management and release automation
- Configuring infrastructure configuration and management
- Monitoring end-user experience and performance monitoring
DevOps: Why, What, How and Whom?
Incremental change has increased in frequency due to the adoption of Agile software development. Along with each change, there is a cost to that transaction which needs to be minimised.
Clarity, consistency and collaboration should deliver value to the customer.
DevOps can leverage agile methodology and use continually developing tools.
DevOps can combine Developers, QA and Operations.
DevOps can combine several deliverables:
- Managing the speed of change in software, and reduced time to market
- The stability of operating environments
- The detection and removal of defects
- Transparency across teams
- Continuous release and deployment cycles
- Continuous testing
- Continuous monitoring
- Infrastructure as code
- Test automation
- Software deployment
- Software measurement
DevOps is a way of thinking rather than a particular role. The idea of cross-functional teams is not restricted to software development, and the advantages of getting people to work together in teams rather than being siloed in their job roles. Software development should be no different than other organisational processes, and DevOps is a way of making this work in the context of software development.
Queries/Questions? Get in touch with me right HERE