DevOps is an evolving philosophy and framework that encourages faster, better application development and faster release of new or revised software features or products to customers.

Continuous development. This practice spans the planning and coding phases of the DevOps lifecycle. Version-control mechanisms might be involved.

Continuous testing. This practice incorporates automated, prescheduled, continued code tests as application code is being written or updated. Such tests can speed the delivery of code to production.

Continuous integration (CI). This practice brings configuration management (CM) tools together with other test and development tools to track how much of the code being developed is ready for production. It involves rapid feedback between testing and development to quickly identify and resolve code issues.

Continuous delivery. This practice automates the delivery of code changes, after testing, to a pre production or staging environment. An staff member might then decide to promote such code changes into production.

Continuous deployment (CD). Similar to continuous delivery, this practice automates the release of new or changed code into production. A company doing continuous deployment might release code or feature changes several times per day. The use of container technologies, such as Docker and Kubernetes, can enable continuous deployment by helping to maintain consistency of the code across different deployment platforms and environments.

Continuous monitoring. This practice involves ongoing monitoring of both the code in operation and the underlying infrastructure that supports it. A feedback loop that reports on bugs or issues then makes its way back to development.

Infrastructure as code. This practice can be used during various DevOps phases to automate the provisioning of infrastructure required for a software release. Developers add infrastructure “code” from within their existing development tools. For example, developers might create a storage volume on demand from Docker, Kubernetes, or OpenShift. This practice also allows operations teams to monitor environment configurations, track changes, and simplify the rollback of configurations.