Cloud computing raises the level of abstraction so that all components are abstracted or virtualized, and can be used to quickly compose higher-level applications or platforms. If a component does not provide a consistent and stable abstraction layer to its clients or peers, it’s not appropriate for cloud computing.

The standard deployment unit is a virtual machine, which by its very nature is designed to run on an abstract hardware platform. It’s easy to over focus on building virtual machine images and forget about the model that was used to create them. In cloud computing, it’s important to maintain the model, not the image itself. The model is maintained; the image is produced from the model.

Virtual machine images will always change because the layers of software within them will always need to be patched, upgraded, or reconfigured. What doesn’t change is the process of creating the virtual machine image, and this is what developers should focus on. A developer might build a virtual machine image by layering a Web server, application server, and MySQL database server onto an operating system image, applying patches, configuration changes, and interconnecting components at each layer. Focusing on the model, rather than the virtual machine image, allows the images themselves to be updated as needed by re-applying the model to a new set of components.

With this standard deployment unit, cloud architects can use appliances that help to speed deployment with lower costs. A developer might use an appliance that is preconfigured to run Hadoop on the OpenSolaris OS by interacting with the appliance’s API. Architects can use content switches that are deployed not as physical devices, but as virtual appliances. All that needs to be done to deploy it is interact with its API or GUI. Even companies producing licensed, commercial software are adapting to cloud computing with more flexible, use-based licensing models. Whether invoking a model that creates a virtual machine image, or customizing an appliance, the resulting virtual machine images need to be stored in a library of images that the enterprise versions and supports.



Standards help to address complexity
Cloud computing emphasizes efficiency above all, so adopting a small number of standards and standard configurations helps to reduce maintenance and deployment costs. Having standards that make deployment easy is more important than having the perfect environment for the job. The 80/20 rule comes into play here: cloud computing focuses on the few standards that can support 80% of the use cases. This shifts the economics from costly, one-off implementations to choosing the building blocks that can be used in the largest volume. There will continue to be specialization, however the starting point should be with a standard.

For an enterprise shifting to cloud computing, standards may include the type of virtual machine, the operating system in standard virtual machine images, tools, and programming languages supported:

• Virtual machine types. Consider the impact of virtual machine choice on the application to be supported. For a social networking application, isolation for security, and a high level of abstraction for portability, would suggest using Type II virtual machines. For a high-performance computing or visualization applications, the need to access hardware directly to achieve the utmost performance would suggest using Type I virtual machines.

• Preinstalled, preconfigured systems. The software on virtual machines must be maintained just as it does on a physical server. Operating systems still need to be hardened, patched, and upgraded. Having a small, standard set of supported configurations allows developers to use the current supported virtual machine. When the supported configuration is updated, the model dictating customizations should be designed so that it’s easy to re-apply changes to a new virtual machine image. The same is true for appliances, where the current version can be configured through their standard APIs.

• Tools and languages. Enterprises might standardize on using the Java programming language and Ruby on Rails; small businesses might standardize on PHP as their preferred tools for building applications. As these standards mature in the context of cloud computing, they start to form the next layer, platform as a service.



Virtualization and encapsulation supports refactoring
When applications are refactored and created by combining and configuring a set of virtual machine images and appliances, the emphasis is on what a particular virtual machine does, not how it’s implemented. Virtualization and encapsulation hides implementation details and refocuses developers on the interfaces and interactions between components. These components should provide standard interfaces so that developers can build applications quickly and easily — as well as use alternate components with similar functionality as performance or cost dictates.

Application deployment is done programmatically, and even the programs that deploy applications can be encapsulated so that they can be used and re-used. A program that deploys a three-tier Web infrastructure could be encapsulated so that its parameters would include pointers to virtual machine images for the Web server, business logic, and database tiers. This design pattern could then be executed to deploy standard applications without having to re-invent or even reconsider, for example, the network architecture required to support each tier.

The cloud computing philosophy for application maintenance is not to patch, but redeploy. Managing the model that created a virtual machine image, not the image itself, simplifies this redeployment. It’s relatively easy to solve problems discovered after deployment, or release new versions of the application by updating the component virtual machines and invoking the design pattern to redeploy. When a developer patches a virtual machine, only one virtual machine image needs to be created — the rest should be replicated and deployed programmatically. Virtual machines should be versioned to facilitate rollback when necessary.

Source of Information : Introduction to Cloud Computing architecture White Paper 1st Edition, June 2009

0 comments


Subscribe to Developer Techno ?
Enter your email address:

Delivered by FeedBurner