← Back to team overview

launchpad-dev team mailing list archive

Re: RFC: Is readonly mode fixable, or should we ditch it entirely?

 

On 2011-06-14 08:50, Robert Collins wrote:

In terms of development process we would land schema changes that are
compatible with the python code on devel - just the schema change, no
python code changes at all. Then we'd do nodowntime deploys as normal
up to and past that revision; when a good time to do the downtime
arrives (e.g. we might set a fixed time of the day or week) we'd do
the downtime deploy described above. After thats live developers would
then land code that uses the new schema / populates new columns etc.
This is something I suggested a few years back in my "weekly devel 
rollouts with safe DB patches" proposal.  Needless to say, apart from 
having no clue about deployment practicalities I'm all for it.  :-)
When I proposed weekly devel rollouts the response was that a rollout 
took too long to do on a weekly basis, but this is no longer true.  By 
my calculation back then, even for a modestly complex schema/code 
change, rolling out a slow succession of safe increments would look like 
more work but would beat a monthly "full" rollout to production rollout.
And that was based on weekly rollouts, which pale in comparison to what 
we can do now!  IMHO the extra work of producing safe increments is in 
most cases preferable over the waste, planning pressure, and frustration 
inherent in synchronizing with the monthly rollout.
Your notion of "a devel branch must pass tests and have either only code 
changes or only schema changes" sounds like a convenient and reasonable 
rule.  It ensures that the branch does not rely on synchronicity between 
schema and python changes.
If I understand the design correctly we'll also need to lockstep 
deployment whenever we go from deploying database patches to deploying 
python branches or vice versa: an app server can't start accessing a new 
column before all databases have it in their schema, and no database can 
drop a column before all app servers have stopped accessing it.  We 
can't reorder patches freely, e.g. do all the database patches in one go 
and then all the python changes, but there's ways of dealing with that.

Jeroen


Follow ups

References