DRY Programming – But What About Application Provisioning???
It’s too damn hard to provision enterprise applications… but let me digress for a minute.
Don’t Repeat Yourself is a term you hear a lot around new web development environments and platforms like Ruby on Rails and Grails. Coding by convention is another term of its ilk – if you keep doing a certain class of activity that results in the same old repeated stuff afterwards, why can’t you get a system to do it for you so you don’t have to repeat yourself all the time.
While development tools and agile platforms embrace this concept, core runtime systems like Java and .NET are doing so as well – and that’s actually novel. Groovy (Java’s younger sibling) takes it to a whole other level. For example, why create access methods for private variables when that’s what you intend to do 9 times out of 10? Make it easy – build it into the runtime platform, not into the IDE to generate code for you.
Even if you’re not a coder, you probably get the point. Why repeat the same thing over and over when the “system” should make it easier to not repeat yourself. And we know there are agile runtime and development platforms being created to make building applications much simpler by adhering to the basic DRY principle.
But guess what....Installing and provisioning traditional application platforms like WebSphere or IIS is still a really hard, error prone, and full of repeated procedures. “For every node in the cell, open up this XML file and modify such and such… rinse and repeat… start application, test it to find the problem that you just created, because you screwed up the previous steps.”
So what about a runtime platform - can’t we make them easier to install and configure (provision)?
The answer is “yes” and here’s how: You build a distributed runtime system that can take an application and externalized runtime settings (like all those configuration files that change in your application server) and dynamically configure plain vanilla distributions of the application servers/platforms, deploy the application, and activate the system. The key here is that a person is not allowed to actually configure an actual running instance. It’s all done through configuration and policy files stored centrally and used by the runtime system.
This is what FabricServer does, in case you were wondering… Anyway, stay DRY!!
