Tuesday, November 16, 2010

Cloud Computing Part – II

Microsoft Azure vs. Google Apps vs. Amazon

Microsoft Azure:

The Windows Azure Service Platform from Microsoft is a unique cloud offering for the Microsoft Developer Community. If you are Microsoft based shop, then Azure is the only option as of now for developing applications using .net. Microsoft envisioned the entire cloud stack keeping in mind the entire developer ecosystem which is based on .net framework. Developers can use any language based on .net could be C#, VB .Net , Iron python, Iron Ruby and also Java currently added to the list or in future any language developed targeted on .Net . It also targets PHP and Java developer too.

Azure platform is an internet-scale cloud service platform which has the following core components: Compute, Storage and Fabric. Compute provides computation environment, storage provides scalable storage in form of Blobs, Tables, Ques, Drives where as Fabric takes care of managing the underlines host of complex network cluster and virtual instances. This helps application developer to stay focused in understanding his business problem rather the underline software and hardware architecture.

Its open architecture provides developer the choice of building various kinds of applications starting from web based applications to application that can run on other connected devices. It provides database of choice. Developers can use still the very old structure relation database like SQL server or they have choice for non SQL database which can scale for large projects like social applications.

Google App Engine:

Google app engine is a platform for developing applications using Google in house managed data centers. As Google is already uses lot of applications for its enterprise, the App Engine is primarily built on the same style.

App Engine has a more limited platform. Allows developers to build applications using python or Java and provides the storage as Google proprietary BIG Table data base. As of this writing there are many standard Java features are not yet supported.

Though it has limited offering, Hosting applications in App Engine is fairly simple and robust compared other cloud offering in the market. Google has worked very hard to make sure the developer need not to take the pain to understand the underlined architecture.

If you are a Java or python shop, the ultimate platform is App Engine. Google also recently included its popular GWT on its App Engine. For Java based applications this is an added advantage they can use built in stack for web deployment.

However Google does not support built in relational database as it only provides Big Table assess through high level APIs. There are many companies providing bridge between the relational and Non relational mapping. So this only should not be big problem while considering App Engine.

Amazon web services (AWS):

Amazon is the one of the first vendor to bring the cloud infrastructure to developer community in a big way. It has an array of technologies offered on the premise of cloud computing. It has different levels of offering for different business size.

With AWS users have the flexibility to choose whichever development platform or programming model makes the most sense for a particular business problem. AWS always maintained platform agnostic from the beginning which removes the vendor lock in. In one hand the AWS architecture provides platform neutral open architecture where the developer has complete freedom to configure his own stack on the other hand the developers have to take care the administrative tasks like managing the instances, no of instances required such as compute instances, storage instances. This needs more administrative people needed. Again all this boils down to the business requirement.

Amazon provides the following key cloud platforms:

Amazon Elastic Compute Cloud ( Amazon EC2 ): A web service that provides resizable raw computing over the cloud. The developers can define the entire stack starting from OS, services, databases and application stack. Amazon provides complete freedom to the developers to mix and match their requirement.

Amazon Relational Database Service ( Amazon RDS ): This offering is targeted the traditional relational data base community who needs to store the data in relation database. Underlined database used is MySql. These MySql databases can scale as requirements grows dynamically. All the database management related issues are taken care under the hood without really exposing to the user.

Amazon SimpleDB : Amazon SimpleDB is an answer to NO SQL, non relational kind of database users. SimpleDB is a highly scalable non relational data store is targeted for the companies which need to store and retrieve large scale data over the cloud.

Amazon Simple Storage Service (Amazon S3) – A simple web services interface that can be used to store and retrieve large amounts of data, at any time, from anywhere on the web. It gives developers and businesses access to the same highly scalable, reliable, fast, inexpensive data storage infrastructure that Amazon uses to run its own global network of web sites.

Friday, November 12, 2010

Cloud computing Part – I

SaaS, PaaS, IaaS

It’s been quite long time, we are hearing about the buzz surrounded by cloud computing and its true potential. No doubt, it is clearly a game changer from business perspective. It allows the economy of scale. There are various vendors embraced cloud computing in different architectural styles and based on different business models. The cloud providers mainly categorized under the following types based on the segment or stack they are operating. Cloud computing is broken down to three segments like software, platform, infra structure.

SaaS ( Software as a service ): This is the topmost layer in a cloud stack. In this layer typically the software is provided as service to the end user. We can think of any on premise software available to the end user over the web and the end user instead purchasing the software he is paying cost per month based on the usage of the software. In this case the traditional way of owning and purchasing of software will fade off. This is what truly called as “utility computing” and “pay as you use” model. This disruptive model helps in reducing the initial capital investment for hardware ( capex ) and operational (opex ) cost. At the end of the day the user just pays for what he uses like we pay bills for electricity. The best example of SaaS vendor is Salesforce.com which was pioneered this business model and they are truly leader in SaaS offering. Currently there are mushrooms of vendors offering SaaS applications for various needs. The cloud of companies which provides SaaS offering for end user are Salesforce , ZOHO, Net Suite, BOX.Net , DropBox, Taleo etc.

PaaS ( Platform as a service ): PaaS offers a development platform for developers. The PaaS vendors provide necessary tools for developing applications. There are vendors provide various technology stack built on to their platform. So once you choose PaaS vendor then the end user has locked down with the same platform. The best example of PaaS is Salesforce.com’s Force platform. Which allows to build applications and host on the force platforms. These vendors offering are unique. They provide the high level tools for users, who can build applications with much knowledge of programming. This makes small companies to adopt IT without really having army of developers to build their applications. OrangeScape one of Indian PaaS provider provides cross platform solutions on all the cloud offerings such as Microsoft Azure, Google App Engine, Amazon WS.

The disadvantage of PaaS is the vendor lock in. The application is completely built on the PaaS vendor software stack however the scenario is going to change. In future vendor will enhance their offering to cater different platform stacks.

There PaaS solutions can be categorized in to the following platforms based on their solutions :

1. Social application platforms

2. Web application platforms

3. Business application platform

Social applications : Face Book emerged as platform for social applications. Face book provides platform and tool on which developers can build and extend the social applications.

Web Applications : There are lot of vendors provide the basic web platform on which developer can build their web applications. Google provides lot of tools and apis for building applications.

Business Applications : The best example is Force.com from SalesForce. This provides one of the best integrated platform for business application developers.

Iaas ( Infrastructure as a Service ): The third category in the cloud computing is called Infrastructure as service.

Iaas delivers the raw computing for developers to build their application with all the freedom that used to be there while building traditional applications. They can choose the entire software and hardware stack which they wish to deploy for the application. All the big vendors like IBM, Amazon , Microsoft, Google provides IaaS solutions. The user can buy the infrastructure based on the demand on “Pay and Use” mode. In this class of computing the user has the entire control on the various instances which are running in the runtime so that the users know how to effectively control various processes. The issues in this kind of platform model is, the managing and monitoring these processes will be challenging and vendors do need administrative staff for managing and monitoring these complex processes.

The kind of cloud computing to choose from based on the customer business model and business requirement. The more granularity of cloud we need the deeper we need to go. Definitley IaaS is not for end users.

There are certain class of business problems well be suited for IaaS kind of offering. Before cloud computing hit the main stream adoption there was lot of entry barrier for startup vendors compared to the established players though they have better technology in hand. For example, if a customer wants to start a social application platform, he has to worry about upfront hardware cost and all the associated data center cost. Typically startups will not have that kind of investment. But due to cloud computing the whole game has been changed. These customers easily setup their applications on the cloud from day one and thanks to virtualization technology, the infrastructure can scale on demand. The customer is just paying what are the services he is going to use for not an upfront huge cost.