Adopting Cloud for Scalability - The Way forward
With this article, I would like to continue our deliberations on cloud adoption (refer to my previous articles: "The Story of the Digital Cloud - Cloud Computing" and "Adopting Cloud for Business: An Organizational Perspective" for introduction to cloud computing, and different requirements and challenges to adopt this computing paradigm). We shall discuss a broad picture of scalability from the business perspective, and how it translates well as we move into the cloud.
We cannot remain muted to increasing demand from businesses to have cognitive computing accessories like storage (aka memory), network (aka communication), and processing (aka learning) readily available. In fact, large accumulated data ('big data' - a discussion may be found in the article, Bizarre Data versus Big Data - A Normative Shift) must be crunched to make the right business decision at right time. The data storage must be available for the programs to act up those. The data must be processed to arrive at a correlation or a causative value(s). Finally, this information must be conveyed to the business user as and when required, to say precisely, on-demand. That is where scalability comes into the picture; so also, the cloud.
If we want our information system would work efficiently to achieve the above objective, we must have adequate storage facilities, the ability to run powerful computing processes, and above all, a broad and available network to transmit data/ information from and to the business user. The system must also be fault-tolerant and reliable. At the same time, the business users (owners, to say correctly) will not like to sit on a huge pile of computing resources and pay for idle time. Rather, the correct preference would be to acquire more resources as needed and release resources when not needed. To put this differently, the business user should have access to scalable resources; and have the ability to scale resources up and down on demand.
This scaling is inherently managed within a cloud. Cloud Resources include resources like storage, network, and processing that work in tandem with one another (figure 1), which are always available more than what is required (figure 2). Of course, it will need monitoring and subscribing requisite resources - may be done manually by self for occasional data crunching needs or through different cloud automation tools if it is a continual need. In this article, please note that I am not going to talk anything about the achievement of scalability inside the cloud system itself or different technologies involved therein; in fact, it will be a different article in the coming weeks.
Ascertaining adequate resource allocation entails the knowledge of resource requirements. This requirement will not only increase with time; it can decrease too. Basically, it will vary. If we are handling disposable data without any meaningful needs beyond a certain period (for business or compliance), we can cull those after use. This will not increase the storage requirements in a monotonous way. But in all probability, you may like to retain most data not knowing how future events will turn.
On the other hand, network, and processing, requirements would push for real-time scaling of the respective resources. For example, you want to process 100 million PDF conversions at a given time. Then you need requisite processing resources at that point in time. Scale up your processing resource. But then you will be happy to release those resources (until the next need) and save dollars.
Similar is the case with network resources. Citing another example, you would need high use of network resources when you are conducting a live event and streaming it to your partners and customers. It would lead to a difficult situation if you will be asked to assemble the entire streaming infrastructure set up before the event and dismantle it immediately after. Add to it, and think of the situation when you need to live streaming on a regular basis. Yeh, I am overstating my inclination and understating yours - we know that we opt for the cloud in such a situation. But, we made our point - we need scaling on demand.
Scalability will lose ground if the allocated resource, be it storage or bandwidth (read network) or processing falls short of the requirement at a given time. Cooperative planning helps the vendor (of cloud, of course) manage available resources by sharing the idle resources among the users effectively. This is cooperative resource management in an environment of multi-tenancy; and it is the way forward to make a balance of cost in the cloud. But then, we decided that we shall talk about it later in a separate article.
There are people who would want to distinguish between scalability and elasticity. But I would rather treat both through a single-window for resource engagements and allocation processes. Basically, I want to restrict my discussion to the objective reality rather than putting in an abstract puritan view. You may differ though.
Concluding, we must have a holistic view of different kinds of resources when we look at scalability. We should understand that the natural way for the realization of scalability lies with the Cloud. And, managing scalability of cloud resources must be viewed vis-a-vis the optimal use of those resources to reduce your IT spending and improve your business performance.