Standardize new virtual machine provisioning with templates
It’s been a pain to create new virtual machines with the right software installed and configured properly. You can always use tools like KickStart to automatically install the operating system and then install other software as needed. But configuring such an environment is not trivial, and it takes a long time from start to finish.
With the rise of virtualization, more virtual machines are provisioned (and decommissioned) than ever before. Installing each new virtual machine from scratch is not the ideal solution.
Solution Read more... (729 words, estimated 2:55 mins reading time)
Provide a configurable structure for modularized information processing
Complicated data processing involves many distinctive and repetitive steps. Each of these steps can be mapped to a software module that is independently developed and assembled for particular cases of data processing.
Given the elastic nature of cloud computing, it’s a perfect platform for data processing. We need a solution that is flexible in two ways:
1. Modularized components for data processing;
2. Configurable so that different modules can be re-used easily in various cases.
Solution Read more... (865 words, 2 images, estimated 3:28 mins reading time)
Ensure a virtual machine does not carry a permanent state so that it can be easily provisioned, migrated, and managed in the cloud.
Also Known As
Virtualization is the cornerstone for cloud computing, especially at the infrastructure level. With many virtual machines created, managing them becomes a big challenge.
Among these challenges are system provisioning, backup, archiving, and patching different virtual machines. These administrative tasks take lots of CAPEX and OPEX.
We need a better way to architect applications for the cloud.
Making a VM stateless solves a lot of problems. For one thing, you force applications to save data outside of the virtual machine. No longer do you need to back up the virtual machine – only the data. It also makes the system provisioning easier without differentiating the different instances. When the stateless VMs crash for whatever reasons, you don’t lose much. Just add a new virtual machine and voila! Read more... (699 words, estimated 2:48 mins reading time)
Separate concerns in large scales computing by leveraging different types of services in the cloud
The history of computing reveals different eras starting from mainframe to client/server to Web computing. With mainframes, computing is contained within the boundary of a mainframe. With client/server and web computing we see the separation of the presentation from the data. With all these computing models, the data is owned and maintained by different applications. The IT staffs who run and maintain the applications are responsible for backing up and maintaining data.
With the rise of cloud computing, I see a new trend that will fundamentally change the game and push productivity to all new levels. I call this “Aspectual Centralization” (AC). This is as important to cloud architecture as Model-View-Controller (MVC) is to software architecture.
With AC, different aspects of an application are extracted out and delegated to centralized services: data services, messaging services, logging services, and so on. Read more... (596 words, estimated 2:23 mins reading time)
Provide a mechanism to fast provision virtual machines (VMs) and manage their lifecycles by maintaining a pool of virtual machines.
Virtual machines can be expensive to create. It takes several minutes to create a new virtual machine. Technologies like linked clone and storage offloading can help speed up the process, but it still takes time. And these alternative approaches, in some use cases, do not help when you need instant provisioning.
It’s generally a good practice to pool resources that are expensive to create. In programming, you pool threads and check them out on demand. When it’s done, you check them in back to the pool. This is what most Web Servers do for high performance.
You can leverage the same idea for VM provisioning. You create new virtual machines and put them into a pool. When there is a new request, you just check out one virtual machine from the pool. The following diagram shows how it works. Read more... (883 words, 1 image, estimated 3:32 mins reading time)
In my last blog, I wrote about pattern idea from the famous books “Design Pattern” and “A Pattern Language” and how it can be applied to cloud architecture design. Below and in later posts in this series I shall follow the content outline used there to illustrate the cloud architecture patterns.
Provide a standard way to create new virtual machines based on user requirements.
There are enormous combinations of virtual machines with different operating systems, middleware, and applications. And then we have user data to the mix! We need a standard way to create new virtual machines.
General speaking, there are three basic ways to create new virtual machines: Read more... (983 words, 2 images, estimated 3:56 mins reading time)
Design patterns have been very popular among software developers since the book by Gang of Four (Enrich Gamma, Richard Helm, Ralph Johnson, John Vlissides) in 1995. If you go to an interview for a software engineering position today, the chances are you most likely get one or more questions on design patterns.
Like many concepts in software that from other disciplines, the “pattern” idea was “borrowed” from “A Pattern Language,” a book by Christopher Alexander on architectural patterns published 20 years before we started to talk about software design pattern. His book turns out to be a great way to summarize and document reusable design elements for different engineering works.
As Christopher points out, “Each pattern describes a problem which occurs over and over again in our environment, and then described the core of the solution to that problem, in such a way you can use the solution a million times over, without ever doing it the same way twice.”
Today I “borrow” the same idea and apply the concept to cloud computing on architecture designs. The main focus is on virtual machine-based architecture patterns so that you can best leverage virtual machines for your cloud computing.
What is a Cloud Architecture Pattern?
An architectural pattern extracts the common and re-usable design concepts and components. If we put it in the big picture, it should be somewhere below the overall system architecture and above software design as the middle layer. Read more... (1041 words, estimated 4:10 mins reading time)
In my last blog, I discussed how to optimize workloads across the cloud. This is based on the assumption that you already have an existing infrastructure. What if you don’t have an existing cloud infrastructure but would like to design one from scratch? Here is what you should be thinking about to get the most from your new cloud.
But first let’s take a look at other types of infrastructures – say a road. When you design a new road, you have to collect data such as population densities around the area, people’s working schedules, what types of vehicles will run on the road, and so on. With that information, you can decide how many lanes you want, what kind of road surface is required, and so on. You don’t just make up the design specification from scratch, and lay down an eight-lane freeway everywhere.
The same process applies in designing the cloud infrastructure as well. Unfortunately this is not what we see often today.
In my previous blog , I said infrastructure is a means and application is the end. We need to drive the design cloud architecture from the application perspective. This is what I call the top-down approach. Read more... (611 words, estimated 2:27 mins reading time)
A recent article from Dr. Dobb’s introduced Fundamental Concepts of Parallel Programming. Richard Gerber and Andrew Binstock, authors of Programming with Hyper-Threading Technology, discussed three different forms of de-compositions for multi-threading:
- Functional decomposition. It’s one of the most common ways to achieve parallel execution. Using this approach, individual tasks are catalogued. If two of them can run concurrently, they are scheduled to do so by the developer.
- Producer/Consumer. It’s a form of functional decomposition in which one thread’s output is the input to a second. Can be hard to avoid, but frequently detrimental to performance.
- Data decomposition, a.k.a. “data level parallelism.” It breaks down tasks by the data they work on, rather than by nature of the task. Programs that are broken down via data decomposition generally have many threads performing the same work, just on different data items.
To make the three forms easy to understand, the authors used gardening as analogy where the threads map to gardners. For exmaple, the fuctional decomposition in gardening is to have one gardner to move the lawn and the other to weed. I find this analogy very intuitive and easy to follow. Even you don’t know multh-threading, you can guess it out from the gardening analogy.
The challenges while working with multi-threading are: Read more... (423 words, estimated 1:42 mins reading time)
Most people who are interested in VMworld already know the public voting for the proposal is now open till 26th. If you would like to hear about specific topics, it’s high time to cast your votes.
For each track, all the presentation proposals are listed together in one page. To quickly locate a particular proposal, you can use find feature of your browser. Once you login, I would suggest to browse all the proposals and vote for those you find useful. Casting a vote is just two mouse clicks: one for voting and the other to close the confirmation message box. Read more... (523 words, estimated 2:06 mins reading time)
Last week I saw an incoming link at my blog site from privatecloud.com, a website promoting private cloud computing inside enterprises backed by EMC. Due to curiosity, I browsed the website and found a video by VMware CEO Paul Maritz on cloud computing. BTW, my website is also featured at the home page. Thanks privatecloud.com!
In the video, Paul talked about the cloud computing, mostly referring to services over the Internet, can also be an architecture pattern for enterprises. When that architecture is implemented, you will have a private cloud on premise. Although not using cloud services from any service provider, you still get almost all the benefits in a private cloud.
From the system architecture perspective, your applications built within a private cloud aren’t much different than those built using external cloud services. If both of the services follow the same interface spec, your application may switch between public cloud and private cloud either statically or dynamically. Read more... (325 words, estimated 1:18 mins reading time)
I know I haven’t written the day three of my PEX yet. You know there was a celebration party at that night and we had a really good time there. Now I’m back and have more time to write about day three.
CTO Steve Herrod’s Keynote
This is the most important part of day three, followed by the celebration party:-). If you are interested in knowing what is happening in VMware R&D and what new products are coming from VMware, you don’t want to miss a single minute of Steve’s keynote. That is why I got there early and sat in the front. Read more... (946 words, estimated 3:47 mins reading time)