What is an application? Well, like many things the answer varies widely based on who you ask. Consider the case of an online ticket booking application. If you ask the users of the application what the application is, then it’s a web page or a series of web pages. If you ask the application development team, they will say it’s a collection of source code, configuration files, static content, etc. The infrastructure team will tell you the application is the application server, web server, and operating system. If you go further and ask the hardware folks what they think, they will likely say the application is the virtualization platform running on their server. As you see, a question seemingly innocuous as ‘What is an application?’ is actually anything but.
Now, you may say, ‘Who cares?!? Is it important to agree on what an application is?’ In general, I would say no. In my mind, it is not all that important that different facets of an organization agree on what they consider an application to be. As long as they can communicate their view point to others, everything should proceed reasonably smoothly. However, in the world of PaaS, I believe that an agreement on what the term application means is of paramount importance.
I have discussed the many different approaches PaaS providers can take concerning the delivery of their product. I think the particular approach one chooses is a critical choice, but a look at the bigger picture reveals a larger set of challenges. The move to a hybrid cloud approach is a shift that seems inevitable. This shift to hybrid clouds will encounter many issues, and the shift to hybrid PaaS environments will not be exempt. From a technical standpoint, one of the key obstacles that hybrid cloud computing needs to confront is the need for meaningful commonality of management. We all know that the key unit of management depends on the type of cloud (IaaS vs. PaaS vs. SaaS), and in the context of PaaS the application is the focal point.
This brings us back to my original point of defining an application. How can a hybrid cloud platform for PaaS provide meaningful commonality of management if there is no general consensus on what constitutes an application? The answer is simple: it can’t.
Let’s consider a simple example to put some concreteness around this. I have a hybrid PaaS platform, and I log into the management console to manage an application that is potentially running in multiple cloud environments. I decide that I want to attach a policy to that application that describes scaling behavior – perhaps based on response time. There are two things that can happen at that point. Either they hybrid cloud platform takes this directive from me and translates it for each and every cloud provider, or the hybrid cloud platform sends this information in a manner every provider can interpret and enforce.
I think, or hope, that we would all agree the latter option is more tenable. If a hybrid PaaS tool can only give meaningful management if it knows lots of details about each underlying cloud platform, well, we won’t have many hybrid PaaS tools. That said, there is no way for the latter option to occur in the absence of some sort of standard. That includes a standard (I don’t mean standard in the literal IT sense necessarily) of what an application entails. After all, how could you enforce a scaling policy on an application if you cannot determine what an application is??
Considering this, what would you say an application really is? Is it a grouping of HTTP URIs? This seems to be the easiest way to describe an application but would be lacking in many scenarios (EJB applications to name but one). I wager that if you really sit down and think about a common way to describe an application you will end up debating with yourself! I think the issue of defining an application is critical toward the ongoing success of PaaS, and I also think it serves as a reality check for hybrid clouds in general. While there is definitely a larger shift toward the hybrid approach, we clearly have a long way to go.