Every time I present at a developer forum or a technical conference, I get asked by the audience 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 India started 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. You should be appreciating the way HTTP works and the protocols like SOAP, REST, POX and JSON for the flexibility they offer.
Web Services and 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. You are encouraged to think modular when designing your components. These modular components are loosely coupled through Message Oriented Middleware (MOM) or an Enterprise Service Bus (ESB). When architecting for Cloud, keep in mind that you cannot have an affinity between Web Server, App Server and the Database. That’s because you never know which tier will have to scale dynamically. At one point, you may want to scale out your Web Server to address the demand in the traffic. If you notice that 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! You would leverage 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). You also have an option to use the traditional relational database on the Cloud (Amazon RDS and SQL Azure). The bottom line is that you should design the Cloud app 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 Cloud is not meant for freshmen with no experience of Distributed Computing. If you are in college and someone is pitching you a job-oriented course on Cloud Computing, be wary of it!



As a Cloud Computing Strategist, Janakiram MSV helps businesses understand and adopt the Cloud Computing paradigm. His core strength is designing and architecting solutions for the Cloud. Janakiram focuses on industry's leading Cloud Computing offerings including Microsoft Windows Azure.











