Monday, October 26, 2009

Cloud Applications Part II (aka Cloud Computing Definition #3)

In previous post we’ve coined the first cloud computing definition. Remember it, please: “A cloud application is a computer application developed using a standard computer language that can be run on different platforms. One or more resources used by a cloud application are networked resources accessible via Internet. In addition, resources used by cloud applications are exposed via standard interfaces and protocols and should be interchangeable.” Now, let’s continue talking about networked resources.

Networked resources
This is one of the main differentiators between a “classic” computer application and a cloud application. Cloud applications use resources that can be reached through Internet. These resources are offered by different companies at different prices and, of course, different service levels.

Please, at this moment, think of a networked resource as something similar to a web service but with a lower abstraction level.

When someone decides to build a cloud application, one of the first steps in the development he must perform is to decide which of the resources needed for building the application will be bought from an external company and which of them will be used as part of an in-house strategy. I’ll explain it.

Suppose you are developing a web application to support a student registry in a XXI century school, where all students’ works and exams are digitalized and stored as part of its academic files. Now just think of a simple CRUD application (Create, Read, Update and Delete). The following list could be a typical shopping list for that kind of application:
  • Servers to host and execute web application.
  • Database storage for storing records that will be created and accessed online from the application code.
  • Plain online storage for storing pictures related to students. This storage must be online, since web pages include pictures of the “objects” the application manages. Since we plan to have lots of digitalized data, we discard the use of blobs.
  • Plain offline storage for backup and restore purposes. Let’s assume a weekly backup of the whole database and filesystem-like storage (digitalized exams and works).
You can run the application in your server farm at your datacenter or conversely you can sign a contract with an ASP (Application Service Provider) to host your web application (this could be considered a cloud service).

What to do with the database? You can use your in-house relational database or, thinking about cloud computing, you can use relational cloud storage to store your data.

The same decision must be taken for the plain storage for storing digitalized info from students and weekly backups.

Anyway, all the services you buy from a third-party provider (instead of using your datacenter resources) must have a very clear contract and a corresponding SLA including minimum service levels offered and penalization for running under that minimum.

Please keep in mind the student registry sample, since in next posts I will refer to it.

The relational database, the online storage, the offline storage is what I call networked resources, since the can be accessed from the application wherever they are stored. Please note that we don’t care about SAN, NAS or SQL. For the moment, we are caring only about having a resource and accessing, we are assuming we have a standard platform-independent way of accessing and using precious mentioned networking resources.

Note: We will come back to this point (deciding between in-house or cloud strategy) in future posts when we will expand EMC’s “private cloud” definition from infrastructure level to application level.

Standard Interfaces and Protocols
Although it has been mentioned before, I wish to remind you that the most commonly used mechanisms for performing remote invocation standard uniquely inside each native platform (DCOM on Windows, remoting on .net or EJB on Java). The only real standard platform-independent mechanism that can be used in remote invocation is Web Services, which means SOAP over HTTP. So, it is clear that standard platform-independent mechanisms (like SOAP or REST) is the only recommended way for accessing networked resources.

Interchangeable
Yes, I sad interchangeable, but, at this moment, it is only a desire, or just a dream. We will go back to this complex issue in the future, after discussing Amazon, Windows, Google and others’ cloud strategy.

Summary
Finally, I wish to publish my first Cloud Application Stack.

No comments:

Post a Comment