StarMX is a framework to support dynamic adaptation behavior in Java EE enterprise systems and to develop self-managing applications. StarMX utilizes JMX features and can be integrated with different policy/rule engines to enable self-management capabilities. Reza Asadollahi descibes the StarMX framework and how to use it to build self-managing systems.
- Posted by: Nuno Teixeira
- Posted on: March 26 2009 17:16 EDT
- Re: New Article: Using StarMX to Build Self-Managing Systems by Joseph Ottinger on March 26 2009 19:27 EDT
- Re: New Article: Using StarMX to Build Self-Managing Systems by William Louth on March 27 2009 04:23 EDT
- Re: New Article: Using StarMX to Build Self-Managing Systems by William Louth on March 27 2009 04:24 EDT
- A few comments by Reza Asadollahi on March 30 2009 18:28 EDT
Link to the article (it's on the right-hand side, but come on...)
I hate to be the party popper but none of the "realistic" examples are actually realistic. The problem is that assumes that the person developing the code actually understands both the local & global system execution context(s) and can easily formulate corrective actions that have no unwanted side effects outside of the local execution context. This is rarely the case and is so evident in the fact that today software products have performance & capacity problems that are misdiagnosed (if at all) for months at end. Before trying to run you should learn how to walk. That starts with attempting (I mean that) to understand the software activity being managed in terms of execution flows, state management (and transitions), resource usage, direct & indirect co-ordination,.... Self-* initiatives fail when they take the observer & analyst out of the equation. This person has a much more holistic view. It takes a sufficiently long time to truly understand what one is looking at and to determine the primary cause-effect chains. The best that can be done with software beyond hello world examples is to collect data at the appropriate execution/state points to help one effectively model the system at a level that is manageable whilst being relatively accurate. "The reserve of modern assertions is sometimes pushed to extremes, in which the fear of being contradicted leads the writer to strip himself of almost all sense and meaning." - Winston Churchill William
I hate to be the party popper but none of the "realistic" examples are actually UNrealistic.
I would like to thank Willaim for the mentioned points. I totally agree with him. Of course before addressing self-managing concerns like performance, a considerable amount of effort is needed to understand and analyze the problem, then we can try to design a solution, which is quite similar to the process of software development (first analysis then design). Once you have found the solution, the question would be, "Is is possible to address the issue automatically and make software adaptive?". If the answer is yes, then a framework like StarMX is helpful. If no, what can we do to automate it as much as possible? In the autonomic computing paradigm, during the development of the software, we also think about the self-managing issues. We should specify the self-managing requirements (for example based on SLA) and design the system with regard to the expected self-* capabilities. In this case, we identify and instrument the required set of sensors and effectors in the software to be used by the self-managing logic later for monitoring and effecting purposes. Similar to the business logic of the system that evolves during the time, the self-managing logic becomes more complete gradually. However, I don't say that it is easy to come up with an appropraite design for self-managing concerns in the early stages of software development, but we can do our best! I would like also to encourage the readers interested in autonomic computing and self-managing systems to look at An architectural blueprint for autonomic computing, written by IBM. Reza