What does "deploy" really mean for DevOps
- Hector Flores
- Aug 25, 2021
- 2 min read

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:
There is an existing infrastructure where their code can be deployed to.
The infrastructure has been configured in such a way where when the code is deployed everything is operational
Secrets have been setup
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:
Naming Convention
Service Provider setup
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.