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