It’s almost a routine now. Every time we find ourselves at a developer forum or a technical conference, there’s invariably a question on how to get started on the cloud. The mindset and the perception has been that the cloud is the next .NET or Java. Unfortunately, some of the well known training institutes and freelance trainers in Indiastarted to position cloud computing as the Java of the new decade. This artificial hype is misleading many developers (especially graduates fresh out of the college) to go and join a cloud computing course without any relevant background and understanding. So, what is really required for getting started on cloud computing?Good Understanding of Web Technologies
A decade back, it was the WWW that introduced the concept of statelessness to the traditional client/server developers. Today, it forms the core of distributed computing. It is very important that you have a strong background of developing web applications on a modern stack like ASP.NET, JSP or PHP. Understanding how to design for the stateless web and how to make individual web pages share common data is essential. It is imperative to appreciate the way HTTP works and the protocols like SOAP, REST, POXand JSONfor the flexibility that they offer.
Web Services and Service Oriented Architecture (SOA)
The experience of developing a large SOA solution is certainly a big plus for cloud developers. First, it was XML Web Services that showed the world that the websites can talk to each other and then, SOA demonstrated that disparate enterprise applications can talk to each other. SOA is based on the principle of loosely coupled systems. Developers are encouraged to think modular when designing these components. These modular components are loosely coupled through Message Oriented Middleware (MOM) or an Enterprise Service Bus (ESB).
When architecting for cloud, it has to be kept in mind that one cannot have an affinity between web server, app server and the database. That’s because one will never know which tier will have to scale dynamically. At one point, there may be the need to scale out the web server to address the demand in the traffic. If the app server is becoming the bottleneck, it may have to be scaled out to a bunch of servers and only a few web servers might be talking to the app server cluster. The database on the cloud is completely a different ball game altogether!
Developers would be leveraging the write-once-&-read-many data model supported through BLOBS (Amazon S3 and Azure BLOB) or write more often to a flexible entity model (Amazon SimpleDB and Azure Tables). There’s also the option to use the traditional relational database on the Cloud (Amazon RDS and SQL Azure).
The bottom line is that the cloud app should be designed to work in the most autonomous form. Each of the tiers should be designed to work independently and should gracefully handle the outages and the non-availability of other tiers in the system. The below architectural diagram depicts this to some extent:
So, finally answering the question of ‘am I ready for the cloud?’, if the above made sense to you and you relate to the concepts of Web and SOA, you are almost there. But the truth is, cloud is not meant for freshmen with no experience of distributed computing. So, the next time someone is pitching to you a job-oriented course on cloud computing, be wary of it!
For regular updates on Cloud Computing, do follow http://cloud.yourstory.in/