David Chappell's Taxonomy of Cloud Platforms and Microsoft

By John Osborn
August 22, 2008 | Comments: 1

cumulus.gifThe use of the term "cloud computing" to describe a host of new Web-based platforms and services invites a range of responses from anyone inclined to run with that metaphor. What kind of clouds are we talking, about, for example? The layers of stratus that precede the arrival of a rainy warm front on the Maine coast or the towering cumulus clouds that gather over the Rockies on a July afternoon?

And what's in those clouds anyway? Perhaps the wacky-flying machines of a Miyazaki animated movie, or the cloud-dwelling monsters of an H.P. Lovecraft horror story. (Of course, if you want real cloud computing, you need a visit to the National Center for Atmospheric Research in Boulder. But that's another story).

What's clear is that a new kind of computing infrastructure for building applications is taking shape. It resides "off-premises" - that is, beyond the traditional networked IT centers of most businesses -- and is available to anyone through a variety of business arrangements via the Internet. What's confusing to those of us exploring the substance of this trend for the first time, is the sheer variety of open source and proprietary offerings that are "out there". Are any of them truly platforms, suitable for building and supporting applications that will be consumed by thousands or millions of users, and more importantly, how are we meant to knit these services together to build something useful?

Now David Chappell, a big picture consultant, who often writes for Microsoft and presents at major Microsoft events, has proposed a taxonomy of cloud computing platforms services in a 13-page paper entitled "A Short Introduction to Cloud Platforms." David has taken the stage each time Microsoft has tweaked its distributed computing paradigm, from COM, DCOM and COM+ to DNA and BizTalk. This time he's back with his take on cloud platforms. His just released paper is a refinement of ideas he first presented at Microsoft Tech Ed 2008 in June (still available at Tech Ed online to registered attendees only). Because it's sponsored by Microsoft, the paper may shed light on how Microsoft views its own evolving offering and what we might see when the Company unveils more of its long awaited cloud platform at its Professional Developer's Conference in Los Angeles this October (though Chappell claims this is not the case).

Chappell says that to understand what's needed in a true cloud platform, we first need to distinguish it from other types of cloud application. In Chappell's taxonomy, a cloud platform is one that "lets developers write applications that run in the cloud, or use services provided from the cloud, or both." Or put another way, think of a cloud platform, he says, as "any software that provides developer-accessible services for creating applications," which in an ideal world would include languages and tools, traditionally a Microsoft strength, as well as a variety of programmable system and applications services. Some are beginning to call such software "platform as a service (PaaS)" to distinguish it from "software as a service" (SaaS)," such as Microsoft Virtual Earth, and from "attached services" (also called software and a service by Microsoft) such as Microsoft Office Online.

book coverbook coverbook cover
For a complete list of all things Web 2.0,
visit web2.oreilly.com

Thus a company that hosts a Windows Server 2008-based web application on it's own PC servers is not exactly offering a cloud platform; the platform, in this case, is Windows and its tools . Browser-based consumer services like Virtual Earth, or attached services like Office Online, also don't qualify because you can't build anything with them, unless, of course, their functionality has been exposed through APIs (more on that later).

To understand what's required of a cloud platform, David writes, we need to draw on our understanding of the traditional "on-premises" application platform, which typically comprises these three parts:

  • A foundation: nearly every application uses some platform software provided by the machine it runs on, such as the OS services of Windows or Linux, standard libraries and languages, such as .NET or J2EE, and file system storage, such as raw byte storage through NTFS under Windows or more structured storage through SQL Server or MySQL or some other database product. Sometimes the foundation is provided in the form of a specialized platform like Dynamics CRM, which hides the underlying OS and its system services from the developer, and simplifies the development of certain kinds of business applications.
  • Infrastructure services: In a modern distributed computing environment, applications also frequently use services running on other machines (or increasingly, virtual machines), including: remote storage, such as Oracle DBMS, Microsoft SQL Server, MySQL, or IBM DB2; identity services, such as Microsoft Active Directory or some other LDAP server; and integration services, such as Microsoft BizTalk or IBM's Websphere Process Server, which enable applications to communicate with each other.
  • Application services: As more and more applications become service oriented, their functions are becoming available through APIs for use by programs as well as users. This includes both packaged software, such as SAP, Oracle Applications, or Microsoft Dynamics, as well as the large number of custom applications enterprises have developed for their internal use. Enterprise applications these days frequently incorporate such services into their architecture, and Microsoft has exposed more and more of these to its Windows developers in a consistent object-oriented way through the addition of new frameworks to its .NET platform.

If the complex on-premises computing applications of today are to move successfully to "the cloud," all three types of service will need to precede them, and new kinds of services will be required. That's because the needs of traditional on-premises applications and cloud applications are different. To cite just one example, on premises applications, even though they might be distributed on an intranet across many machines and locations linked by high-speed networks, are nevertheles designed to support, at most, enterprise-scale use. By contrast, the whole point of moving applications to the cloud is to scale them to the Internet and make them available to thousands and millions of simultaneous users. The computing environment in which they will run is likely to be provided by one of the massive server farms being built out today by Google, Microsoft, Amazon and Yahoo, to name the "big four," where processors and storage disks number in the thousands and the application may be instantiated hundreds or thousands of times as demand rises and falls.

Today, there is no platform that provides the services and tools developers need in one convenient package that is in any way analogous to what's available for traditional "on-premises" applications. Amazon, surprisingly, comes the closest, and pieces of a future platform are to be found from a variety of vendors, but the stack is incomplete. Here's how Chappell categorizes some of these offerings:

  • Cloud foundation services: The most well-known example of an in-the-cloud OS at the moment is Amazon's Elastic Compute Cloud, with which customers can run Linux instances in virtual machines. From the point of view of the developer, Linux is the OS. Developers can use whatever local support they prefer, a J2EE app server with MySQL in one instance, and Ruby on Rails in another. At the same time, an ecosystem of additional infrastructure services is beginning to form around EC2, such as Hadoop, as noted recently by Amazon developer evangelist Jeff Barr in his blog on "The Emerging Cloud Service Architecture."

    So far, however, EC2 seems more the exception than the rule since most other foundation services hide the operating system and limit the local support functions available to the developer. Google's AppEngine supports Python Web Applications and includes a hierarchical data store with its own query language. Force.com supports a narrower type of data-oriented business application and is programmed with Apex, another proprietary language. Microsoft's CRM Live resembles Force.com in targeting business applications, but like Google AppEngine provides its own local data store. And so on. What's missing is a platform from Microsoft that supports standard .NET libraries, languages and tools (though in theory there no reason one couldn't build a Mono app on an EC2 Linux VM) and facilitates the deployment of Windows VMs to cloud computing facilities.

  • Cloud infrastructure services: While many cloud applications need nothing more than foundation services, others benefit from "distributed storage, common identity, integration and other infrastructure services." Amazon's Simple Storage Service (S3) is one solution for remote storage, and Microsoft SQL Server Data Services (SDDS) is another. Amazon's Simple DB is similar to SDDS. All three are limited, but provide a scalability not possible with more traditional relational databases. The recently announced Amazon Elastic Block Store raises the bar dramatically by providing storage to EC2 applications that can be formatted to support traditional relational databases and other non-Amazon structured data.

    For integration, Amazon offers its Simple Queue Service (SQS) while Microsoft provides BizTalk services. Amazon, Google and Microsoft each have their own identity services, though of the three, Microsoft Live ID is the only one designed to be used with other cloud platforms, as is the open source OpenID standard.

  • Cloud application services: This final category is the most populated and most used category today, from the public Google search APIs, to Google Maps and Microsoft Virtual Earth, to Google Contacts and Windows Live Contacts. Facebook, Twitter, MySpaces, Picasa and many others have joined or will join the party, not to mention the proprietary applications that enterprises have built for their own businesses, such as WalMart's legendary supply chain management system (whose APIs will likely remain private). New services appear weekly and there is no end in sight.

You can play your own game of assigning your favorite service to one of these categories. And as Chappell points out, it's not as though cloud computing is about to entirely replace on-premises computing, rather they're likely to coexist forever and draw on each other's assets. To quote Chappell, "a cloud application can be built on a cloud foundation, just as an on-premises application is built on an on-premises foundation. Both kinds of applications can access infrastructure and application services provided on-premises and in the cloud. Just as on-premises platforms support today's applications, cloud platforms provide services for the applications we're likely to build tomorrow."

What makes Chappell's taxonomy more than a geek's parlor game is the fact that it provides a framework for understanding Microsoft's current cloud offerings and suggests what's to come. The Company has rolled out a number of infrastructure and application services over the past year, but there are no foundation services comparable to those available from Amazon and its growing ecosystem of complementary third-party services and tools. (For a look at the kind of application architecture possible today on Amazon, see the recent AWS Developer Connection blog by Jinesh Varia, "White Paper on 'Cloud Architectures' and Best Practices of Amazon S3, EC2, SimpleDB, SQS.").

For one reporter's view of how Microsoft's services appear to fit Chappell's taxonomy, take a look at the recent blog by Mary Foley "Piecing together Microsoft's cloud-computing vision," in which she bravely attempts to categorize several Microsoft projects known only by their code names - "Red Dog", "Zurich", and "Oslo" and so on -- as well as existing services. We'll be hearing more from Microsoft itself in the weeks ahead, and there's reason to believe that when we next see Chappell's taxonomy, it will be in the form of a four-color poster at PDC 2008, its three layers called out and studded with Microsoft service offerings and tools.

Meanwhile, to return to the somewhat facetious question asked at the beginning of this discussion: is the "cloud" of cloud platforms going to be a towering cumulus or pervasive layer of stratus? I think the answer is "both." On the one hand, there are examples of Chappell's platorm service types - foundation, infrastructure and applications services - throughout the cloud today and there are many ways to assemble the parts. Call that a vote for stratus.

However, while startups like Twitter have shown it's possible to build a cloud application using Amazon's various services, it's not always possible to achieve the scale or reliability customers demand. If a single vendor, like Microsoft, can provide reliable computing and an integrated cloud platform supported with easy to use tools and languages for development, deployment and management, customers are likely to line up. At the very least, there are going to be advantages in the higher bandwidth and lower latency to be gained by running your application on a single platform, and the higher productivity developers with good tools can achieve will trump the complexity of assembling infrastructure from diverse components. Call that a vote for a towering cumulus.

You might also be interested in:


Thanks for posting this, I listened to the Cloud Computing piece on NPR All Things Considered and this paper is a great follow on to that piece.


Popular Topics


Or, visit our complete archives.

Recommended for You

Got a Question?