I have been interested in the notion of what I like to call “Hive Architecture” for a few years. It is designing software services that are the sum of their parts using virtual machines. As with a bee hive, each member has a simple function but collectively they form a complex system necessary for survival. Designing IT infrastructure in a similar manner allows you to be more Cloud friendly.
Although the design concept is not new; as clustering has been around for years and we have seen early versions of this based on virtualization with projects such as LiquidVM (BEA/Oracle) and JeOS (the Just Enough OS initiative).
At one point VMware was a strong proponent of the concept. I remember sitting in a keynote session for VMware, the speaker was explaining that the time of multi-function, general purpose OSes was over. Well that didn’t happen, and with the strong adoption of Windows 2008 R2 it seems that the general purpose OS will be around for a time longer.
There are lessons however in the design principles, especially when we look at how VMware in enabling Cloud adoption. With vCloud Director VMware is very much betting on organizations adopting Clouds that look and feel very much like their internal virtualization infrastructure. So how does the concept of Hive Architecture and VMware’s vision come together?
If we move forward to todays virtualization environments; the focus has been on automation to simplify management of the virtualization stack and reduce the operational overhead of managing a cluster of VMs running traditional operating systems and leveraging virtualization much more heavily in the supporting Network and storage infrastructure. In addition with the vCloud and vShield product line; the stretching of virtual infrastructure securely between separate locations. How then does Hive architecture add any value to what todays operational environments look like?
The concept is rather simple; when we implement multi-tiered applications that have database,web, load balancing, network considerations in our virtual infrastructure we should keep in mind that the application should be deployed as if it is a single ‘hive’ avoiding the sharing of services between non-related VMs even if it goes against our grain. Now this may not be possible due to licensing costs; consider the conundrum of running dedicated SQL services to an app vs. the simplicity of collecting databases on a centralized service and the operational overhead.
So why consider it? Well if we use the example of a company that has an internal datacenter running VMware and has stretched this to take advantage of virtual infrastructure at their cloud provider and is now considering what makes sense to put at arms length, Hive architecture makes sense. The entire business application is made up of a logically collected bunch of VMs (‘the hive if you will’). The IT organization does not have to go through a large decoupling of shared services to take advantage of the cloud opportunity.
The idea occurred to me several years ago when I had the experience of working with an organization that was isolating and virtualizing services by business application for QA. It was a significant challenge to map out all the involved software, servers and supporting infrastructure. It also struck me when watching a presentation by Intel corporation about Cloud adoption in which they detailed the amount of organization required to enable them to make use of Cloud computing. It was no small effort. While Hive architecture is not the end all, it is an important consideration in simplifying the move to the Cloud.