A couple days ago, I received a call from a friend asking me a very simple question: "What criteria should I use to decide which applications I should move to the cloud?" Not having a direct answer myself, I searched the web, and to my amazement, I could not find a clear and simple answer to the question. So, we are all making so much noise about cloud computing, but seem to be unable to articulate simply what we put in the cloud. I started approaching things from the opposite direction and remembered that a cloud environment typically consists of a large amount of small standard servers that are virtualized and typically run multi-tenant applications. This got me going, as it brought the criteria back to a simple series of questions:
Knowing that cloud environments consist in large datacenters of low cost x86 servers running in a virtualized environment, I believe following criteria should at least be taken into account:
- No direct interaction between the application and the hardware (otherwise the application cannot run in a virtual environment)
- Many tasks can be performed in parallel and each task can run at satisfactory speed on the type of server used by cloud service providers (standardized x86 servers)
- Where applications are performance intensive and require support for high processing loads, I/O and memory then these are more suited to a scale up approach on a dedicated server.
Beside those two key criteria other aspects to take into account include:
- If the application is used by many users, having a multi-tenant approach will reduce the footprint required as it allows running multiple users on the same code base. In this case, one has to ensure that any customization of the application can happen outside of the common code base
- In multi-tenant applications, data can be stored in separate databases or in a shared database environment (with separate or shared schemas). The fundamental question to keep in mind here is the criticality of the data and whether the proposed security levels protect the data satisfactorily.
- How much data needs to be transferred to and from the application. If the numbers are large, calculate the true bandwidth available and assess both the cost and time needed to get the data in the right place.
- And then, there are the security aspects that need to be taken into account. Where security can be addressed, it is done differently than for traditional applications, meaning an application rewrite might be necessary.
All this being said, the basic question remains: which application should we move to the cloud? I would suggest starting with a non-business critical application that does not use highly confidential data. To take full advantage of the cloud, the application should be architected with SOA principles in mind, and, depending on the amount of users, a multi-tenant approach may be taken.
The benefits of moving the application to the cloud include, beside the cost aspects, the capability to respond quickly to varying demand, using the elasticity available in the cloud. According to the Cloud definition proposed by NIST, elasticity means:
"Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time."
The drawbacks include the lower levels of control available, as the environment is managed by an independent third party and as the ecosystem used to provision the service is not transparent. Cloud based services have availability levels that match the best datacenters, but where, in case of a datacenter outage, contacts with the management team can easily be established, it's not available in a cloud environment. It is more the lack of information on the outage, its causes, duration etc., that makes users nervous, than the level of service provided. Here again, the question has to be asked to whether one is ready for this uncertainty.
I am sure this list of criteria is far from complete, and I am looking forward for your comments to improve it. I believe however, we need to be able to equip IT departments with a clear and simple criteria list for them to decide whether to move to the cloud, and in case they do, what applications to start with.
Posted
09-07-2009 3:30 PM
by
christianverstraete