If you have a new module and you need to run `setup:upgrade` then I don't see a way where you can have zero downtime. It's always going to be 10-20 seconds down because you need to upgrade the database. Or am I missing something?

Even if you're deploying to a different folder and then when all files are generated you symlink the live environment to this folder, you still have to take care of the database.