Cloud Computing && SAAS - Are their futures interlinked
Cloud computing is a very eagerly pursued deployment environment especially with the SAAS development community. One of the challenges in developing a SAAS platform is traditional hosting and deployment environments are not good enough to support elastic scalability or simply to support rapid growths in user load. Add the fact that user growth for any SAAS platform is rather 'elastic' the design of the deployment environment becomes the most critical technical aspect for any SAAS platform. Computing Clouds provide an elegant way to address the needs of an elastic deployment environment. In this article the author examines the various cloud computing platforms available in the market.
Understanding the Cloud Computing Deployment environment
7th , 9th no, You got it wrong. This is the geek question, if you aren't aware of what a cloud is you might as well lose your scalability expert credentials if you are one.
Clouds offer you an elastic solution to your application needs. When you are a start up all you would need would be a shared hosted environment , but how about if your app becomes the biggest hit on the planet. Addressing this issue has been the nightmare of all web entrepreneurs, what if i become hugely successful with my first launch.
Obviously you can't build an array of virtualized servers expecting that you are going to achieve sustainable growth.Out of a thousand web start ups only a handful survive the first 2 years and only a few are even venture funded .And out of those only a few survive after 5 years.For example consider that you've been in business for close to 2 years now , but you haven't seen traffic yet that justifies your dedicated server sitting on an optic fiber from verizon. you realize don't even need that, but you anticipate you might become successful by the end of this year and might have a billion users. How can you plan for that event. You cannot be building arrays of virtualized servers when you should be building my app. Or may be you don't have the resources necessary to maintain an array. You have to hire the experts and you can't afford that now?. Even if you can , should you . Do i have an alternative?
Here is where a cloud can help me.The cloud removes you from the hassle of scalability planning. Well you may wonder doesn't my shared hosting provider offer me the same options, they do offer plan upgrades with you growth, but they are not elastic in the sense they are not on demand , and infact ondemand scalability is the most distinguishing feature that seperates it from a typical shared hosting provider.
Who is the best provider
There are a few large providers and a few startups, Amazon EC2 service and S3 environments offer completely owned virtual elastic environments. It allows you to host your own AMI(Amazon Machine Image) which is almost similar to VMWare's mechanism of bootstrapping images.But one obvious disadvantage is if you have to frequently change your image ,then you could be in trouble as each image is to be reinstalled and ec2 does not allow you to just change/upgrade your environment. I am not yet sure how you would manage an app upgrade without reinstalling an AMI.Few other cloud environments exist , google's App Engine allows you to run Python application which is good if you are a python programmer, recently Google announced support for Java as well, but what if you want to do a project on ruby on rails , Engine Yard is there for you.What if you want to do java or .NET.
Hmm.. i wouldn't want to deploy my app on a platform which forces me to use a particular framework.I would wait for a solution which allows you to install applications but frees you from the task of installing and maintaining images. May be a new provider will come who offers virtualized linux servers in a cloud with elastic scalability and that solution would take away trophy of the best cloud platform . I would give my vote for the best cloud platform to Amazon's S3 unless you are decided on python or rails as your app framework. As of this writing the EC2 cloud allows you to add Ubuntu and an Ubuntu AMI is available. Amazon definitely has the lead on enterprise cloud computing. Go Grid and App Nexus also provides cloud computing solutions with varying levels of user configurability. One thing that i see lacking in all these providers is they still are focussed on providing a networked hosting environment and not attempting to provide a SAAS container platform which i believe is where the future is.
The future of cloud computing
The way i see it the future of cloud computing is interlinked with the growth in number of SAAS applications and the ability of the developer community to bring up SAAS solutions in a fairly easy manner, the current model of offering a platform for small scale providers isn't going to catchup well because of the following reasons. The current platforms are too focussed on Individual developers and not on Small and Medium size providers who wouldn't want the hosting solutions to determine the technology they would want to use, at present most cloud computing platforms want you to build apps for their infrastructure except possibly Amazon's EC2 service. This is a deal breaker for serious providers and they want control over the technology they would choose. For enterprise systems like a banking or a supplychain management system , the primary concern is who controls the data and how migrations can be managed. The cloud computing platforms don't give the kind of confidence on who controls data and that definitely is a deal breaker for them as well. The potential for cloud computing really lies as a hosting solution for SAAS platforms, I consider applications like Wordpress.com a successful SAAS platform , because it provides Content Management as a Software Service to end users. Those kind of solutions would possibly the real market for cloud computing and unless SAAS catches up in a big way with numerous SAAS providers offering competing solutions , i don't see much of a need for cloud computing. Enterprises can survive on virtualized servers and F5 networks and for Individual developers a simple shared hosting plan is a much more convenient way to manage and deploy applications.