What are reasons to have a site 'down for maintenance'? I seen a few go down with this message. I have seen others that are never down for maintenance. What are reasons a site may be down? And what can I do (if possible) to not have a site go down (read-only) for maintenance?
Valid reasons for scheduled downtime may include:
There are a number of approaches to reduce downtime, both scheduled and accidental. But it all really depends on the specific requirements of your platform and applications.
Generally, if you are upgrading hardware, sometimes upgrading software, or making any changes where users data might be lost, you are doing maintenance and want to put up a message. Now, depending on how you do your upgrades, you may not need to be down, but if you are a single developer working on a single site/product, it's going to be fairly hard for you to have the redundancy required to not take your site down when making changes.
For software, upgrades are generally fast and don't necessarily require going into "maintenance mode". However, I'll give you an example using Rails: when upgrading a site, you generally have to upgrade the actual code and then upgrade your database so that the code can use it properly (in Rails, this is running your migrations). Many times, code will break if the database does not have the correct tables and columns, so, if you allow users to access your site in-between upgrading the code and upgrading the database, they could potentially see errors. It is usually better if they see a message telling them that the system is down and will be back up at X time.
As far as not having to go down for maintenance, it generally requires separate servers that are fully "redundant" and once the new site is uploaded and ready, you switch all users to point to it. Keeping data redundant, however, is not easy.