Just before the holidays I had a really interesting conversation with my friend Bill Takacs, who works at Gear6. It is a company that offers memcached appliances, used in applications that have very high data loads that preclude using a database as the primary means of data access. He shared with me a common pattern he sees in companies that are heavy users of memcached, which, after some thought, I concluded offers a vision of the future of cloud computing operations.
What he said is that they are seeing companies put together applications which appear to be standard web apps, but in fact are something far more complex. Rather than a Web page being built by accessing a data source, resulting in a displayed page, these companies applications are web pages constructed on the fly from a number of different mini-applications–widgets, if you will–custom constructed per user, based upon the user’s history, immediate interactions, and common patterns of usage discerned by analysis of aggregated user interactions–and most of the widgets are, in themselves, heavily loaded, memcached-enabled applications.
In other words, a Web page is built from a portfolio of high-volume applications, some proportion of which are assembled to create that individual Web page. Bill uses the phrase “composed apps” to describe these constructed-on-the-fly applications. As you can imagine, constructing and operating these applications is complex, but they will represent an increasingly large percentage of future “enterprise” applications.
Huge Data is the Future
One of the things we discuss in our cloud computing presentations is that the scale of data is exploding. According to a study IDC did last year about enterprise storage needs, over the next five years structured data (the traditional row-and-column information contained in relational databases) will grow at a 20+ per cent rate over the next five years. However, unstructured data will grow at a 60 per cent compounded rate during the same timeframe. This results in structured data storage requirements doubling, while unstructured data storage requirements will increase seven-fold. Seven-fold! In other words, application scale is increasing–dramatically so.
At large scale, variations in system load that, in traditional, smaller applications, would have been managed within the context of the unutilized capacity of a single server become major swings in resource needs–to the point where load variation can result in needing to be able to dynamically add (and subtract!) virtual machines.
Moreover, this variability is going to be common–even the norm–in the future, so the ability to respond to dynamic app load by rapidly altering application topology will be a fundamental IT skill. More to the point, the demand for dynamic scaling will outstrip the established practices of most IT organizations, based as they are on stable application environments and occasional topology modification through manual intervention by sys admins.
A different way to put this is that, with scale growth, the standard deviation of average application workload with respect to common resource allocations will increase, dramatically. As an analogy, if the local restaurant experiences a short-term 10 per cent growth in demand, it can typically respond by ordering a few more foodstuffs from the local restaurant supply company. If McDonald’s experiences a short-term bump in demand, accommodating it has repercussions throughout an extended supply chain. At large scale, change in demand can’t be met by throwing a little more memory in a machine or sticking another server in the rack. It requires adding tens or hundreds of systems and terabytes of storage. And when the demands shifts to the other side of the average load, the large standard deviation necessitates releasing just as many servers or just as much storage.
Dynamic vs. Orchestrated
Obviously, the scenario I’ve just laid out is what cloud computing is designed for. The UC Berkeley RAD Lab Cloud Computing report identifies “illusion of infinite scalability” and “no long-term commitment” as key characteristics of cloud computing, which address the challenges outlined in the previous section of this post.
However, there is a difference between having a characteristic and being able to efficiently take advantage of that characteristic.
One of the capabilities many vendors tout with regard to their cloud management offerings is “orchestration.” By this, they mean the ability to define a desired set of compute capacity in a single transaction, with the underlying infrastructure (i.e., the orchestration software) obtaining the necessary individual resources that, combined, make up that capacity. And there’s no question that orchestration is useful, even necessary, as far as it goes. However, it goes only part of the way to addressing the future application management needs of cloud computing.
Too many offerings stop with the initial provisioning of resources, and leave subsequent resource level adjustment in the hands of a system administrator, who is expected to add or subtract resources as necessary–via the good old-fashioned hands-on methods. This essentially leaves the established practices, designed for an older, smaller-scale computing world, in place–with the unquestioned inability to adjust to the future of IT operations. Failing to improve a set of processes to respond to a changed world is sometimes characterized as “paving the cow paths.” Automating initial provisioning while leaving ongoing operations unchanged is, perhaps, worse: it’s strapping a jetpack to the cow, but hewing to the same old paths. More importantly, it leaves IT organizations exposed to being unprepared for the future needs of large-scale application management.
Tomorrow’s applications will require more than orchestration; they’ll require dynamism–the ability to rapidly, seamlessly, and transparently adjust resource consumption, all without human intervention. Absent dynamism we’re left with buggy whip processes in a motorized world. It can’t be put any more bluntly than this: just as the (perhaps apocryphal) story about telephone call growth projections in the 1930s predicted a future in which every woman in American would be needed as a telephone operator, the growth of computing will, if current processes are left unchanged, require every able-bodied technical employee to be administering machines in the near future. Just as the future of every woman donning a headset never came to pass, neither will the future of massed ranks of sys admins&it’s economically unworkable.
What This Means
The nature of IT operations will change as much over the next five years as it has changed over the past 50. If you thought the Internet changed computing, wait until you see big data and the applications it engenders. There’s no question that cloud computing, whether a public or private/internal variant, is the future of computing. The challenge is that most of us (and I certainly include myself in this) have not yet begun to fathom the implications of infinite scalability and highly variable demand. We can expect to see massive stress in IT operations as it grapples with how to respond to workloads that are orders of magnitude larger. And, just as many mourned the passing of the friendly, service-with-a-smile telephone operator, many people, both inside and outside of IT, will grieve for the old days of smart, hands-on sys admins.
What one can predict for this new world is this:
1. A need for highly-automated operations tools that require little initial configuration and subsequent “tuning” because they operate on AI-based rules
2. A huge amount of turmoil as sunk investment in outmoded tools must be written off in favor of new offerings better suited to the new computing environment
3. A change in the necessary skill sets of operations personnel from individual system management to automated system monitoring and inventory management
4. A new generation of applications designed to take advantage of new computing capabilities and respond to the needs of huge data