Hey HN,<p>I put together this blog post[0] and this repository[1] with supporting resources to immortalize the decision tree and step-by-step run book I used that led to us successfully upgrading the AWS RDS Aurora Postgres database of Medplum's hosted service from v12 to v16 without downtime. There are many write-ups out there on the topic, but just about all of them were frustratingly light on details or assumed the reader was already fluent in the technologies used. This guide and the runbook are anything but light on details and attempts to explain/describe decisions and steps from first principles when possible.<p>As just about anyone who has worked with Postgres version upgrades and logical replication will tell you, there are many sharp edges and a steep learning curve that can only be overcome by doing. I have varying levels of experience with the tools used and by no means claim to be an expert in any of them! I'm sure there are ways this process could be improved and streamlined and would absolutely love to hear any suggestions and field questions from you either here or in the issues/discussions/PRs of the repository.<p>Medplum[2] relies heavily on Postgres and we only intend on deepening our relationship with it and all it has to offer as we continue to grow. That was a big part of our reasoning to justify investing the time to level-up our operational proficiency with Postgres. We're an open source company, so it felt right to make this guide open source too!<p>[0]: <a href="https://www.medplum.com/blog/zero-downtime-postgres-major-version-upgrade">https://www.medplum.com/blog/zero-downtime-postgres-major-ve...</a>
[1]: <a href="https://github.com/medplum/medplum-postgres-upgrade">https://github.com/medplum/medplum-postgres-upgrade</a>
[2]: <a href="https://github.com/medplum/medplum">https://github.com/medplum/medplum</a>