Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js
In this column we have discussed the different types of services available in the cloud. This list includes IaaS (Infrastructure as a Service, like Amazon Web Services), PaaS (Platform as a Service, like Microsoft Windows Azure), and SaaS (Software as a Service). In this article we are going to discuss the different types of clouds available today. The service types define how your application is hosted, the type of cloud defines how the service is operated and managed. All of the service types could conceptually be run in any of the types of clouds.
There are two primary types of clouds, a public cloud and a private cloud.
Paying for consumption and low upfront costs are key aspects of cloud computing and represent some of the best advantages it has to offer. Hand in hand with this is that the public clouds are multi-tenant environments. That means that multiple customers are using the data center at the same time, and this isn't very much different from traditional hosting.
Some public clouds are both multi-tenant and a shared environment. For example, with Google, your application is running side by side with an application from another customer. This is fine for a certain class of applications, but it can lead to worries about security and the 'noisy neighbor' problem. The noisy neighbor problem is when the shared resources available to your application are hogged up by another customer, starving your application. Imagine the next application over from you getting millions of hits during a big ad campaign, and taking up all the bandwidth and CPU cycles to handle the load. In the meantime your application becomes slower and less responsive because of the shared resources.
Some vendors, like Windows Azure, are not shared environments. Multiple customers are using the same datacenter (multi-tenant) but the hardware assigned to you is allocated in a dedicated way so that no matter what the next customer is doing you have full access to your resources.
A private cloud is simply a public cloud that is hosted and run by a company for its own use. Private clouds tend to be smaller in scale than a public cloud (just one of Microsoft's datacenters has over 350,000 servers) and they are usually not as fully automated.
Public clouds tend to be built on top of virtualization platforms (VMware and Hyper-V) to provide the abstraction and isolation from the real hardware, while giving the just in time allocation of resources to meet demands. Most companies that deploy a private cloud are usually looking for a way to bring their virtualization environment to the next level.
Private clouds do suffer from not benefitting from two of the most important aspects of cloud computing, and that is the lack of upfront capital cost and minimal management. If you are building a private cloud then you will have to buy all of the hardware (servers, routers, load balancers, disks, etc.), all of the software, and then provide staff to manage it all. Private clouds end up being the modern descendant of 'lights out operations.'
There are some good reasons to deploy a private cloud. They usually stem from wanting to find a better way to manage a large amount of computing that truly cannot be moved to a public cloud. Private clouds are for when you need cloud like infrastructure (in behavior if not scale) and also need to maintain complete control.
There are other forms of clouds, but they all stem from the two main types, public and private. One type that is becoming more popular is a hybrid cloud that mixes public and private clouds together. These hybrids are shared amongst different customers, but the customers have a federation or reason to work together. Imagine a federal government cloud that is only available to other federal agencies. There are several state governments already going down this path. This lets them bypass any current concerns of the public cloud while still cutting costs through consolidation and shared use.
By understanding the two basic types of clouds you can more easily understand where the industry is and how you might want to enter into cloud computing. Public clouds give you the maximum benefits of the cloud, while private clouds satisfy your need for control.
About the Author:
Brian H. Prince is an Architect Evangelist for Microsoft. He gets super excited whenever he talks about technology, especially cloud computing, patterns, and practices. His job is to help customers strategically leverage MS technology, and help them bring their architecture to a super level. In a past life Brian was a part of super startups, super marketing firms, and super consulting firms. Much of his super architecture background includes building super scalable applications, application integration, and award winning web applications. All of them were super. Further, he is a co-founder of the non-profit organization CodeMash B (www.codemash.org) and of WindowsAzureBootCamp.com. Brian was the co-author for "Azure in Action." He speaks at various regional and national technology events including TechEd. He only wishes his job didn't require him to say B ?'super' so much. Brian holds a Bachelor of Arts degree in Computer Science and Physics from Capital University, Columbus, Ohio. He is also a zealous gamer. For example, he is a huge fan of Fallout 3 and Borderlands.