July 25, 2012

Challenges In Creating Cloud Web Apps …Part I

Statelessness, server failure, and changing platforms are bound to confuse new developers who are venturing into cloud web apps development.

Cloud computing involves accessibility of different products and services on hosted servers and has certainly been part of the current IT trends. The number of cloud web apps developed in recent times has been quite high but this also brings a huge responsibility on the part of the developers.

Cloud deployments have helped out developers to not worry about infrastructure issues but they need to set themselves. These include changes in how developers work with databases, an emphasis on stateless applications, and dealing with different frameworks.

Different types of software are likely to be instrumental in providing that an application needs in the near future. Using APIs, most developers are writing apps specifically for the cloud and they are bound to buy more resources from the cloud provider.

Developers have to design their systems as per the redundancy factor and now commodity machines are being utilized in the cloud. One has to design applications that can be run on the cloud for redundancy since machines are going to fail, soon!

Building for the cloud is akin to designing stateless applications since there is no such concept of a local disk in the cloud nor there is any registry. The best and easiest kinds of applications are usually stateless. The interesting apps have a state which is connected to databases which store some state including user info. But different parts of the app like the Web front end are stateless.

Additionally, different parts of an application might be spread out in a cloud. Storage might be in Amazon S3 and the presentation layer might be on Facebook. Previously, everybody had all components of their system in one storage system.

Cloud platforms and cloud web apps can help. In some cases, scaling is implemented for a restricted combination of applications automatically while sometimes design patterns are used to horizontally scale applications. Amazon.com EC2 for example, can provide Multiple Availability Zones which only large companies could scale to do this previously.

The presence of abstraction and statelessness has various database implications in the cloud. For example, the Azure storage engine does utilize a standard relational database and hence standard apps do not matter anymore.

The problem with cloud platforms like Azure is that there's no guarantee that the data would be in a particular location or datacenter since stored procedures aren't relevant in any context due to the stateless nature of the platform. Even the Azure storage engine is different than the latest SQL Data Services which is the cloud-based version of SQL Server. Developers need to be clear and careful while writing cloud web apps. Azure stores data like a blob while SQL server stores data in a relational table.

It is not a problem with Windows Azure but there are many other cloud platforms which cause a whole lot of problems. Even the Google App Engine involves a developer who uploads code and then the database is split up. Since the process is automated, developers would like to follow a certain model which developers need to follow though it differs drastically from a traditional SQL model.

1 comment:

diazmaria said...

Hi,

just a moment back I was searching for the information on the same topic and now I am here. So much information, really well executed blog. This is really informative and I will for sure refer my friends the same.
Thanks