I would like to design very high availability(never take server down, roll out features without restart etc) application with both client(probably C# gui) and server components(Java,C++,Perl).
I got some advice from (minimize-code-maximize-data.html and Yegge), and I would like to make most logic dynamically readable from database so that all configuration(including all GUI configurations, text translations etc, business rules as well as data) would reside on the server in a database rather than in a code that requires restart to be read into executable memory.
I would like to be able to customize any aspect of the application without restarting either client or server and have application reflect changes with as short lag as possible(dynamic class loading etc).
What are the performance and other limitations of designing such a "never kill" system? Has anybody managed to create such an application? What were the main lesson learned? When is this not cost effective and more traditional build, release, qa, couple hrs downtime approaches are required?