How the Code Consultant Bot tought me about a potential solution to Drupals' deployment horrors.

The gist is that by explaining your question to someone (or on Stackoverflow, or to a Duck, or a chat-bot), you think about the question in more abstract, simpler or different ways. It very often solves my problem.

I took the bot out for a test-drive. Posing my favorite problem to it: How to properly deploy Drupal without downtime and tedious manual configuration (answer: you cannot). Here is the transcript:

berkes@jabber.org 11:20:28
Hello
code-consultant@appspot.com 11:20:32
Hello, I'm your Code Consulatant
Ever notice how just talking through an issue with a co-worker is enough to help you solve a problem, even if they don't say a word? 11:20:32
Let me help you with your problems so they can keep working. 11:20:33
How do you do. Please state your problem. 11:20:33
berkes@jabber.org 11:20:49
I want to deploy Drupal without downtime.
code-consultant@appspot.com 11:20:49
What would it mean to you if you got to deploy drupal without downtime ?
berkes@jabber.org 11:21:10
then I would not need to take the site offline while rolling out a new release
code-consultant@appspot.com 11:21:10
You say then you would not need to take the site offline while rolling out a new release ?
berkes@jabber.org 11:21:18
yes
code-consultant@appspot.com 11:21:18
You seem to be quite positive.
berkes@jabber.org 11:21:43
how would I release a drupalsite without taking the site offline?
code-consultant@appspot.com 11:21:44
Why do you ask ?
berkes@jabber.org 11:22:26
because Drupal stores its configuration in the database. The same database that contains the content.
code-consultant@appspot.com 11:23:09
What database are you using ?
berkes@jabber.org 11:23:16
MySQL
code-consultant@appspot.com 11:23:16
You're going to have to tell me more.
berkes@jabber.org 11:23:32
MySQL relational database
code-consultant@appspot.com 11:23:32
Is your database well normalized ?
berkes@jabber.org 11:23:37
yes, it is.
code-consultant@appspot.com 11:23:37
You are sure.
berkes@jabber.org 11:23:55
Well, no. You are right, that is part of the proble,
code-consultant@appspot.com 11:23:56
Are you saying no just to be negative?
berkes@jabber.org 11:24:27
how would I normalise Drupals database?
code-consultant@appspot.com 11:24:27
Liquibase would help you manage your database better.

LiquiBase. I am not sure about the practical application of this tool, and if it will fit well into a Drupal workflow. But from the description, it tries to solve exactly the Drupal Deployment Problem.

In the very least, it helps. a lot:

Rollback database to "tag". Woa. If your deployment fails, whether or not you did that with any of the tools such as hook_update_N, Features, or whatever, there is still no rollback. Yet. Here it is.

Database diff changelog generation. Especially usefull on your development machine: it allows you to record all the changes you made while developing the new release for your site. Even if such a changelog helps you to write a release-script manually, it is very helpful. Did you never forget to set that one checkbox on live, because you forgot you had it checked on your development machine? Causing a Giant Shipment of Fail?

This article was published on webschuur.com. And migrated to this blog.

Posted on 15 March 2012
in

About the author: Bèr Kessels is an experienced webdeveloper with a great passion for
technology and Open Source. A golden combination to implement that technology in a good and efficient
way. Follow @berkes on Twitter. Or read more about Bèr.