Re: Framework for 0 downtime deploys

From: Nikolay Samokhvalov <samokhvalov(at)gmail(dot)com>
To: Zahir Lalani <ZahirLalani(at)oliver(dot)agency>
Cc: "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Framework for 0 downtime deploys
Date: 2021-05-22 12:31:30
Message-ID: CANNMO+LfxEfXbTbCyFaDiFNoMbeofaFucO73nLf4sL3oDEg=Cw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

No silver bullets exist (yet). A couple of things I can recommend:

1. GitLab's experience of changing schema without downtime and maintaining
backward compatibility – they have open documentation and a lot of things
solved and documented
- start here:
https://docs.gitlab.com/ee/development/migration_style_guide.html
- check their migration_helpers.rb, plenty of useful things there

2. What my team and I are doing with respect to database migration testing:
https://postgres.ai/. We created Database Lab Engine, an open-source tool
to clone databases of any size in seconds and test, manually or
automatically in CI, anything you want using "full-size" databases. It can
help you catch and block dangerous changes leading to downtime, as well as
(if you have a well-maintained set of tests for CI) enforce the backward
compability.

Nik

On Sat, May 22, 2021 at 2:12 PM Zahir Lalani <ZahirLalani(at)oliver(dot)agency>
wrote:

> Confidential
>
> Hello All
>
>
>
> I wonder if I could garner some of the wealth of experience on this group:
>
>
>
> Our current application deployments (every 3 weeks) require about 30min
> downtime. We are now tasked of making this 0 downtime.
>
> From all the reading I have done, we have solutions for the infrastructure
> and code deploy, but with regards to the DB the main issue seems to be
> keeping the new deploy backwards compatible – functions/tables/fields – all
> of it.
>
>
>
> That seems like quite a large management task and would require careful
> reviews of changes. Is there any type of framework that already manages
> this type of capability? Or are there aspects of PG that we should be using
> in this regard?
>
>
>
> Thx
>
>
>
> Z
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Thomas Kellerer 2021-05-22 12:32:57 PG 14 - can't upgrade from a database using an aggregate with anyelement and anyarray
Previous Message Zahir Lalani 2021-05-22 11:11:46 Framework for 0 downtime deploys