Thursday, April 12, 2012

Scalable computing changes more than you may think

Cloud computing offers scalable processing and scalable data stores, and these are revolutionary changes in computing.

Prior to cloud computing, processing and data storage in a data processing facility were known, fixed entities. You knew how much CPU you had. You knew how much storage you had. (You had paid for them, or leased them, and the invoice clearly listed the provided equipment.)

The earliest mainframe computers were (physically) large, expensive, and slow. Due to their expense, people strove to extract the most value from them. They did this by scheduling jobs in such a way as to keep the processor busy most of the time. The thinking was that an idle processor was an indication of over-paying for computing equipment. (And that thinking was correct. An idle processor was returning no value on the investment.)

Jobs were designed to fit in to the schedule. Rather than assume unlimited processing and storage and designing your system to meet business needs, you assumed a finite subset of available processing and storage and you designed your system to first fit within the constraints of the equipment and then (and only then) meet the business needs. If the true business needs required an application that was larger than the available processing and storage, you adjusted your business to fit within the equipment constraints.

Minicomputers allowed departments (not corporate headquarters) to acquire computing equipment, but again it was a fixed resource. You knew how much equipment you had. You knew the limits. Applications had to fit within resources.

The PC revolutions (first DOS, and later, Windows) distributed equipment to people, but kept the model of fixed-resources. The programs became more numerous but were still constrained to the "minimum system requirements".

In all of these models, we had to design systems to fit within fixed resources. The practice of allocating scarce resources, and the assumption that resources are scarce, has become ingrained in our thinking. So ingrained that no one questions it. Many companies have project planning methods and practices that assume fixed resources.

Cloud computing changes the assumption of fixed resources.

The big advantage of cloud computing is scalability: processing and storage are available on demand. Yes, they cost, but the incremental costs for processors and gigabytes are low.

Cloud computing's scalability works both ways. You can "scale up" during a "rush" period (say, the end-of-year holidays). Once the rush is over, you can scale down, reducing your use of processing and storage, and reducing your cost of equipment.

Previous hardware configurations did not have the ability to scale up and down. Mainframe computers were pretty much fixed, although upgrades were available. But upgrades were large, complex operations, involving the insertion (or replacement) of circuit boards and cables. Vendors made it (relatively) easy to upgrade and (relatively) hard to downgrade. And upgrades required advance planning -- they were certainly not available on demand.

PCs were better at upgrades than mainframes, in that upgrades were cheaper and could generally be completed within a few days.

In the days before cloud computing, that is when you purchased or long-term leased equipment, scaling up meant the acquisition of hardware. Once acquired, it was hard to scale down. (Possible, but definitely not easy.) You could do less with the equipment you had, but you were still paying for the expanded hardware.

Cloud computing, with its abilities to scale up and scale down, and to do so on demand, changes the game. It's no longer necessary to fit within the currently available hardware configuration. If you have a new application and it requires more CPU, you can accommodate it quickly. You do not need to tear apart your server room, install new servers, and upgrade your power distribution units. And if the new application is a bit of a flop, you can discard it and shrink your hardware down to the original configuration.

We've seen small companies cope with overnight success by using cloud computing. (Prior to cloud computing, companies that became wildly successful and outstripped their ability to expand their hardware quickly became unsuccessful, as performance slowed and customers were unable to complete transactions.)

The mindset of slow, steady, predictable growth can be replaced with one of growth as customers demand. The new mindset can even accept reductions in demand because costs have shifted from the "fixed" column to the "variable" column.

More than that, the mindset of "design to fit within known hardware" can be replaced with "design to meet business needs". This may be a difficult change. The first step is to acknowledge the assumption.

No comments: