Written by Eric Mutua

What is DevOps ? From an academic perspective, Len Bass, Ingo Weber, and Liming Zhu—three computer science researchers from the CSIRO and the Software Engineering Institute—suggested defining DevOps as "a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality"

ToolChains are an intergral part of DevOps; As DevOps is intended to be a cross-functional mode of working, those who practice the methodology use different sets of tools—referred to as "toolchains"—rather than a single one.These toolchains are expected to fit into one or more of the following categories, reflective of key aspects of the development and delivery process:

  • Coding – code development and review, source code management tools, code merging.
  • Building – continuous integration tools, build status.
  • Testing – continuous testing tools that provide quick and timely feedback on business risks.
  • Packaging – artifact repository, application pre-deployment staging.
  • Releasing – change management, release approvals, release automation.
  • Configuring – infrastructure configuration and management, infrastructure as code tools.
  • Monitoring – applications performance monitoring, end-user experience.

How does DevOps compare to other approaches ? Well there are several other traditional approaches to software development life cycle (SDCL). Lets take a brief look at some:

  • Agile - Agile and DevOps serve complementary roles: several standard DevOps practices such as automated build and test, continuous integration, and continuous delivery originated in the Agile world, which dates (informally) to the 1990s, and formally to 2001. Agile can be viewed as addressing communication gaps between customers and developers, while DevOps addresses gaps between developers and IT operations / infrastructure. Also, DevOps has focus on the deployment of developed software, whether it is developed via Agile or other methodologies.

    Full article : Agile software development

  • ArchOps - ArchOps presents an extension for DevOps practice, starting from software architecture artifacts, instead of source code, for operation deployment.[24] ArchOps states that architectural models are first-class entities in software development, deployment, and operations.

  • TestOps - TestOps is to hardware development what DevOps is to software development. The idea is a toolchain that links design and test operations together. In the case of hardware, design means EDA tools and the CAD department, and test means electronic measurement equipment like oscilloscopes and so on.

  • Continous Delivery - Continuous delivery and DevOps have common goals and are often used in conjunction, but there are subtle differences.

While continuous delivery is focused on automating the processes in software delivery, DevOps also focuses on the organizational change to support great collaboration between the many functions involved

Cultural Change

DevOps initiatives can create cultural changes in companies by transforming the way operations, developers, and testers collaborate during the development and delivery processes.Getting these groups to work cohesively is a critical challenge in enterprise DevOps adoption.DevOps is as much about culture, as it is about the toolchain

DevOps automation

DevOps automation can be achieved by repackaging platforms, systems, and applications into reusable building blocks through the use of technologies such as virtual machines and containerization.

Implementation of DevOps automation in the IT-organization is heavily dependent on tools,which are required to cover different areas of the systems development lifecycle (SDLC):

  • Infrastructure as code
  • CI/CD
  • Test automation
  • Containerization
  • Orchestration
  • Software deployment
  • Software measurement

In conclusion

DevOps remains a promising set of practices that garantees high quality software and efficient low cost development process.