There is not much point talking about cloud computing unless we loosely define what we'll be talking about. Here are some of the varying interpretations of cloud:
Cloud just means you have no idea where your data is - Cloud has become such a general term that it's often hard to define exactly what cloud is. To most consumers cloud simply means their data is not on their computer, "it's in the cloud". Services like Dropbox and Gmail typify consumer cloud services and are general marked by a simple user interface, general ease of use and a widely used free tier of service. For the sake of this blog we are not interested in this definition of cloud.
We'll never buy another sever again - To businesses, moving to cloud generally means a migration away from acquiring compute resources via a CAPEX model (buying and hosting their own servers), to an OPEX model (renting only the resources they need for the period they need them). For most businesses the CAPEX model is extremely inefficient as businesses rarely operate at scales large enough to fully utilize all their available resources and servers remain barely used for most of their service life. The CAPEX model is great for hardware vendors but is extremely wasteful in terms of resource utilization.
Cloud is on a Visio diagram and represents the Internet - To an old-school network administrator, cloud simply means whatever is outside their network, usually referring to the internet. This definition is one of the earliest uses of the term cloud in information technology and is also irrelevant for the sake of this blog.
Cloud is my VMware system - To a corporate system administrator the term cloud is often used to refer to virtualization, this is mainly because the largest and most famous public cloud (Amazon's EC2) uses a well known virtualization platform to abstract the hardware layer and partition their compute resources into increments smaller than a single computer. System admins will often refer to popular virtualization platforms like VMware or Hyper-V as their cloud of choice. This is a partly accurate interpretation of cloud as you can build a cloud using these closed source commercial platforms, but as we'll discuss later these platforms don't define cloud in its purest sense.
I just need somewhere to run my apps - Application developers have undoubtedly had the biggest influence on why commercial public clouds exist in the first place and thus how cloud should be defined. Developers wanted to build and run their apps in such a way that they didn't have to get involved in the intricacies of system and network administration. Traditional web hosting didn't expose enough of the underlying operating system to allow for effective integration of the application and operating system. And setting up dedicated compute resources for their apps was usually beyond the budget of the average developer.
So what does cloud mean here? - It simply means compute and network abstraction through operating system virtualization and other technologies, for the sake of creating a platform for hosting applications at any scale (small being as important as big). The hardware and software should be commodity source-able, not requiring any special vendor-centric components. The cloud components should allow N+1 = P+1 scaling, meaning incremental additions of each significant component should create a performance increase of the same magnitude. The cloud platform should be elastic, meaning the cloud user can easily add or subtract compute resources. Commercial clouds should bill incrementally, where customers pay for exactly what they use in very small increments. And perhaps the most widely accepted and possibly the most important tenant of commercial cloud is it must scale to infinity from the perspective of the user. This means the cloud provider must be able to scale more quickly than demand.
So what's the purpose of this blog - To share our experiences with cloud related technologies, document various techniques related to building and operating a commercial cloud. And most importantly, to openly collaborate on a well documented and well tested reference model for commercial cloud services.