Building Cloud-Based Application Platforms

It seems that cloud computing conversations are slowly beginning to march up the stack. Much of the initial focus in the space has been on cloud-based infrastructures such as servers, storage, networks, etc. To some degree, cloud-based approaches to this layer of IT are becoming more of a norm and less of an exception. As this happens, the industry begins to look at the next layer of the IT stack in the context of cloud computing: application platforms.

Cloud-based application platforms are intriguing in that they promise to shift the focus of cloud computing to what is important, the application. In its ideal form, users describe their applications, the application's dependencies, service level agreements, and then they hit the easy deploy button. The cloud platform renders the underlying infrastructure and provides a robust, dynamic runtime for the application.

If charged with building and delivering a cloud application platform, my end goal would be to render both the infrastructure and application platform software as a black box to end users. That is much, much easier said than done.

Recently I chatted with a colleague about this very same topic, and I realized just how much would go into delivering such a solution to end-users. I left that conversation with several different requirements, but to give you an idea I'll share three with you here:

1) Robust stable of platform software: It is no secret that enterprises run their applications on a diverse set of platform/middleware software. This includes simple web servers, J2EE servers, databases, mediation containers, rules engines, data grids, and much more. To be viable in an enterprise setting, cloud platforms will need to deliver a wide array of application platform software.

2) Operational and runtime management services for applications: In order to absolve the user from having to tinker with the application infrastructure, the cloud platform will obviously need to understand how to deploy applications to the platform software. Beyond the operational aspects of just getting the application out there and running though, users will expect the cloud platform to supply runtime management services as well. This includes elasticity, fault tolerance, high availability, etc.

3) Extensible foundation for runtime service delivery: When I say runtime services, I am talking about hosted, managed function that applications running on the platform can leverage. These services supply functionality like messaging, billing services, search capability, authentication management, and a myriad of other things. In my opinion, as the number of players in the cloud-based application platform grows, these runtime services will be a key differentiator. Providers that offer a vast array of quality services are likely to attract more users to their platform. It is unrealistic to expect that a given provider has both the resource and expertise to deliver the complete set of services that would attract users, so the foundation for these runtime services must be well-documented and extensible so as to be attractive to the provider's partners.

Clearly, there is quite a bit to providing a solid application platform in the cloud. The requirements above do not even begin to scrape the surface, and just those are a pretty tall order for any potential provider. I am definitely interested to hear what you think will be requirements for cloud application platforms, so send me your recommendations on Twitter @damrhein.

Dustin Amrhein joined IBM as a member of the development team for WebSphere Application Server. While in that position, he worked on the development of Web services infrastructure and Web services programming models. In his current role, Dustin is a technical specialist for cloud, mobile, and data grid technology in IBM's WebSphere portfolio. He blogs at http://dustinamrhein.ulitzer.com. You can follow him on Twitter at http://twitter.com/damrhein.