Say CIAO to the DEVOps blues
TL;DR There are four basic ideas that can make you DEVOps deployments easier for everyone.
Based on a talk given at the Microsoft Reactor on Thursday 15th August 2019.
As a result of doing a lot of deployments in Azure both for our own team and for multiple third parties I have come up with four basic principals that can make your life a lot easier.
A deployment must be:
- Comprehensive
- Idempotent
- Audited
- Orchestrated
The aim of these principals is to make the PRODUCTION deployment easier, often by doing the work and taking the pain as early in the process as possible.
So before we go into detail:
By the time you deploy to PRODUCTION there should be no active thought required.
A PRODUCTION deployment should be like performing a play by the time you hit the stage you need to know what you are doing and be able to say the lines without having to ‘remember’ them. The recall needs no conscious thought, instead you can concentrate on the acting.
I strongly advise that your deployment to UAT should be identical to your PRODUCTION deployment as its a test that the PRODUCTION deployment will work as intended, think of it as your dress rehearsal.
In fact your SHARED DEVELOPMENT deployments should follow these guidelines as well, from the very first deployment, which in our case is an empty deployment that just proves that the automation is working. I think of these as full run throughs.
If you need to try things out then we have the luxury of PERSONAL DEVELOPMENT environments where the developer can do as they see fit. These are like workshopping a scene, or developing a character.
So back to the four principals:
- A deployment must be comprehensive. It must deploy everything required. If multiple resources are involved it must deploy and configure all of them. This prevents things being left out.
- A deployment must be idempotent. It must end up in a known state regardless of the current state. If it fails due to an environmental reason, e.g. you run out of capacity, once the environment is fixed rerunning it must not require any additional actions. This prevents managing failed deployments.
- A deployment must be audited. The person who authorised it and all the actions it performed must be logged. This prevents mysterious occurrences when no one knows what happened or why.
- A deployment must be orchestrated. A single process must run the entire deployment, there can be no set of processes that must be run in sequence. This prevents things being run in the wrong order.
I’ll follow up on each of these in a more detailed blog in the new year.
TL;CR There are four basic ideas that can make you DEVOps deployments easier for everyone.