Sunday, 22 July 2018

Implementing a Continuous Delivery Pipeline

Continuous Delivery

We've all been there. Midnight (or later), eyes darting around the release team, the question hanging in the air like the odour of rotting fruit... You've changed configuration that you might have a record of but probably not, restarted some servers, triple checked the permissions, tried to think back to 2 months ago (if you're lucky) of what is actually contained in the release...

Finally the lead grasps the rotting fruit and sighs: "I think we'll need to roll back..."

It doesn't have to be like this. By establishing Continuous Delivery practices you can reduce the pain of release night to a mere button push, safe in the knowledge that you're pipeline is so robust and chock full with quality gates that you've already caught all bugs and dealt with the usual integration issues. Plus, as you've implemented configuration as code, you know your destination servers are in your desired state, and there can't be any permission or config creep lurking. Additionally, you have had the (at times painful) conversations to ensure TechOps and DBAs know how your release pipeline works; how it is auditable, repeatable and secure. Of course, once your candidate is released, you have a probing set of post deployment tests that validate the release and ensure the environment is good.

Hey, I've been in the first paragraph. I've had to roll back at 1 in the morning, rush home for a few hours sleep and have to try again the next night.

But, having recently achieved a lot of success in implementing an automated release pipeline right through from development to production, I am in the enviable position of being able to pass on the key points that can get you closer to continuous delivery and make those strained release nights a problem of the past. Interested?

I will detail my experiences in a number of blog posts. These posts will consist of:

Implementing a CD Pipeline - the basics 

This will be an overview of Continuous Delivery and the tools/technologies I have used to scaffold a CD pipeline. If you have any interest in this subject whatsoever, you must read the meticulous and edifying Continuous Delivery by Jez Humble and David Farley.

DevOps, and The Politics

The parties that you will need to have on your side, and how DevOps plays a vital role in this.

Powershell DSC

How Powershell DSC is used to configure components on a destination server. Configuration as code.

TFS Release Management

Good practices in building robust, repeatable definitions.

Pester Tests

Validate your deployment with Powershell Pester tests, and create checklists for your environments.

Database Deployments

How I used SQL Server projects with DACPACs to deploy database changes. 

What I need to Improve

Testing! How can you have confidence that what you are going to release to production is fit, if you're not thoroughly testing your candidate?

Check back soon to see this collection evolve!

No comments:

Post a comment