Yesterday's Stack Overflow downtime got me thinking about this a bit...
I live in Australia (though this is probably true for most people in a non-US timezone) and am constantly greeted with "... is down for maintenance" right in the middle of my work day. In fact, in the last week we've had Google Wave, SO and Campfire all take turns going down. (Sad, Sad Panda :()
Being in Australia, the middle of the day on Monday, one of the busiest times of the week is normally when service operators based in the US (as it's Sunday night there) decide to do maintenance. I realise that services like SO and Google Wave are free so fair's fair but especially when Campfire went down I thought, "Surely we pay the same as any other client for this application and can therefore expect the same level of service?"
While I've worked developing web applications for a number of years, I've almost always worked on projects involving internal systems for a highly localised user base. So I've never had the "When's the best time to take the system down" issue.
But I wonder, is there a way to perform graceful maintenance of a web application? (let's assume it's something already in production state for simplicity) I'm sure there are SO members out there who have and do tackle this issue often... How do you do it? Is it possible not to adversely affect overseas users of your service?
Also, if anyone has any insight into how big players such as Google or Twitter handle this kind of thing I'd be really interested to hear about it. I know they DO have downtime but it's not as much as you'd expect for the number users they support and features they release. So they must have some kind of way of handling maintenance (at least minor stuff)...
Edit: I've taken on board advice from a couple of members here and posted this question on Server Fault to see what the SysAdmin perspective on this issue is. You can find the question here:
http://serverfault.com/questions/116543/graceful-maintenance-of-web-applications