Cloud computing is starting a revolution in applications. If your perspective on cloud computing is that it's like your established computing mode, just outsourced to an external provider, you're wrong - and you face a painful transition period during which your assumptions and practices will be wrenched and dislocated beyond all recognition.
A combination of the infrastructure capabilities of cloud environments and next-generation application requirements are causing this transformation. The result will be something faintly recognizable as an application but vastly different in design and operation from what you used to call an "application."
You can easily understand the reasons for this sea change by contrasting the characteristics of traditional applications with the new applications enabled by and depending upon cloud infrastructure. The following table illustrates key differences between traditional and cloud applications:
As you can see, traditional and cloud applications differ in several critical aspects. The assumption underlying traditional applications is that their characteristics can be forecast upfront: How many people will use them, what devices will be used to access them and how much infrastructure will be required to run them.
Cloud Applications Means Elastic Infrastructure
Today's applications are completely different. It's impossible to predict load; the very makeup of the user population is unknown, since it includes not only employees (traditionally the only significant user population) but also an unknown number of customers, partners and interested parties - that is, floating populations of bystanders directed to your application due to its novelty or notoriety.
By the way, that unknown user population won't be accessing your application with a limited number of IT-approved devices. It will be using an ever-increasing number of computing devices (PCs, tablets, and smartphones) and, in the future, objects barely recognizable as "computing devices" - think smartwatches and single-application specialized hardware, not to mention special-purpose devices such as medical monitoring machines.
The back end of your application won't run in the stable confines of a dedicated infrastructure, either. First off, it probably won't be your infrastructure; it will come from an external provider such as Amazon Web Services, Google or Microsoft. It certainly won't be running on dedicated hardware; the practices and economics of cloud providers depend upon shared infrastructure that fluidly shifts from one customer's workload to another's.
The configuration of your application's infrastructure definitely won't be static, either. It will grow and shrink as application loads vary. This will be due in large part to the way you're charged for the infrastructure resources you use.
In traditional application design, you forecast how much infrastructure you need, then purchase that amount as a capital expenditure. While it's difficult to really predict how much resource you'll need to run an application, the amortized cost of the resource is consistent: It's the inexorable depreciation of the infrastructure, which never varies whether the resources are 100 percent loaded or runs without a bit of load.
Sign up for Computerworld eNewsletters.