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.
Bothered by SLOW Web UI to manage vSphere? Want to manage ALL your VMware vCenters, AWS, Azure, Openstack, container behind a SINGLE pane of glass? Want to search, analyze, report, visualize VMs, hosts, networks, datastores, events as easily as Google the Web? Find out more about vSearch 3.0: the search engine for all your private and public clouds.
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.
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:
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.
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.
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.