Profile

Monday, March 10, 2014

Understanding Reslience




Let us start from defining the meaning of Resilience.  Stockholm resilience center of the university of Stockholm defines Resilience as “::

“The long term capacity of a system to deal with change and (to) continue to develop (in face of this change). For an ecosystem such as a forest, this can involve dealing with storms, fires and pollution, while for a society it involves an ability to deal with political uncertainty or natural disasters in a way that is sustainable in the long-term.”

For an IT system, the above definition suffers from a shortcoming that the phrase “capacity of a system is not well defined.  Let us define this “Capacity” as the Time required to make a change as well as the Effort (and therefore cost) required to make a change to an IT system.  We can therefore modify the definition of a Resilient system as follows:  A system’s ability to deal with change in short time and without much expenditure of effort

A resilient system then is one that exhibits the following characteristics

1.    The relationship between Time & Effort spent (and therefore cost) to make a change and the number of changes is more or less a linear function of the latter.  A mathematical representation of this can be Y (effort) = aX(number of changes) + b and   Z(time) = cX (number of changes) + d 
2.    The Value of "a" and Value of "c" is small.  That is there is only a small increase in effort or time with every additional change introduced in the system

Experienced practitioners know that there are many systems where the time and cost of making a change is a non-linear function of the number of changes that the system is subjected to.  Systems that show this non-linearity cannot be deemed to be resilient systems. Such systems are non-resilient. 

The cost non-linearity exhibited by non-resilient systems has a significant impact on the competiveness of companies.  The amount of unnecessary money that a company spends in maintaining these systems is the money that they could have used to source new infrastructure – infrastructure that would have made their companies more competitive.  There are many real life companies where so much money is spent in maintaining old systems that there is not much money left to buy software for other areas of business.  

Often in large corporations software systems run mission critical operations. The perceived risk in changing these systems is very high. Since the operations being supported are mission critical, everyone remains fearful of replacing old systems by new lest something stop functioning.  As a result software systems in large corporations tend not to be replaced for decades. To remain contemporary, these software are regularly subjected to modifications.  As they are modified it is important that these systems remain resilient.  If they do not remain resilient, then as we discussed earlier, the corporations will be forced to spend increasing amount of monies just to maintain the old systems.

This topic of Resilience is not just a matter of concern of large corporations but also of equal concern to product companies. The case for building resilient systems is clearly compelling for enterprises. The case is equally compelling for software product companies.

For Software Product companies building Resilient products is a matter of survival.  This is because their products have to serve a diverse set of markets.  Each market has its own requirements. Each market has a certain rate of change driven by factors such as regulatory requirements, evolving customer needs and competitive dynamics.  Products are continuously subjected to these changes that emanate from market realities. The greater the number of markets that a product is installed in the greater the quantum of changes that the product is subjected to. For a product to remain competitive it must be resilient to allow for quick and effortless incorporation of these changes.

No comments:

Post a Comment