So far, public cloud computing services have been used most frequently for software testing and development environments and for hosting brand new applications. But as they grow familiar with the technology, organisations are increasingly interested in using cloud services to host their existing applications.
Information Age recently spoke to Gartner analyst Richard Watson about the various methods of doing this, and the circumstances in which they are appropriate.
The most common method of moving an application to the cloud is simply to rehost it on an infrastructure-as-a-service offering such as Amazon Web Services’ EC2 or Rackspace’s Cloud Servers. The only changes that an organisation needs to make to an application to do this are configuration changes, such as the name of the server and the location of the storage disks. It is ideal, therefore, for applications that they cannot or do not wish to tamper with.
But according to Watson, the simplicity of rehosting an application in the cloud is also its main drawback. “The ability to scale out cloud infrastructure comes from being able to distribute the workloads across multiple servers. If your application isn’t designed to do that in your own data centre, then it’s not going to happen in the cloud either, unless you change it.”
That is not to say that rehosting is not worth doing – it still allows organisations to pay for infrastructure using operational spend. “But you won’t get the scalability benefits unless your application is already designed to scale out,” Watson says.
Put simply, refactoring means doing just enough to migrate an application to a platform-as-a-service cloud offering such as Microsoft Azure or Google App Engine. “You can’t just forklift an application onto a PaaS, because the way they handle security, authentication and data access is generally very different,” explains Watson. “You’ll need to break open the code in order to use the new frameworks and libraries in the platform.”
How much of an application needs to be ‘refactored’ depends on the PaaS in question. Using Azure, for example, is much like running .NET applications in a normal Windows server environment, and the changes required are relatively minor, Watson says. “But when you use something like Google App Engine, which is very different from an on-premise server, you have to change your application quite a bit.” Watson says that while few organisations have yet used PaaS for production applications, interest is running high. “Almost every company I speak to is interested in PaaS,” he says.
Refactoring an application is doing the minimum required to move it onto a PaaS system, Watson explains. But in order to reap the maximum benefits from the scalability of cloud infrastructure, more fundamental changes to the architecture of the application may need to take place.
“You may need to do some very significant work to an application to make it cloud optimised,” Watson says –a process he refers to as revising the application.
“Revising could mean moving to a ‘shared nothing architecture’, where you have many redundant servers, each working with their own copy of the data so they don’t have to share access,” Watson explains. “This gives you a very high degree of scalability and resilience to failure.”
This kind of revision is not easy, and many IT departments may require outside assistance. The guiding principle on whether this kind of revision is worth paying for should be the value of the code in question, Watson explains. “If that code contains financial algorithms or business processes that are unique to your business and provide you with differentiation, then you’ll want to revise or refactor the application,” he explains. “But if there’s no intrinsic value in the code, you may just want to rebuild it.”
For rebuilding applications in the cloud, Watson points to what he describes as “rapid application development platforms”, such as VMware’s graphical programming service WaveMaker, Salesforce.com’s PaaS Force.com and independent Long Jump.
By removing the requirement to provision and configure hardware, these services allow developers to build applications very quickly.
It may therefore be more cost effective for organisations to rebuild their applications in the cloud than attempt to port them across.
One significant barrier to this, and to all cloud hosting options to some degree, is cultural. “Application owners and architects often believe that the only thing that can satisfy their requirements is a completely customised solution, with its own servers and application server tuning experts. When you move to platforms and infrastructure delivered as a service, you are giving up on the idea of being able to reach behind and touch everything. That’s a difficult one for people to accept culturally if they’ve built their careers on being specialists.”