Architectural Tips for Infrastructure as a Service (IaaS)

box10written by gunther gerlach-2009

Evolving application architectures just as P have shown that cloud computing is a natural extension of current trends and best practices, the same is true when viewing cloud computing from an architectural perspective. Again, cloud computing is nothing new, yet in its implementation, it changes everything that we do.

Changing application designs In the past, applications were built to handle larger workloads through vertical scaling. Put more processors and memory on a mail server to handle a larger volume of traffic. Scale up a database server to increase throughput. Run high-performance computing jobs on a supercomputer.

The movement away from highly scalable symmetric multiprocessors and toward less expensive, but less scalable x86-architecture servers has influenced application design. Rather than expecting applications to run on highly scalable servers, developers have been refactoring their applications so that they can scale horizontally across a number of servers. This application refactoring is not always easy, as both applications and their data must be designed so that both processing and data can be factored into smaller chunks. This existing architectural trend has been a key factor propelling the adoption of cloud computing. Examples of this trend include:

High-performance computing HPC workloads have been running on bare-metal compute grids for some time now, enabled by application refactoring. Grid computing is a predecessor to cloud computing in that it uses tools to provision and manage multiple racks of physical servers so that they all can work together to solve a problem. With its high compute, interprocess communication, and I/O demands, HPC workloads are good candidates for clouds that provide infrastructure as a service, specifically bare-metal servers or Type I virtual machines that provide more direct access to I/O devices.

Database management systems Database management systems have adapted to run in cloud environments by horizontally scaling database servers and partitioning tables across them. This technique, known as sharding, allows multiple instances of database software —often MySQL software — to scale performance in a cloud environment. Rather than accessing a single, central database, applications now access one of many database instances depending on which shard contains the desired data.

The goals remain

Numerous advances in application architecture have helped to promote the adoption of cloud computing. These advances help to support the goal of efficient application development while helping applications to be elastic and scale gracefully and automatically. The overriding objective of good application architectures, however, has not changed at all: it is to support the same characteristics that have always been important:

Ø  Scalability

Ø  Availability

Ø  Reliability

Ø  Security

Ø  Flexibility and agility

Ø  Serviceability

Ø  Efficiency

 

Horizontal scaling

Cloud computing makes a massive amount of horizontal scalability available to applications that can take advantage of it. The trend toward designing and refactoring applications to work well in horizontally scaled environments means that an increasing number of applications are well suited to cloud computing. Applications taking advantage of horizontal scaling should focus on overall application availability with the assumption that individual components will fail.

Most cloud platforms are built on a virtual pool of server resources where, if any one physical server fails, the virtual machines that it was hosting are simply restarted on a different physical server. The combination of stateless and loose-coupled application components with horizontal scaling promotes a fail-in-place strategy that does not depend on the reliability of any one component.

Horizontal scaling does not have to be limited to a single cloud. Depending on the size and location of application data, “surge computing” can be used to extend a cloud’s capability to accommodate temporary increases in workload. In surge computing, an application running in a private cloud might recruit additional resources from a public cloud as the need arises.

 

Parallelization

Horizontal scaling and parallelization go hand in hand, however today the scale and implementation has changed. On a microscopic scale, software can use vertical scaling on symmetric multiprocessors to spawn multiple threads where parallelization can speed operations or increase response time. But with today’s compute environments shifting toward x86-architecture servers with two and four sockets, vertical scaling only has as much parallel processing capability as the server has cores (or as many cores have been purchased and allocated to a particular virtual machine). On a macroscopic scale, software that can use parallelization across many servers can scale to thousands of servers, offering more scalability than was possible with symmetric multiprocessing.

 Information posted by www.sun.com

Gunther Gerlach

  1. No comments yet.
  1. No trackbacks yet.