> Speaking of postmortems, reading through the Google Doc of their outage timeline, my first postmortem question would be why is the website dependent on the database being up?
You can't do anything with GitLab without the database being available.
> Shouldn't there at least be a fallback that says "We're offline right now sorry" when the database is unavailable? Or in the name of extreme transparency, have it frame or show a link to the google doc of the outage?
We have a deploy page, but it requires us to explicitly enable it, which can be easy to forget. I do think adding a link to our Twitter status to the error pages could be useful, or maybe a widget of some kind.
> My second question would be how often do we test failures of a read slave, of the master, and of pgbouncer?
In the past we tested certain scenarios whenever necessary. For example, when introducing new parts of the database load balancer we'd test what happens if we terminate X or Y. However, we do not yet do periodic chaos monkey style testing, which has been on our todo list for quite a while.
> Do we at least have a practiced procedure for manual failover if not an automatic failover?
Failovers are actively worked on (https://gitlab.com/gitlab-com/database/issues/91, https://gitlab.com/gitlab-com/database/issues/86, https://gitlab.com/gitlab-com/database/issues/40). Right now our failover procedure is still quite painful, and it's easy to make mistakes. We held off using this approach for our maintenance because of these reasons, and also because a failover usually results in 2-3 hours of slow loading times. Ironically we ended up with just that.
> My third question would be what sort of alerts do we have, if any, on replication lag?
Plenty: https://gitlab.com/gitlab-com/runbooks/blob/810824765ec45534...
In this particular instance they go to a Slack channel called "#database", and this channel has been on fire with alerts since the problem started.