Saturday, May 1, 2010

To become a Cloud Developer

What is Cloud Computing?

Cloud Computing is nothing but providing Information Technology (IT) components such as computing, storage, network bandwidth,security, platforms and software as a service. It is considered to be a cost effective method, because you need not pay upfront a hefty amount and you will pay for what you use.

Classification of Cloud Computing Services

There are three types in Cloud Computing Services .

1. IaaS - Infrastructure As a Service

The base IT infrastructure components such as Machines for computing, Storage, Network is provided as a service. Example : Amazon AWS, Rackspace Computing Cloud & Microsoft Windows Azure.

2. PaaS - Platform As a Service

A solid platform in which you can develop, test, deploy & offer your applications to your end customers. Mostly your applications are offered as a Web & Web Services technologies. Example : Microsoft Azure, Google App Engine, from SalesForce.

3. SaaS - Software As a Service

Software applications provided as a service, As a Cloud Developer, mostly you will consume the services to enhance or enrich their existing offerings. Example : Google Apps, SalesForce.

Simple Analogy to Cloud Computing

I am sure we are not new to the idea of pay per use, ie, utility model, we have been using electricity, telephone, mobile phones in the utility mode and the government & telecoms providers have invested a lot in building the infrastructure to provide best services to you. In the similar way, Cloud Providers like Amazon, Microsoft Azure, Gogrid, Google have invested a lot and created the infrastructure to be used by end users like us.

What does Cloud Computing Solves?

Cloud Computing is going to change the way we compute soon. It is important for the developers to understand that many problems that we currently face like application not scaling, database reached maximum no of concurrent connections, single server deployment...etc are being addressed by Cloud Computing.

I am a Developer, Why should I worry about this?

In a traditional way, If you are a web developer you would have learned either Java, .NET, PHP...etc along with one or more RDBMS technologies and frameworks related to your technologies. Especially , if you are first timer, you would have spend most of your time configuring the related software in your machine rather than developing the code that you like.

Cloud Computing brings the flexibility for you to quickly start using the configured machine instances rather than you setting up things on your own. in Amazon terms, it is refered as Machine Images. A Machine Image is nothing but a package comprises of Operating System, required softwares and its related configurations. This package can be used to while launching your instances. Most of the traditional Software Providers such as Microsoft, IBM, Oracle, Redhat has already started providing their software packages as machine images in Amazon Cloud.

Cloud Computing provides various application building blocks that are commonly used in large scale application development & deployment such as message queues, databases, application containers and extendable storage for backup as a services and you can develop your applications to leverage those building blocks rather than breaking your head to deploy those components on your own. As a Cloud Developer you should be familiar with all these building blocks and their provider specific API's.

In a nutshell, If you want to be Cloud Developer, you must understand all these building blocks and their API's to develop applications for Cloud Technologies.

Where do I Start?

"Practice Makes the Man and Women Perfect", you should start using the Cloud Computing technologies to get a feel of it.

Before you start, you must decide on a provider first, aligning yourself to a provider, makes you an expert in that platform too. When I started my learning way back 2006, I have chosen AWS platform. I would suggest, if you are Microsoft developer, you can start with Microsoft Azure by learning SQL Azure, Windows Azure...etc. If you are Java & Python developer, start using Google App Engine. If you are a CRM/ERP app developer, you can choose