The DevOps engineer's handbook

DevOps glossary

Amazon Web Services (AWS)

Amazon’s pay-per-use cloud service with worldwide data centers. The service includes:

  • Virtual machines and networking
  • Application hosting on servers and virtual containers
  • Web storage
  • Databases

See Amazon’s AWS website for more information.

Azure

Microsoft’s pay-per-use cloud service with worldwide data centers. The service includes:

  • Virtual machines and networking
  • Application hosting on servers and virtual containers
  • Web storage
  • Databases

See Microsoft’s Azure website for more information.

Blue/Green deployments

A popular deployment pattern. A Blue/Green pattern uses 2 production environments that swap roles between live and staging with each release.

For example, if the live version of an application is on your blue server, you use the green server for staging and testing before redirecting traffic to it. After cutover, the blue server then acts as the new staging area.

Build server, build service, or CI service

An automation tool has a huge role in Continuous Integration and Continuous Delivery.

Build servers have 3 purposes:

  • Compiling committed code from your repository many times a day
  • Running automatic tests to validate code
  • Creating deployable packages and handing off to a deployment tool, like Octopus Deploy

Build servers save developers time otherwise spent on manual processes, while process repetition makes results more predictable.

Examples include Jenkins or GitHub Actions.

Canary deployments

A popular deployment pattern. A canary pattern releases updates to a handful of production targets for testing before rolling out to the rest.

Named after the old early warning system for miners, it helps detect problems early and without impacting your whole service.

Chaos Engineering

Chaos engineering is a method that allows for failures while still providing an acceptable service for users.

Popularized by Netflix (who built a tool called Chaos Monkey that randomly causes production failures), chaos engineering accepts problems happen and encourages building system reliance.

Chaos engineering also helps you find:

  • Weaknesses in your systems
  • Redundancy - if something goes down and doesn’t affect your users, do you need it?
  • Where automation can help keep your systems running

Read Chaos engineering and runbooks for more information.

CI/CD

CI/CD describes the combined practices of Continuous Integration and Continuous Delivery. Together they form DevOps’ most important workflows.

Code promotion

The process of successfully tested code moving through your development environments. For example, code deployed to a test environment may get promoted to a production environment if it passes QA testing.

Configuration as Code (CaC)

Config as Code is a way to manage application or operating system settings through text files in a code repository.

Managing settings through code offers the following benefits:

  • Save time through standardizaton - why spend time changing settings when adding identical infrastructure?
  • Version control - know what’s changed and when, and roll back if needed
  • Audit logs - see who changed what

Container registry

A container registry catalogs and stores container images. It acts as a directory for team members and deployment processes.

Container

A lightweight virtual machine that runs or hosts an application. Usually hosted on cloud services.

Containers are non-changeable and disposable. Developers usually launch new versions of their products on new containers and destroy the old ones.

Container image

A container image is the definition or template of what will become a running application in a container.

Continuous Delivery (CD)

Continuous Delivery is the practice of deploying updates as often as possible, rather than in large batches. Doing so allows you to:

  • Get faster feedback
  • Reduce the risk of an update breaking something
  • Make rollbacks easier
  • Increase predictability and confidence

Much like Continuous Integration, Continuous Delivery involves automating as many of its processes as possible. It can also include human steps, such as testing and approvals.

Continuous Delivery is one-half of the workflow we call CI/CD.

Continuous Deployment

Continuous Deployment is a form of Continuous Delivery that is fully automated and deploys every version instantly.

Continuous Integration (CI)

Continuous Integration is the practice of committing code many times a day. Doing so allows you to:

  • Find find faults faster
  • Lower the risk of updates causing problems
  • Have more predictable results

Continuous Integration also involves automating processes between code commits and creation of a deployable artifact.

That includes:

  • Compiling of code
  • Automatic testing
  • Packaging of successful code

Continuous Integration is one-half of the workflow we call CI/CD.

Read An introduction to build servers and continuous integration for more information.

Deployment

A deployment is the process of sending or installing deployable artifacts to targets where applications will run.

That could include physical and virtual media like servers or cloud solutions.

Deployment pattern

A deployment pattern is a strategy that helps reduce downtime and other problems when deploying applications.

There are many standard deployment patterns, like Rolling, Blue/Green, and Canary.

Read Common deployment patterns and how to set them up in Octopus for more information.

Deployment target

A deployment target is a physical or virtualized server or cloud service where you deploy your application for testing or use.

Example deployment targets include:

  • Windows or Linux servers
  • Cloud services (Azure, Amazon Web Services, Google Cloud Platform)

DevOps

DevOps is a development methodology that helps tear down barriers in software delivery, including:

  • Manual processes
  • Office politics
  • Counterintuitive support workflows

Read An introduction to DevOps for more information.

Docker

Docker provides the leading technology for building and running containers. The Docker format, OCI, is open source and industry standard, supported by all major operating systems.

Docker Hub

Docker Hub is Docker’s container registry service. It allows developers to catalog and store container images.

DORA metrics

DORA is the DevOps Research and Assessment group.

DORA metrics are a predictive link between DevOps practices and business outcomes. You can use Dora metrics to measure the progress of DevOps adoption.

Read DORA metrics - The predictive link between DevOps practice and business outcomes for more information.

Dynamic infrastructure

Dynamic infrastructure describes resources you can spin up and tear down on demand. Dynamic infrastructure can include containers or virtual machines.

Read Release management with dynamic infrastructure for more information.

Environments

An environment is a collection of deployment targets. It could include physical or virtual servers, and cloud services.

Environments also form a deployment’s lifecycle. Most development teams use at least 3 environments like:

  • Development
  • Test
  • Production

A deployment gets promoted through these environments as it passes checks and testing.

Feature branching

Feature branching is the Git practice of working in distributed development.

This means developers work on new features in separate branches and merge changes into the main branch when complete.

Read Feature branching web apps for more information.

Google Cloud Platform (GCP)

Google’s pay-per-use cloud service with worldwide data centers. The service includes:

  • Virtual machines and networking
  • Application hosting on servers and virtual containers
  • Web storage
  • Databases

See the Google Cloud Platform website for more information.

Git

Git is a software and method of source control used for distributed development. Git tracks file changes, mostly to track source code changes between developers.

GitHub Actions

GitHub Actions is GitHub feature that allows you to perform build functions from your code repository without a build server.

Read How GitHub Actions is different to traditional build servers for more information.

GitHub

GitHub is a code repository hosting service for Git-controlled source code.

GitHub is one of the most popular code hosting services. It’s popular with both the open-source community and corporate organizations.

GitOps

GitOps is a framework to automate infrastructure processes using DevOps tools and concepts. With version control you can manage infrastructure and environment definitions with existing tooling.

Read What is GitOps for more information.

Google App Engine

The Google App Engine is a website hosting option from Google for ‘monolithic’ sites. It supports sites written in all major languages.

Read Deploying to Google App Engine for more information.

Helm

Helm is a Kubernetes package manager. Helm uses ‘Helm Charts’ to define and install applications on a Kubernetes cluster.

Infrastructure as Code (IaC)

Infrastructure as code is a way to define the state of virtual infrastructure using files stored in source control.

Software tools can use the files to spin up, configure, and tear down infrastructure.

Jenkins Pipeline

Jenkins Pipeline is a group of plugins Jenkins recommends for setting up a Continuous Delivery platform.

Jenkins

Jenkins is an open-source build server, Continuous Integration (CI), and automation platform.

Jenkins will compile and test your code, trigger packaging, and hand off to your deployment tool.

Kubernetes

Kubernetes is a container management tool that can help you scale an application.

Kubernetes can spin up and tear down automatically as your processes or traffic needs change.

Microservices

Microservices is a software architecture method where you build an application from many independent services. Users access the software through a single front end, unaware of the difference.

The benefit of microservices is if one service has a problem, the application can still run without it. It’s also quicker to recover from problems.

Read Monoliths vs. Microservices and Microservices and Frameworks for more information.

Platform engineering

Platform Engineering is a DevOps team structure that balances autonomy with standard processes. It treats ideal tech and an automated deployment pipeline as one product offered to internal development teams.

Platform Engineering’s benefits are:

  • Easy self-service
  • Ensures following of established practices
  • Less risk caused by decision making

Release management

Release management is the process of promoting software versions through environments with version control.

Rolling deployments

A popular deployment pattern. A rolling pattern deploys to one target (or batch of targets) at a time. This method helps reduce downtime and environment congestion during rollout.

Runbooks

Runbooks are a step-by-step guide to complete a routine or emergency computer process.

Octopus, or other tools, can help you automate runbook processes.

Read Traditional runbooks versus Octopus Runbooks for more information.

Shadow IT

Shadow IT is when people outside of IT use or install tools that their IT department should oversee.

Shadow IT reduces resource transparency and control and adds risk to organizations.

Read What is Shadow IT for more information.

Site reliability engineering (SRE)

Site Reliability Engineering (SRE) is a DevOps team structure made popular by Google. SRE teams help development teams build software in ways that allow the SRE team to adopt the application support.

As with Platform Engineering, SRE helps development teams build scalable and reliable applications. Developers use tools provided by SREs, reducing manual work and introducing capabilities like observability.

Tenants

Tenants is an Octopus feature deploying to Software as a Service (SaaS) applications. They allow you to deliver your package to groups of environments or projects.

Terraform

Developed by Hashicorp, Terraform is a cloud infrastructure management tool. Terraform uses Infrastructure as Code to automate infrastructure setup and operations.

Version control

Version control is a tool used to track changes to code and other files. It can also store build processes and infrastructure config.

Git is the most widely used version control system.

Categories: