Finally! DevOps Explained

Modern software development

Image for post
Image for post
Photo by Joseph Barrientos on Unsplash

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.

The solutions

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.

  1. Coding code development (and review) and source code management tools
  2. Building continuous integration tools
  3. Testing continuous testing tools
  4. Packaging application staging (pre-deployment)
  5. Releasing change management and release automation
  6. Configuring infrastructure configuration and management
  7. 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 highlights

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

DevOps tools

  • Jenkins
  • Docker
  • Ansible
  • Nagios

DevOps Automation

  1. Infrastructure as code
  2. CI/CD
  3. Test automation
  4. Containerization
  5. Orchestration
  6. Software deployment
  7. Software measurement

Conclusion

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store