Maximizing data, minimizing code - what are the limits and challenges?

I would like to create a very high availability (never start the server, deploy without rebooting, etc.) an application with a client (possibly a 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 the big logic dynamically readable from the database so that all configuration (including all GUI configurations, text translations, etc.) ., business rules as well as data) remained on the server in the database rather than in code that requires a restart to be read into executable memory.

I would like to be able to customize any aspect of the application without restarting the client or server, and have the applications reflect the changes as late as possible (dynamically loading classes, etc.).

What are the performance and other constraints when designing such a never-kill system? Has anyone been able to create such an application? What was the main lesson? When it is not cost effective and more traditional collection, release, qa, steam-downtime is required?

+1


source to share


2 answers


Something not too different to consider using a highly static and small codebase around a script interpreter like Rhino:

http://www.mozilla.org/rhino/ScriptingJava.html

This way all logic and data can be translated into reloadable scripts and the only main part of the program is the script runner and the wrapper part.



This is definitely bad for performance, I think it's a given.

If I remember correctly, Yegge posted something similar on his blog, so if you talk to him again, ask him about it.

+1


source


I was working on a game MUD server that did dynamic compilation of scripts, so almost everything in the game was volatile and recompiled at runtime without having to disconnect users.

Perhaps the biggest lesson I learned from this project was that when you write code so flexible so that it can do anything, it does nothing.



Ultimately, the users of the system no longer entered the data — they were writing a cryptic kind of code language that was unique to my system.

Be careful with flexibility - adding flexibility to your code is like adding elbows to your arm. It's good to have a couple of joints to get where you want to be, but if you have too many elbows it becomes weak and difficult to direct.

+3


source







All Articles