I’ve always been particularly cautious when it comes to deploying code to databases, some would say overly cautious.
Because of this I’ve always performed manual deployments. Checking the code, testing the code and then manually running it in production. I’m responsible for the availability, resilience and performance of these databases so I should be the one to deploy to them, right?
I think this is a mindset that a lot of DBAs have and in my opinion, completely justified. I don’t want to be woken up in the middle of the night because something’s been released to Production in my absence and it’s caused issues.
However over the last few months I have seen the benefits of continuous integration & continuous deployment so I have been looking at ways to automate our database deployments. We use Octopus Deploy at my company so a database deployment process has been built within that.
The tests we’ve done are really promising and last week we started deploying to our Staging environment. If all goes well we’ll be moving to Production soon.
I’m still a little paranoid that something will go wrong if I’m honest. Because of that the database deployments are separate from the app deployments and I’ll be performing them (for now). We have a really good code review process in place so I highly doubt anything will go wrong but it’s just my nature to take changes like this slowly. Validate each step and move onto the next, proving that what you’re doing is working correctly.
The end game here is to integrate the database deployments with the app deployments and have one person performing them. Specialists (like myself) would only be called upon to perform code reviews and resolve any (hopefully none) issues.
I’m off to go and see if we have any Staging deployments to be performed 🙂
Have a good week!
2 thoughts on “Monday Coffee: Database Deployments”
Curious how often you get called outside of working hours for an issue?
When starting a new process at work, do you prepare yourself for being called upon a few times as part of the learning curve?
Very infrequently these days.
Any new process will go through the standard testing procedure and be in place in our staging environment for a period of time.
Once we’re happy that there are no issues (as far as we can tell), we’ll deploy to production. Always during the day so that it can be monitored for a number of hours whilst everyone is in the office.
We have an on-call rota so if there are any issues, the person who’s on will be aware that there’s a chance they may be needed