Developers, Here are Five Tips to Join the Cloud Bandwagon

Tuesday July 24, 2012,

5 min Read

The most common question that I get to hear from developers is – how do I get started with Cloud Computing? Many developers believe that targeting a Platform as a Service (PaaS) is all it takes to get onto the Cloud bandwagon. While PaaS abstracts the nuts and bolts of the Cloud infrastructure to ease the life of developers, many applications run on raw VMs deployed to run on Infrastructure as a Service. So, it pays to understand the behind the scenes architecture when developing Cloud ready applications. Though .NET and J2EE abstracted the underlying implementation, developers with the thorough platform knowledge fare better in their jobs. Similarly, knowing a little more about the inner workings of the deployment platform will help developers in the long term.

It is just not the understanding of the Cloud platform that will make them ready. Developers need to have a mastery over certain fundamentals concepts. Here are five concepts that the aspiring Cloud developers should focus on –

1. Get a Better Understanding of the WWW – There are tens of thousands of web developers out there who can program in PHP, ASP.NET, JSP and other languages. Many of them would have contributed to large websites that attract decent traffic. But very few web developers really understand what HTTP is. Today’s web is programmable and the apps running on mobile devices consume half of the web functionality. So, it is no more developing that powerful web application but exposing the powerful REST API. The abstract frameworks have hidden the inner workings of HTTP. The ability to deal with HTTP verbs like GET, POST, PUT and DELETE go a long way in designing lightweight and scalable web applications. Understanding the REST functionality and the ability to design RESTful services is a must for new age web developers. They should be able to comfortably deal with JSON payloads that flow back and forth. Bottom line - Get your www basics right!

2. Understand the Basics of Virtualization – Many may argue that the developers can blissfully ignore the deployment environment and only focus on their code. When targeting the Cloud, applications should be intelligent about where are they are being run. The ability to exploit the automation capabilities will make applications self-healing and intelligent. For this, developers need to understand how virtualization works and the APIs involved in provisioning and de-provisioning the resources. In the current world, Hypervisor is the new OS and the Virtualization APIs are the new system calls. Developers must be familiar with virtualization to take advantage of the benefits that Cloud offers.

3. Think Services and Think Aysnc – Traditional programmers are used to invoking components in a synchronous way. This is a recipe for disaster on the Cloud. Cloud architectures are the best implementations of SOA and encourage developers to build loosely coupled and autonomous components. Moving away from a traditional component design to a service design is an essential transition the developers will have to make. All the best practices of exposing services holds good on the Cloud and developers should write code that can be invoked asynchronously. By leveraging Message Oriented Middleware products like RabbitMQ or the Messaging Services offered by the Cloud Platform providers like Amazon SQS and Azure Service Bus, developers can build loosely coupled services.

4. Master At least One Cloud API – It is impossible to master everything in the world of technology. But choosing one Cloud that closely aligns with your knowledge of platforms and investing your time learning it inside out is important for the developers. Every Cloud platform exposes APIs to deal with the storage, cache, databases and the provisioning of various services. For example, if you are a .NET developer and want to build your skills on Windows Azure, learn the Windows Azure SDK really well. Heroku, Engine Yard, Google App Engine, AWS Beanstalk and Cloud Foundry expose API at different levels to enable the developers to programmatically deal with the Cloud. The ability to deal with various services exposed by the Cloud and the management API to control the lifecycle of Cloud resources is must for every developer.

5. Learn Profiling and Instrumentation – I believe that deploying applications on the Cloud is no different from flying an unmanned aircraft. Hosting an application in your own datacenter running in the backyard gives you the luxury of peeking inside the performance logs to isolate the problem. How do you deal with a Cloud application that is crashing with no hints on what’s going wrong? The only way for the developers to take control of applications running on the Cloud is to instrument them thoroughly. By enabling tracing and verbose diagnostics information to be emitted by the applications, developers can gain access to valuable information related to the health of the deployments. There are new generation tools like New Relic and Cerebrata’s Azure Diagnostics Manager that offer insights into the health of applications. But developers should adopt the new way of profiling and instrumentation to gracefully handle the application failures on the Cloud.

While there are many other skills that are required to be a successful Cloud developer, these are some of the essential. If you think I have missed something, please drop a comment!

- Janakiram MSV, Chief Editor,