Zero-downtime for web servers/services is very easy. In most cases. Even if the web server needs minutes to start.
It's a trickier, if you (must) have persistent connection from client to (app)server and have a state. And a lot trickier, if you will upgrade (big, xxx gigabytes in size) schema or whole relatioanal database.