top of page

What does "deploy" really mean for DevOps


ree

DevOps is a development pattern that integrates development and operations. The classic definition of DevOps causes an unalignment of perception between the Project Managers/Stakeholders and the DevOps engineers


The area of DevOps that is misunderstood is the phase "Deploy". The notion of deploying is and loaded term. The word deploy can mean so many things. In effect, it can invoke incorrect assumptions and expectations.


Using the word "Deploy", is assuming some of the following:

  1. There is an existing infrastructure where their code can be deployed to.

  2. The infrastructure has been configured in such a way where when the code is deployed everything is operational

  3. Secrets have been setup

  4. Migration steps have been completed

In actuality, the list above is included in the "Deploy" phase of DevOps. For that reason, when setting expectations it's important to use the right language to not give the wrong perception of what is actually required to deliver a product.


Here we can expand the phase of deployment into the following "Generalized" phases:


1 - Onboarding

This phase is most commonly misunderstood by most developers or projects managers. It's the phase where the DevOps team setups the pipelines to be able to "Deploy" to an environment.


Automated:

Can be but usually is not


Automation Difficulty:

High


Includes:

  1. Naming Convention

  2. Service Provider setup

    1. This can be Azure Subscription as an example


2 - Initialization

Initialization is meant to cover the setup tasks that have no dependencies and are automatable. These steps are steps that are required for any other task to be executed.


Automated:

Yes


Automation Difficulty:

Medium


Includes:

  • Core Resources Creation

    • Key Vault

    • Storage Accounts

  • Secret Population

  • App Registration

  • Domain Setup


3 - Provision

The provisioning phase is meant to cover the creation of the resources of an environment. This will also include the security and property setup of those resources.


Automated:

Yes


Automation Difficulty:

Medium


Includes:

  • ARM Template



4 - Configuration

The configuration phase is meant to draw all the connections between the resources. This phase is essentially the place most items that have a vast amount of dependencies exist.


Note:

Having a configuration phase can eliminate the dependency cycle problem. Connecting dependent resources require those resources to exists. Separating the creation and the configuration of the resources allows for dependencies to be controlled much easier.


Automated:

Yes


Automation Difficulty:

High


Includes:

  • App Settings

  • Secret population

  • Required Storage Account File Setup

  • Database Seeding


5 - Deployment

The deployment phase is meant to only publish code artifacts to the provisioned resources.


Note:

The point of this article is that this phase is what stakeholders perceive is the entirety of what an automated pipeline needs to do. Having this perception is dangerous as there is more than an automated pipeline is required to do increasing the amount of hidden risk.


Automated:

Yes


Automation Difficulty:

Low


Includes:

  • Web App deployment

  • Database Dacpbac deployment


Conclusion

Consultants can change the language that is used when describing the deployment phase of DevOps to better-set expectations and provide a more accurate evaluation of risk. This is paramount if consultants are to provide customers the best chance for success and minimize the number of escalations.


HTek Consultants try to refer to the deployment phase of DevOps as "Delivery".

Delivery is better suited and holds a higher perception of work and risk.

 
 
 
bottom of page