HAV vs. Cloud
Posted: 10/08/2012 Filed under: cloud, HAV | Tags: application deployment in cloud, cloud, cloud and patching, cloud application design, cloud architectures, cloud database tier, commodity hardware, fault tolerant, HAV, HAV versus CLOUD, hav vs cloud, hypervisor, IaaS, infrastructure zones, iSCSI, KVM, openstack, openstack versus vmware, SOA and cloud, virtualization, XEN 2 CommentsI’m tired of the word cloud. It is so hackneyed at this point that uttering it out of my mouth feels like a “poser” skateboarder in the late 80’s wearing Vision Street Wear and holding a pristine Gator pro model with rails, copers, and a nosegaurd. Sigh. However, for over a year now I have had to ensure that all my peers at Gap and those upstream of me understood the differences between “true” cloud and virtualization. Infrastructure architectural designs and discussions had to be framed in such a way to avoid people (even smart people) from being sucked into broad misinterpretations of technology implementations.
Back in July of 2011, my buddy Chris Buben and I sat in the Gap cafeteria frustrated on how to get everyone on our teams aligned on how to properly consume “cloud”. We wasted so much time in team meetings correcting people’s widespread misuse of the term that we were determined to fix the vernacular. One of the biggest impediments to successful technology projects is clear communications. Specifically, the need to align everyone on the terms. This means you need everyone from technology VP down to analyst saying the same things the same way. We needed a clearer way to mass communicate virtualization versus cloud. So, we came up with a simple way to quickly and easily differentiate a lot of big infrastructure architectural differences with cloud and pure virtualization. We started describing two different architectural zones: One zone we called High Availability Virtualization or HAV and another just called cloud.
We wanted to draw a distinction between the two to avoid having people think that we can simply shove every application we have at Gap into what we considered real cloud architected infrastructure. The reality is that you cannot. Not every app is architected and has code that is amenable to real cloud computing. The sad truth is that many commercially sold applications are not optimized for real cloud. Case in point: many Oracle e-business apps (In fact, Oracle seems to go out of their way to make applications difficult to run on anything but Oracle platforms and software… but I digress). So, we needed a way to give ourselves breathing room to host some apps in a virtualized environment to reap some modern architectural benefits without being caught up in the “cloud” term abuse game. HAV became our mantra for everything non-cloud. You might ask, what and why are you drawing a distinction? The answer is that we had our own clear viewpoints about what cloud really was versus just virtualization. For purposes of this analysis we are using OpenStack as our cloud (IaaS) platform. To understand our position, I put together a breakdown for HAV versus Cloud. Understand that some features are continuously being developed and improved in the cloud arena (especially in the networking area) so this chart is changing as I type.
HAV Versus Cloud
- Private Cloud = cheap, fault tolerant by design, disposable, big scale
- HAV = more expensive, fault tolerance through licensed features, less scalability
PROFILES
Database Tier
So, why go to all this trouble to break these out? Because, when trying to properly place applications in the most appropriate environment for deployment, you need to take all these factors into consideration. You may have an application that does not tolerate network address translation, or does not work well in a load balancer design, or needs ultra-high IOPs. In such a case, you may be better served deploying such apps in HAV architected infrastructure zones. However, if you have a modern, truly service oriented architecture (SOA) app that doesn’t require ultra high IOPs, and is designed from ground up to be stateless and has built in failure detection then cloud architected zones may be perfectly appropriate.
The point is: Don’t just try to shove every app (commercial or homegrown) into cloud architected zones without understanding the implications for doing so. You may have undesired performance or reliability headaches. Our goal is to move as much or our application workload to OpenStack based cloud infrastructure zones as possible. However, on the journey to that nirvana, we have a lot of legacy app crud that just isn’t optimized for true cloud infrastructure. For these apps, we have opted for a one-two hop using just an HAV infrastructure zone on the way to cloud. This will buy us time to either re-architect those apps or simply replace them. This brings up a larger discussion about proper cloud application design. In the next post, I will cover months of work by our internal architects and app dev teams at Gap for what comprises “cloud architected” application best practices.