Keeping deployments boring
A good deployment is one nobody talks about afterwards. We aim for small, frequent releases that can be rolled back with a single command.
Feature flags let us separate shipping code from enabling it. Database changes are applied in two steps so that the old and the new version can run side by side for a while.
None of this requires expensive tooling. It requires agreement in the team and a little discipline at the start of every project.