Home > Cloud Computing, Software Development > Top 10 Best Practices Architecting Applications for VMware Cloud (part 1)

Top 10 Best Practices Architecting Applications for VMware Cloud (part 1)

March 17th, 2010 Leave a comment Go to comments


With more data centers running on purely virtualized systems, more applications are therefore running on top of virtualized environment than ever before. These virtualized systems are interconnected with each other and become a cloud platform. Virtualization is the pre-requisite and starting point of the cloud computing at the IaaS level.

Time to learn how to "Google" and manage your VMware and clouds in a fast and secure


Most of the applications running on virtual machines are just converted as part of physical machines to virtual machines, or installed and run in a way just as before. Essentially they are not much different from counterparts running on physical machines. We call these applications as “Application In the Cloud” (AIC).

Cloud environment brings in new opportunities and challenges for application development. Modern applications can, and should, be designed or re-factored to fully leverage cloud infrastructure. When that happens, we call these applications “Applications For the Cloud” (AFCs), versus AICs as described above.

The following is a table that compares these two types.

  • Legacy application consolidated into the cloud
  • Not leveraging the cloud infrastructure
  • Good as the first step toward cloud computing
  • Application designed ground up to leverage cloud infrastructure
  • Natural second step toward cloud computing

    What’s Different in Virtualized Cloud?

    In the cloud environment, the terms like application and virtual machine could refer to same thing because a virtual machine could have one application running. The operating system is there just to support the application running on top of it, and therefore can be reduced down to the minimum which we call Just Enough Operating System (JEOS). The virtual machines used as such are often called virtual appliances (VAs).

    The virtual machines are essentially a bunch of files that can run on hypervisors. They can:

    • be created dynamically and cheaply;
    • be cloned from another VM or template;
    • share resources with other virtual machines running on the same physical server, and even other physical servers in the same cluster;
    • be allocated with more or less memory, CPU on the fly without being powered off as physical machine;
    • be pre-installed with all the software;
    • be self-containing with guest OS, middleware, and  applications. You don’t need to do extra;
    • move around from a physical server to another without being noticed by external parties.

    The applications that run on physical hardware continue to run on vSphere, but they can be much more:

    • Flexible
      Applications can move around as a result of virtual machine vMotion. In a clustered application, the topology can be more flexible with cheaper virtual machines.
    • Scalable
      The system resource is no longer limited to one machine, but expanded to whole infrastructure cluster like DRS. The resource allocation can be adjusted up when needed, and down when no longer needed.
    • Dynamic
      New virtual machines can be provisioned easily. Resource allocation and networking can all be changed on the fly.

    The characteristics of the applications could mean big opportunities for enterprises to transform IT toward efficiency and cost saving. As everything else, no pain no gain. Designing AFCs also means challenges.

    The good news is that these challenges are mostly old problems with new dimensions in the cloud context. In the following parts, I will go through 10 design best practices for architecting your cloud applications.

    Just to set the expectation, we are not going to talk about specific techniques, design methodologies, or even what programming languages, etc. We will just focus on the design principles for cloud applications.

    Stay tuned by subscribe to this feed.

    1. March 17th, 2010 at 03:45 | #1

      Steve, really looking forward to the series. The detailing of AIC vs AFC is a great detail.

      I hope you clear up what you mean by VMware Cloud. Is that vSphere, is it Redwood (a forth coming product which has been talked about in public by VMware so I am not breaking and NDA here), is it Spring. Maybe its all of these.

      The fine line (IMHO) is how much of this is building for scalable software architectures, using JeOS, statelessness, scale out, and not really Cloud. Software development has rotated through mainframe, client-server, n-tier, distributed computing etc. Combining these techniques with the specific attributes of cloud such as Elastic consumption, fast deployment and tear down through virtualisation and APIs you now have a killer application. Rather than dragging your legacy systems (AIC) you have workloads that like the Cloud model (AFC) whether that be internal or external.

      For the list of items that are “different in virtualised Cloud” you could also label as “Whats different for vApps in vSphere”. Also this could all be about building for the “Dynamic Datacenter” as well as “Cloud”.

      Be really keen to see your insights on practices for networking and security when it comes to architecting applications for VMware Cloud.

      Great stuff.


    2. March 18th, 2010 at 01:14 | #2

      Hi Rodos,

      Thanks for bringing up the “VMware Cloud!” In this series, I intentionally used this term as a generalization for both vsphere and redwood. It does not however include Spring, which is a middleware that can be used to build these applications.

      In my opinion, vSphere is cloud becuase it has almost all the charateristics you would expect from a cloud computing infrastructure. Redwood brings in two important pieces: scalability that goes beyond one vCenter, and vCloud API which is a dramatic simplification from vSphere API. Still with the capability to manage several hundreds of hosts, vSphere is good for a good size already.

      vCloud API is not a must-to-have for a cloud but a nice-to-have. You can actaully build vCloud API around the vSphere by yourself becuase it’s a public standard now. I know some people doing this and I am trying to convince them to open source their projects. It takes time and may or may not see a good result soon. :-)

      To sum up, the best practices I am going to lay you in the next several parts will apply on both vSphere, Redwood, or the clouds implemented by our vCloudExpress partners. Some of these best practices are also applicable to other cloud apps on EC2, or even distributed computing system in general. Most of the times, the best practices are the same but with new context of cloud and virtualization.

      Please feel free to share your insights on the best practices along the way.


    3. Girish
      March 20th, 2010 at 09:47 | #3

      This is a great input.
      Can users think of each VM as a service that can be hosted,does the vmware framework possess inherent capabilities required for SOA?? How can open source based applications provide better solutions for SOA – solutions related to cost and increasing the exposure??

    4. March 20th, 2010 at 12:47 | #4

      I think users can think of VMs as whatever they want, including desktops, web servers, messaging servers, etc. When it comes to a service, it’s better to define it as an interface. Whether it’s implemented with VMs or not should be transparent to the users.

      SOA complements with cloud computing very well. In terms of open source applications, they are not necessarily cheaper than commercial ones when you account the initial setup/configuration and support.

    1. October 5th, 2014 at 14:47 | #1