And I am only talking here about those deployments which unfortunately cannot be done seamlessly while the application is running and without even users noticing anything ( except maybe new/improved features ).
My opinion: DON’T ever have a late-night, 3:00 AM or otherwise, deployment.
DO have an early-morning deployment, meaning 6-7 AM, 5 AM or why not 3:00 if really necessary.
It’s the best to come in at work earlier to do such things. People will still be in the office if something comes up not sleeping because they stayed awake in preparation for deployment.
I’ve done my fair share of night-deployments and usually if something went wrong customers started complaining in the morning after starting to use the app and when I was either asleep or just woken up and forgotten what I did some hours ago since I dreamt of fluffy clouds.