The murmur of Cloud Computing today, is bound to build up to crescendo in the years to come simply because it makes sound business sense. Cloud Computing is a new paradigm in the world computing. The cloud essentially creates an illusion of infinite computing resources which are available on demand to the user who only pays based on the usage. While on the surface it appears extremely simple and straightforward, making an optimal use of the cloud is no trivial task.
Prior to deploying on the cloud the enterprise has to decide the CPU, memory and bandwidth usage of the application. For e.g. the Amazon EC2 provides several variants of CPUs based on different pricing schemes namely 0.085c/hr, 0.34c/hr or 0.68c/hr for small, large or extra large CPU instances. There are different pricing schemes for memory and bandwidth usage as well.
While the technological challenge of deploying the cloud is a separate endeavor in itself, the business considerations needed for deciding the cloud computing resources, optimally, is a separate and an equally important endeavor. This article focuses on the business considerations needed for making an optimal choice of resources while deploying on the cloud.
Since the enterprise is free to choose different CPU s which typically consists of CPU processors with different clock speeds or multi core CPUs for extra large instance the choice is really complicated.
The designer needs to consider how his application scales up with respect to increasing, decreasing or burst demands in traffic. To estimate the kind of resources that would be needed would require a good understanding of how the application scales with respect to increasing traffic. Ideally it will be remarkable if the application can scale linearly with increasing traffic. However applications closer to the real world can be represented as a discontinuous function, where the point of discontinuity would be when the application crashes ;-)
In fact we can say that “the ability to scale will decrease for increasing traffic even though the number of resources are added”.
Also another consideration is to choose is the kind of resources types that need to be added. Ideally it would make more sense to add small CPU instances which can be added incrementally rather than adding extra large CPU instances which are only handling part of the traffic. If we choose the large instance which is only partially used but has to be instantiated to handle the extra traffic then it could result it wasting of precious resources.
A prime consideration is the choice of CPU resource type and the need to understand how the CPU loads up with increasing traffic. Once the CPU type, either small, medium, large or extra large is chosen the designer needs to monitor how the loading of the CPU resource performs with increasing traffic.
Hence regardless of the choice there will be 3 windows of performance to consider
a) Window of Optimality : The optimal window where the cost of cloud computing resources, the ability to handle the incoming traffic and the revenue for the enterprise are profitable
b) Window of Diminishing Returns : In this window the need to add extra resources at additional cost will not result in a proportional increase in scalability. In fact the increasing cost of adding additional resource will offset the revenue to the enterprise as the application will not scale appropriately
c) Window of Loss This is the window which no enterprise should find itself in. In this window the cost of adding the extra resources will be larger than the revenue to the enterprise as an inordinate amount of resources will have to be added for small incremental increase in scalability. In this situation the enterprise must go back to the drawing room and re-architect the application.
Hence cloud computing, while truly alluring for the enterprise, it is a path that must be tread very carefully by the enterprise.