About “Deploy Like the Pros”:
For instance, there’s a common omission that causes hours of downtime: forgetting an index on a foreign key constraint. (…) If you start from the premise that your build pipeline should be able to catch all mechanical errors like that, (…)
I think SchemaCrawler could be mentioned. Its linter has a rule for that purpose:
schemacrawler.tools.linter.LinterForeignKeyWithNoIndexes