Question

I have a large web application in ASP .NET (not that the technology matters here) that does not currently have a way to be locked down for maintenance without current users losing their work. Since I have not implemented something like this before, I would like to hear about some of the standard precautions and steps developers take for such an operation.

Here are some of the questions that I can think of:

  • Should each page redirect to a "Site down for maintenance" page or is there a more central way to prevent interaction?
  • How to centralize a scheduled maintenance such that user operations lock down before the site is locked down. Thus preventing loss of unsaved work.

The application is data-driven and implements transaction scopes at the business layer. It does not use load balancing or replication. I may be wrong, but it does not 'feel right' to have the BLL handle this. Any suggestions or links to articles would be appreciated.

Was it helpful?

Solution

One way to make a maintenance page is to use the app_offline.htm feature of IIS. Using this feature you will be able to show the same html page to all your users notifying them about the maintenance.

There is a nice post here in StackOverflow about it. ASP.NET 2.0 - How to use app_offline.htm.

Another thing you could do is to notify your users that there is a scheduled maintenance so that they also be aware and stop using the application.

That all depends on the time you need to upgrade your application. If the upgrade is to upload the new files and take not more that a minute or two, its most likely that your users wont even see it.

OTHER TIPS

A non-answer answer that may be helpful: design the application so that it can be upgraded on the fly transparently to its users. Then you never have a maintenance window that users really need to worry about. There is no need to lock down the application because everything keeps working. If transactions get dropped, that's a bug in the application because there is an explicit requirement that the application can be upgraded with transactions in progress, so it's been coded to support that and there are tests that verify that functionality.

Consider as an example Netflix: does it have a locked down maintenance window? Not that the general public ever knows about. :-)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top