Organizing the Non-Obvious: Cloud Computing and Virtualization
Date: Wednesday , August 11, 2010
Marcus Aurelius, Roman Emperor and philosopher, wrote that the secret of all victory lies in the organization of the non-obvious. While he could hardly have dreamed of organizations as they exist today and the technology at their disposal, his opinion on the source of success is still relevant.
A key factor contributing to enterprise success is the use of Information Technology. IT is the bedrock in business infrastructure across the planet, invisible but ubiquitous. In this paper we discuss considerations influencing the organisation of IT components and stacks, how Cloud Computing and Virtualization fit in, and how underlying concepts can be exploited in Enterprise IT solutions.
IT Architecture : Key Characteristics
Organisations typically measure the value of IT in two ways : how it maximises returns and delivers competitive advantage, and how it minimises the cost of operations. IT environments delivering mission critical services need to be rapidly deployed, to solve a problem or fulfil a need quickly. The environment needs to be elastic so that resources can be scaled based on demand.
To control costs, deployed resources should be utilised optimally, while provisioning and management should be simple. Finally, Enterprise IT Architecture should incorporate standardisation of platforms to further reduce costs. Adoption of Open Standards and Open Source technologies magnify these cost savings. Some major characteristics of good IT Architecture therefore are
* Rapid Deployment
* Elasticity of Resources
* Efficient Utilization
* Simple Provisioning
* Standardization of Platforms
Some or all were incorporated throughout the evolution of IT architecture. Coupled with them are two relatively new concepts. One is the notion of not having to buy IT components, configure them into an architecture, maintain and enhance it over a period of time in a datacentre. IT components can instead be utilized as services. A key enabler has been the advent of the network as a viable means of connecting resources to various enterprise stakeholders. The other concept is that of paying for the usage of components, rather than for the components themselves. IT As A Service and Pay Per Use are emerging concepts rounding out the characteristics of Cloud Computing.
Cloud Computing is a new model for infrastructure and software programming. Fundamentally, Cloud Computing is a means of delivering IT resources as services, like electricity is delivered through a socket. Virtually any IT resource can be delivered this way – applications, compute, network and storage, collaboration and communication ...
Clouds are enabled through virtualization. Mature technologies exist to facilitate pooling of compute, memory, network and storage components, on which multiple applications can reside isolated from each other. Virtualization allows resources to be shared by applications, and resources can be allocated and dynamically balanced across applications based on workload and user demands. Virtualization enables a new level of optimization in IT environments :
Efficient Computing – When applications are deployed in silos, with dedicated resources for each, resource utilization rates are sub-optimal. Server and storage capacities are dictated by peak demands, but peaks occur infrequently and capacity is mostly under-utilized. Virtualization allows capacities nominally allocated to one application to be utilized by other applications if needed, thus driving up overall efficiency. Such consolidation of resources – servers and storage, interfaces, networks, desktops and business processes – results in savings and greater efficiency.
Optimal Operational Costs – Power and cooling costs in an average datacentre today are spiralling and, by 2015, are expected to exceed the cost of acquiring IT equipment. Virtualization allows consolidation, thus obviating the need to deploy an entire stack of new equipment when an application needs to be provisioned. Consolidation also reduces total power consumption, increases the server to admin ratio and simplifies administration, leading to even more operational cost savings.
Space Savings – Another problem spawned by deploying dedicated resources for each application is Server Sprawl. The outcome has been a constant need to expand datacentre space, as more applications come on stream and existing applications scale. Virtualization alleviates this by consolidating applications onto fewer physical systems.
Various virtualization options exist, as depicted below with examples of each
They differ in the extent to which different environments are isolated from each other, and the granularity at which resources can be allotted for each environment. Hardware Partitions offer the highest degree of isolation, but are not as granular (for example Sun’s Dynamic Domains need a minimum of 1 CPU to be allocated to a partition, and CPUs can only be added in increments of one). Resource Management provides very little isolation (applications all run on one instance of the Operating System, and the users of all applications connect to the same system), but offers the highest granularity (For example compute resources can be allocated to applications at the sub-CPU level).
Virtualization allows hosting of multiple applications and end-user environments in Cloud architectures - resources are shared efficiently while security, privacy and regulatory issues are addressed. Platform and OS Virtualization are accompanied by Application, Network and Storage virtualization to deliver the benefits across all architectural layers. For example, the Glassfish Open Source project provides an integrated collection of Java Enterprise Environment Containers to manage servlets, JSP files and other web tier components while providing persistence, failover, messaging and Enterprise Java Beans (EJB) support.
Cloud Computing Layers
Enterprise IT Architectures have generally used n-tier models for application deployments. The Internet and Java technology allowed monolithic applications to be decomposed into a data tier, a middleware tier and a web tier. Applications typically interact with users through a web browser. Cloud Computing similarly has evolved into different layers of services :
Infrastructure as a Service (IaaS) is the lowest layer, allowing delivery of basic compute and storage as services over the network. Servers, Storage and Network elements are pooled through virtualization and offered as services on which end-users can configure other elements, like Operating Systems, Middleware, Databases and Applications. Amazon Web Services offers the Elastic Compute Cloud (EC2) and Simple Storage Services (S3), for example.
Software as a Service (SaaS) delivers an entire application as a service, on demand through multi-tenancy. For example, Google Apps delivers functionality equivalent to traditional business productivity suites, like Mail, Calendaring, Word Processing and Spreadsheets, via the Internet. Salesforce.com provides Customer Relationship Management through the SaaS model.
Each layer can allow end-users to self-provision services, enabling automation and reducing management costs. Cloud Computing is not just about infrastructure, but a programming revolution too. The APIs provide operational and administrative hooks into the Cloud that users and applications can exploit to interact with the Cloud. Applications can potentially scale themselves based on loads - add more memory for example. Users can conduct automated maintenance operations, like taking backups.
Harvesting the Cloud
The cloud computing model can be exploited by enterprises in different ways. Prevalent practice is for an individual or a start-up to sign up for infrastructure, platform or application services being delivered by a cloud provider. Workloads from different individuals or organisations are deployed on shared resources. Such clouds are called Public Clouds.
A Private Cloud is infrastructure owned by and operated for a closed user group, while incorporating characteristics of Cloud Computing. The architecture is virtualized and self-provisioned, and resources allocated automatically and on demand. Enterprises can also create Metering and Billing facilities, to monitor resource usage by business units and to bill each unit accordingly.
A Model for Cloud Computing Services
IT environments can benefit significantly from adopting principles like virtualization, rapid provisioning, elasticity of resources, etc. A Private Cloud exploits Cloud characteristics, while still maintaining security, reliability and service levels that an enterprise is used to.
A hypothetical Private Cloud – let us call it Meghdoot - could be deployed on standard technologies for virtualized Compute, Storage and Network elements. Meghdoot could also standardize on programming languages and frameworks; every custom built (or even off the shelf) application for the enterprise should adhere to these standards. Meghdoot can optionally incorporate Billing and Metering, allowing Enterprise IT Operations to track usage by individual units, and bill them on a Pay-Per-Use basis.
A front-end can be developed that allows authorized users to log in to Meghdoot and specify their compute, storage, network and/or platform requirements by using a drag-and-drop interface. Once the user confirms the architecture needed, underlying management and automation software provisions the elements, connecting them up to build the required architecture and reporting to the user when provisioning is complete.
Meghdoot can also furnish a catalog of light-weight or complex applications for commonly used tasks. If a unit needs one of these applications, Meghdoot can automatically provision it. Administrators can access Meghdoot‘s entire architecture for management and maintenance through a central Cloud Management Console.
The author is the Chief Technologist for Sun Microsystems India