DevOps and IT Operations

Dev-Ops Basics

What Is DevOps?

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary with Agile software development; several DevOps aspects came from Agile methodology.

It involves communication and collaboration among all participants in the software development life cycle (SDLC). DevOps focuses on creating an ongoing feedback loop of analyzing, building, and testing while leveraging automation to speed the entire software delivery process. To achieve this kind of seamless and constant loop of software development and testing, you need to create cross-functional teams that can work together efficiently.

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:

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

Some categories are more essential in a DevOps toolchain than others; especially continuous integration (e.g. JenkinsGitlabBitbucket pipelines) and infrastructure as code (e.g., TerraformAnsiblePuppet)

Offsprings & Relatives of Dev-Ops

Over the period of time Dev-Ops has evolved under various categories.

ArchOps

ArchOps presents an extension for DevOps practice, starting from software architecture artifacts, instead of source code, for operational deployment. 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.

Continuous 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.

DevOps and continuous delivery share a common background in agile methods and lean thinking: small and frequent changes with focused value to the end customer. Lean management and continuous delivery are fundamental to delivering value faster, in a sustainable way. Continuous delivery focuses on making sure the software is always in a releasable state throughout its lifecycle. This makes it cheaper and less risky to deliver the software.

Improved collaboration and communication both between and within organizational teams can help achieve faster time to market, with reduced risks.

DataOps

The application of continuous delivery and DevOps to data analytics has been termed DataOps. DataOps seeks to integrate data engineering, data integration, data quality, data security, and data privacy with operations. It applies principles from DevOps, Agile Development and the statistical process control, used in lean manufacturing, to improve the cycle time of extracting value from data analytics.

Site-reliability engineering

In 2003, Google developed site reliability engineering (SRE), an approach for releasing new features continuously into large-scale high-availability systems while maintaining a high-quality end-user experience. While SRE predates the development of DevOps, they are generally viewed as being related to each other.

Systems administration

DevOps is often viewed as an approach to applying systems administration work to cloud technology.

WinOps

 

WinOps is the term used for DevOps practices for a Microsoft-centric view.

DevSecOps

DevSecOps is an augmentation of DevOps to allow for security practices to be integrated into the DevOps approach. The traditional centralised security team model must adopt a federated model allowing each delivery team the ability to factor in the correct security controls into their DevOps practices.