Couple of days before I mentioned I came across the concept of ROC (Recovery Oriented Computing). Today, I came across one of its research paper about Microreboot technique that can be employed for enterprise applications at a component level. They have taken JBoss J2EE application server and have implemented and tested this concept. Their idea is that most of the problems are resolved on a restart (or reboot in other terms) of the application server or the physical machine itself. But such reboots are fairly costly interms of downtime so the idea of microreboot is to boot individual components of the application (for example EJBs or WAR files in J2EE). By such microreboot all exisiting references of a component including resources including threads are destroyed and recreated. The Classloader of individual components themeselves are not destroyed in such a reboot, so static variables wont be re-intialized.
EJBs they cant be rebooted individually because they may maintain references to other EJBs that can span across containers. Thus, whenever EJBs are microrebooted the entire group of EJBs will be microrebooted. To determine this group the information is obtained from deployment-descriptors.
Their results show that there is significant improvement in recovery time while perseving the functional distruption, application state and cluster load dynamics. In order for to have microreboot the application must be carsh-only.
At this point I dont know the cost of making an application crash-only. Depending on the cost of writing cash-only software we can determine how effective this idea would be for businesses! I would want to explore that in the future.
Refere: Microreboot - A Technique for Cheap Recovery