I wonder what environment you are working in where 10-20 seconds, or even a few minutes, of downtime would be a dealbreaker. Naturally, that's not ideal, but I have to imagine that's a pretty small price to pay, especially if you deploy during non-peak hours.
M2 developer documentation: Deploy Magento to production. As of this writing, the docs are sparse, and link to an external GitHub issue for discussion. However, those official docs are a good place to keep an eye on.
My team is investigating using Capistrano to deploy M2. We have not settled on a final process yet, but a simple Google search ("capistrano magento 2") shows that a number of people are experimenting with the same.
Finally there are various schemes like blue-green deployment that also seek to minimize downtime. Blue-green in particular is like having a staging server, but at the critical time you update DNS to point from blue to green, making green into live and blue into "staging." For the next deployment blue becomes live again. This way downtime is theoretically zero, and changes happen as quickly as the DNS change propagates.