Cloud Services Introduction
November 4, 2008 11:30 AM |
Comments (0) 
| Rate this article: 

Hosting - Before the Clouds Rolled In

Fundamentally, cloud services provide web application hosting.  Before the advent of the "cloud" marketing term, customers were hosting their applications using a number of different mechanisms.  Some customers would purchase their own equipment and host their site within their own network, behind their firewall, in a demilitarized zone (DMZ).  Other customers would purchase their own equipment and install the equipment in a commercial data center in what is known as a co-location plan.  Other customers would rent dedicated or shared servers in a data center that offered hosting plans.  Each of these different approaches has its own advantages and disadvantages.  Hosting in your own premises typically means less reliability on the raw utilities and internet service provider as power outages, air conditioning failures, and ISP failures can easily take your application offline.  Establishing a complete fault tolerant environment is extremely expensive to setup, test, and maintain.  Bandwidth is typically dedicated to your environment, but it is static - you purchase an internet line with a fixed bandwidth for a monthly fee.  Hosting in a data center allows you to realize cost savings as the cost of infrastructure is spread across all of the tenants in the data center.  Typical data centers are also manned 24 hours per day, which can also give an additional cost benefit compared to employing your own staff on a 24x7 schedule. 

Most of these hosting mechanisms suffer from the same weakness - you have to manage the operating system, hardware maintenance, and server configurations.  This involves an ongoing cost to maintain your system.  The only plans that don't really have this problem are the smaller managed-hosting packages, but these are typically a lot higher cost to compensate for the extra maintenance that the data center staff will perform - either way you are paying to have an engineer manage and update your server. 

Another weakness of all of these plans is their static nature - you either purchase or contract a specific set of equipment that is designed to handle up to a certain load.  You have to plan for your peak capacity and purchase adequate equipment to handle the peak load.  You are paying for the capital costs of that equipment, no matter what the actual load is.  You are paying for reserve capacity that you are not using.  On the flip side, if your web application is more successful than you planned, you will have to add more equipment and change your configuration to keep up with new workloads.  This requires lead time to purchase (or contract) and install the new equipment, and changes to your network configuration will likely require some downtime.  What happens to your customers using your overloaded web servers when you are waiting for new ones to be delivered and installed?

An organization that hosts its own scalable internet infrastructure will have to maintain experts in firewall configuration and management, load balancers, operating systems, network switches and routers, database server software, Internet server software, server hardware, air conditioning, power management systems, intrusion detection systems, auditing systems, and monitoring tools.  These skillsets don't come cheap, and it is rare to find someone who is a master at all of them, leading to most organizations having to hire multiple staff in order to cover all the critical areas, especially if there is a 24x7 requirement.

Cloud Computing – The Business Case

Cloud Computing is a term that signifies a commoditization of a cloud hosting infrastructure.  Companies that offer cloud solutions have set up a framework to provision the required web services so that their customers see them as a black box.  Cloud computing platforms have standardized mechanisms to provision services in their data center.  The data center operations of the vendor are their intellectual property - they have invested significant resources to build and design a smoothly-running data center that can provision new web services on demand.  And that changes the business model significantly for hosting.  The cloud computing vendors can provision services on-demand, so they offer their services on-demand - customers no longer have to pay for the upfront capital expenditures for dedicated servers - they pay for what they use, and that is a significant change to the hosting business model.  Cloud computing is like putting a volume dial on the Internet.  The key to the cloud computing frameworks is their ability to rapidly scale, both up, and down.  This significantly enhances business agility.

Cloud computing frameworks are distinguished from traditional hosting  in their inherent scaling capability, and their automated provisioning and billing systems.  Traditional hosting is very static, and changes to load require time to reconfigure, and additional capital and expense.  Cloud computing is very dynamic, having the ability to adapt to changing loads very quickly.

Cloud computing significantly reduces the barrier to entry into the Internet.  Since you only pay for what you use, and there is no long term commitment, and no up-front capital expenditures, the costs of hosting a new web application is very small.  Cloud computing also allows an application to scale with minimal effort.  Predicting your web load is a black art, and the load on your web application is frequently out of your own control - you are subject to the market and other activities that influence the popularity of your application.  Cloud computing takes the risk out of web hosting because it can adapt from very low loads to very massive loads, and back to low loads - it is a utility computing model that allows you to pay for what you use and closely times your revenue with your expenses, reducing business risk.

Basic Components of a Cloud Platform

Cloud platforms are made up of the following components:

  1. Data Center. All cloud computing platforms run on hardware somewhere, and that hardware is located in a data center that is equipped with all the goodies - redundant ISPs, redundant and backup power sources, high security, adequate cooling, etc.
  2. Compute. All cloud computing platforms offer some form of compute power - your application will burn CPU cycles as it runs. This compute platform is typically based on Windows or Linux platforms with web server frameworks and server processes that are programmable.
  3. Persistent Storage. Just about all web applications need some form of persistent storage for data. A true cloud platform will include a storage API that itself is highly redundant and scalable, which rules out dedicated SQL server instances, which are not horizontally scalable in of themselves.
  4. Internet Connectivity. It goes without saying that your web application needs fast and reliable access to the Internet, as well as connections that are as close to your audience as possible. This is another distinguishing factor in cloud computing platforms - many of them have multiple data centers that are located in different regions of the world. Many cloud computing vendors offer dynamic IP allocation or DNS routing to ensure that your audience is served from the closest server, making your website perform as quickly as possible.
  5. Provisioning. Cloud computing platforms have automated the provisioning system so that you can upload your application using an automated process and have that application deployed to all the instances associated to your account.
  6. Management. You are paying for reliable and secure internet services, so all the cloud vendors have an automated management capability that patches the operating system and software on a regular basis, monitors for failures, and adapts to failure conditions without leaving your website in the dark.

Microsoft Azure and .Net Services

If you want a complete list of all cloud service vendors, please go to Wikipedia.  This article covers the offerings that Microsoft has announced in the cloud services space.

At the Professional Developers Conference (PDC 2008), Microsoft unveiled their strategy and new products and services to the developer audience in attendance (and watching through streaming services).  Some of these services have been available for a while, and some are brand new, available initially only to the PDC attendees.  The most guarded secret was their introduction of the Azure platform - their solution to the hosting, compute, and storage models of a cloud service platform.  Microsoft gives developers a ‘development fabric' of which they can use to build a web solution on their local workstation that can be deployed into Microsoft Azure data centers.  The Azure platform is based on a sandboxed version of IIS 7, with additional components for persistent storage using blobs and tables, web and worker process roles, a queuing mechanism to send messages between the roles, and temporary (non-persistent, non-redundant) file system storage.  They provide a Visual Studio extension that allows a developer to create a cloud project.  These cloud projects are comprised of a packaging project (think of it as a web installer project), and projects for web and worker process roles.  When you hit the build button, Visual Studio will compile the roles, then package the files in the packaging system.  This package can then be uploaded to Microsoft's Azure servers, or in the development cycle, Visual Studio can launch the developer fabric and attach to the process in debug mode, allowing for rapid web development on your local workstation before you promote the project to your production Azure service account.  The developer fabric comes complete with its own local storage fabric to simulate the storage model in the cloud as well as the queues.

Microsoft's cloud strategy does not stop at Azure.  Microsoft is promoting their vision of their software + services strategy where developers can compose applications from a number of different building blocks.  Web identity can be solved with tight integration with Live ID and Active Directory federation, more complex storage models can be implemented with SQL Services, xRM applications can be composed with Dynamics CRM Online, social applications with Live Mesh, and so on.  The breadth of the services is quite impressive.

Cloud Patterns - no, this is not a session with your shrink

Perhaps the secret sauce of Microsoft Azure is the alignment with the rest of the Microsoft platform.  And yet there are key differences.  The computing model is very much IIS 7 and .NET, but the storage model is significantly different than SQL Server.  Developing for the cloud requires a different pattern for data.  Typical patterns used to connect a website to a relational database such as SQL Server are not inherently cloud-scalable.  To build a cloud-scalable application, you must think of data as a service, and that data is being replicated behind the scenes and offers you load-balanced and redundant endpoints.  This is very different than the traditional ADO.NET mechanisms for connecting to data.  Azure and SQL Data Services do not give you an OleDb provider - they give you REST/SOAP APIs and soon ADO.NET Data Service interfaces.  The data model is not purely relational - and they do not have the concept of stored procedures.  This means that designing an application for the cloud is a little different than designing for a typical web application that is hosted in a traditional data center.   The good news is that architecting your solution around cloud patterns is also good for building a scalable solution using current non-cloud deployments too.  The bottom line is that for application architects and software engineers is to pay attention to Azure and Microsoft .Net Services even if they think that they are not interested in cloud computing today - following these patterns will help future-proof their applications and allow for the power of choice for future hosting providers as IT continuously evolves within their own organization.

Links & Attachments 
Submit a Comment
Title:  
Name:    
Comment:    
Verification:

Type the characters you see in the picture below.