Cloud: Build IT, Fix IT, or Buy IT?

Absolutely and undoubtedly the most critical and common question I hear from IT leadership today in regards to Cloud Enablement (double buzz word score!) is – “Should we build the infrastructure ourselves, fix what we have, or just hand over the project and buy it from someone else?”

The marketing translation is private-cloud, hybrid-cloud, and public-cloud.

Just in case you want to save some time and skip the rest of this post, the short answer is –“it depends and/or combination of all three.”

I know, it is both a frustratingly noncommittal response and a lazy answer at best, but unfortunately, this is the world we live in today.

Why? Because (warning controversial statement) “The Cloud” is still very early in its maturity stage and making long term decisions based on something that is in constant flux is difficult. Even further, your envrionment is nothing like anyone else’s so every evaluation point is literally a unique variable in the decision process. This means every choice you make is pretty much a guess.

How then can anyone ever get anything done if we never know the correct answers? First step is to narrow down the options with questions like:

  • Does the team have enough cycles to learn about, understand, and compare all the different options in the market while keeping up with their daily responsibilities?
  • If not, can you dedicate the appropriate amount of resources (people and/or money) to fully architect, deploy, and maintain an environment on time and within a set budget?
  • Is your primary business in developing and deploying applications? If not, do you plan on moving in that direction?
  • Will there be a chance to monetize the solution or expand into a new market?
  • Do you already have enough in your environment to modify to meet your near term requirements?
  • Can someone else do it for less cost at the same or better quality?
  • What is the backup plan or “get well” strategy if someone else cannot deliver on promised SLA’s?
  • What is your tolerance for risk?
  • Can you demonstrate accurately the operation cost of keeping your infrastructure on premise vs. moving it to a hosted provider?

Second step then is to look at this answers and assess if it meets desired outcomes and goals. If it does, you have a great jumping off point. If it doesn’t, you need to continue to ask questions.

One thing I do want to make clear is that these questions are not trying to steer the conversation into any one particular solution. Like I mentioned above there are several ways to solve this challenge and making the best recommendation always comes down to digging in and finding out as much information as possible and try to make the most educated guess as possible.

Remember, no solution is ever perfect, but asking tough and sometimes uncomfortable questions will provide a good starting point for you to move in the right direction!

Technical Debt and Why it is Important

Recently the topic of “Technical Debt” came up during a project planning meeting with a customer. If you have never heard the term before I am not surprised. Although it is an important and a key metric to track it is rarely discussed or addressed.

What is it?

Originally coined in regards to traditional software development (also known as design debt or code debt) technical debt simply refers to amount of work that is still owed to the business before a group can call a project complete.

There are a wide variety of reasons that contribute to the long-term debt of a project, some of them are below:

  • Meeting aggressive timelines, cutting corners, removing features
  • Trying to meet internal and external business demands
  • Lack of an accurate budget or negligence in managing said budget
  • Sudden technology changes
  • Missing key knowledge, processes or understanding
  • Improper scoping and planning
  • Lack of collaboration and teamwork
  • Unable to pivot when the project is beyond repair

Why is this important?

It is important to know what this debt is because much like real financial debt (think credit cards) it can increase with interest over time and this interest has a compounding effect. Once you get behind on deployment keeping everything running and patched begins to become a huge challenge demanding more and more resources. Scale, adding new features and providing agility begins to become very difficult.

More often than not this liability is never truly paid back. Sooner or later the business decides to write it off and start again with a new project. Unfortunately I see repeating behaviors and can almost conclude without a doubt that the next project will suffer the same fate.

This is detrimental to your organizations efficiency and effectiveness causing such problems as:

  • Longer time to market and missed opportunities
  • Increased spend on repeat processes
  • Ineffective resource management
  • Lost productivity and decrease in morale
  • Key business owners losing confidence in IT’s ability to deliver
  • Shadow IT projects

How do you fix it?

First and foremost take ownership of the project and have proper understanding of the outcome and desired results. When the scope of the project is defined there is no doubt on the expectations for a successful launch. This also gives you the baseline or true cost to measure future debt against.

Second, take larger projects and break them down into the smallest deployments possible. Then develop these small deployments into repeatable operations that can be automated. Create feedback loops so you can make adjustments on the smaller deployments as quickly as possible. By the time you need to make an pivot on a larger rollout it is too late.

Third be consistently ruthless in removing waste. Inefficiencies will destroy any hopes of a successful project. Know your resources (strengths and weakness), potential bottlenecks and distractions.

Finally, don’t be afraid of failing or admitting a mistake. Not all projects turn out the way we plan and sooner or later a change is in store. It is better to admit this and make adjustments than to follow course. More times than not when I hear of a failed project there always seems to be awareness early on that something is not going correctly.

Did You Know That vSphere 5.5 Supports Graphic Acceleration for Linux Guests?

Either did I! Leveraging the GPU on the vSphere host it is possible to take advantage of performance acceleration. Using a guest five the entire Linux graphics stack can benefit from this improvement. Best part of all…VMware is releasing the driver code to the open-source community allowing for out of the box support reducing the need for addition tools and package installation.

The following Linux distributions are supported (based on their “What’s New Document”)

• Ubuntu: 12.04 and later • Fedora: 17 and later
• RHEL 7

With the new guest driver, modern Linux distributions are enabled to support technologies such as the following:

• OpenGL 2.1
• DRM kernel mode setting • Xrandr
• XRender
• Xv

Now the interesting part. While 5.1 released some basic support for 3D acceleration it was only supported on NVIDIA and left out AMD and Intel. With 5.5 they have expanded support to AMD but as of yet no support for Intel. Below is the statement from the KB

Note: This Compatibility Guide will always contain the most up to date information. Use as your primary source to verify 3D support for a guest operating system. Use this article as a secondary source.

Hardware requirements

  • AMD
    • FirePro S7000 /S9000/S10000
    • FirePro v7800P/V9800P
    • Grid K1 and K2

Software requirements

  • Windows 7 or Windows 8 virtual machines:
    • VMware Horizon View 5.x or later
    • vSphere Client or VMware Workstation client
  • Linux virtual machines with the vmwgfx driver:
    • Fedora 10 or later or Ubuntu 12 or later
    • vSphere Clients or VMware Workstation clients

Note: Linux virtual machines do not include Horizon View support.

vSphere 5.5 Networking Enhancements

Just a quick update on what was released with version 5.5 in regards to networking enhancements.

  • Enhanced ling aggregation provides choose in hashing algorithms and increases the limit of link aggregation groups
  • The port security has been increased
  • Traffic is now prioritized at layer 3
  • A new packet capture tool helps monitor various layers of the virtual switching stack
  • 40GB Nic Supprt – Mellanox Connec VPI adapters configured in Ethernet mode


Running Hyper-V in vCenter!

With the announcement of vCenter Operations a few months ago I was thinking about how vCenter and how useful this interface has become over the last few years. For whatever reason I started to wonder if vCenter could handle the management of non-vSphere virtual machines. As I had a few conversations I was met with some weird expressions and utter confusion. “Why would you want to?” seemed to be a common response, more on that later.

I knew that Microsoft Virtual Machine Manager claims to manage VMware VM’s (I wouldn’t vouch for the performance ) so I was sure VMware had some sort of tool of their own, right?  After some research it turns out I was half right.


Lets back up and explain the why. First and my favorite response is always “why not?” If it can be done, why not prove it. Second and a more responsible and applicable reason is because hyper-v is free.* I am not saying replace your VMware environment, I am saying from a cost perspective if you wanted to spin up a few fully functioning VM’s for test/dev or branch office tier 3 applications hyper-v is a good and inexpensive choice.

The Solution

The part why I was only partially correct. So it turns out there is a program called vCenter XVP Manager and Converter, and it does just that.  As stated from their website.

VMware vCenter XVP Manager and Converter provides basic virtualization management capabilities for non-vSphere hypervisor platforms towards enabling centralized visibility and control across heterogeneous virtual infrastructures. It also simplifies and enables easy migrations of virtual machines from non-vSphere virtualization platforms to VMware vSphere.

But, and it’s a big but, it is part of VMware Lab’s department and isn’t fully supported. So while it is a tool that exists, I can’t claim it is a full-fledged product. With that said use at your own risk.

Fine Print

It is new and doesn’t look like it was tested very much as the forums are looking a bit full. The technical requirements are a little strict. For example you actually need Virtual Machine Manager running and the host must also have Windows Remote Management (WinRM) v1.1. Performance and features are limited with its primary purpose bridge to managing a mixed environment.

*I don’t want to get bogged down on true cost of Hyper-V, it has been overly communicated if you want more information feel free to Google it, but just know nothing is free and you do end up paying something for Hyper-V.

Below is some more details and I have provided some links.


  • Management of the following Microsoft Hyper-V platforms:
    • Microsoft Hyper-V Server 2008
    • Microsoft Windows Server 2008 (64-bit) with Hyper-V role enabled
    • Microsoft Hyper-V Server 2008 R2
    • Microsoft Windows Server 2008 R2 with Hyper-V role enabled
  • Familiar vCenter Server graphical user interface for navigating through and managing non-vSphere inventory
  • Ease of virtual machine migrations from non-vSphere hosts to vSphere inventory
  • Compatible with VMware vCenter Server 4.0 & 4.1
  • Scalable up to management of 50 non-vSphere hosts

If you find it interesting:

-Here is a link on a guide to Hyper-V Features for the VMware administrator.

VMware Acquires WaveMaker

Some interesting news today, it looks like VMware acquired WaveMaker. While this isn ‘t part of VMware’s core virtualization product line it will accent their Springsource division.  Hear is “The Vision” according to the Springsource blog:

We’ve always believed that we should eventually provide Spring-based technology to enable less technical users to build such applications, increasing the value of the Spring platform and enabling many business problems to be solved most cheaply.  In practice, this means introducing visual tooling to take the place of coding, in areas (such as UI design) where automation is possible.  Done right, such automation can even benefit professional developers, for certain classes of application.

Enter WaveMaker.

WaveMaker is a proven, browser-based visual tool for building Spring applications.

With WaveMaker we can create a unique opportunity for coding and non-coding developers to collaborate on the Spring platform, providing large business value.

Traditionally the Achilles heel of such approaches is that the visual tooling produces applications that developers won’t want to hand edit—meaning that once the non-technical staff hit a wall and need further modifications to the application, specialist developers can’t help without reimplementing the application from scratch.

We chose WaveMaker because with it, we can avoid this problem.  A WaveMaker application is a Spring application.  Going forward, we will ensure that WaveMaker applications keep up-to-date with Spring best practices and innovations.

Like Spring, WaveMaker is open source and has a growing community. Over the last 12 months it’s seen a dramatic upswing in adoption, with 135K downloads per month. Let me be the first to welcome the WaveMaker community into the SpringSource family and to encourage the SpringSource community to take a look at how to get started with WaveMaker.

Using vCenter to Centralize User Authentication

A common issue I have seen lately is with smaller customers adopting a larger virtual environment is the use of individual host admins/users. When you only have a few starter ESX/ESXi hosts it can be easy to forgot to plan out a large deployment scenario as your environment starts to grow.

It really only takes a few moments to update an admin on a server or two. But what do you do when you have to manage 10 hosts? You would have to manually login and change all of these machines including adding users, changing your password, or making system changes. This can add a lot of time to simple tasks.

A good example of this: Lets say you currently have 2 hosts in their environment with 3 admins. Then add 3 more hosts and 2 more admins, now all of sudden you are managing 5 separate hosts and 5 admins. Imagine adding another 5 hosts?!

Fortunately managing individual login on separate ESX and ESXi hosts can be managed centrally with VMware vCenter Server.  This obviously greatly reduces the amount of time needed to manage multiple host and administrators on separate hosts.

Since vCenter Server is a Windows-based application it plays very well with Active directory and you can take the same approach of managing your user groups.  Once it is set-up, the authorized user can then login using the vSphere Client to either the vCenter Server that would connect to the ESX/ESXi host.

A thing to note about this set-up.

Once you have this process set-up, your organization should stick with it and be consistent. This is because the Wndows-based vCenter server doesn’t reconcile the user accounts with the local ESX/ESXi host’s database (they are completely separate).  This means if you create an account on a local ESX/ESXi host and then the admin tries to login with that through the vCenter Server it won’t recognize the user credentials the same is true if you made an account on the vCenter and you try and manage it through vCenter.

Hopefully this will save you some time!

vSphere installation Best Practice

What Can You Officially Virtualize With Windows Hyper-V?

I will be the first to admit. I don’t write enough about Microsoft Hyper-V. This is partly due to popularity of VMware and Citrix, but also because Hyper-V at times isn’t as flashy as the alternatives. So in the spirit of fairness, I thought I would spend sometime evaluating Microsoft offerings.

One place I wanted to start with was the supported Microsoft server software that can be virtualized using Hyper-V. Since the majority of the environments I work with are Microsoft centric it is a good start. Hopefully this quick list will help when deploying that new Microsoft application. Below is the list:

  • Microsoft Application Virtualization 4.5 or later. (Management Server, Publishing Server, Sequencer, Terminal Services Client, and Desktop Client).
  • BizTalk Server- 2004, 2006, 2006 R2, and 2009.
  • Microsoft Commerce Server– 2007 SP 2 or later.
  • Dynamics AX-2009 or later.
  • Dynamics GP -10 or later.
  • Dynamics NAV– 2009 or later.
  • Exchange Server 2007 SP1 or later.
  • Forefront Client Security.
  • Forefront Identity Manage– 2010 or later.
  • Microsoft Intelligent Application Gateway (IAG) – 2007 SP 2 or later.
  • Forefront Security for Exchange (FSE) – SP1 or later.
  • Forefront Security for SharePoint (FSP) SP2 or later.
  • Microsoft Host Integration Server-2006 or later.
  • Microsoft Internet Security and Acceleration (ISA) Server.
  • Groove Server– 2007 SP1 or later
  • PerformancePoint Server– 2007 SP2 or later.
  • Office Project Server– 2007 SP1 or later.
  • SharePoint Server/SharePoint Services- 2007 SP1 or later/3.0 SP1 or later.
  • Operations Manager (MOM) 2005.
  • Search Server- 2008 or later.
  • Essential Business Server 2008– 2008 or later.
  • Windows Small Business Server 2008- 2008 or later.
  • Microsoft SQL Server 2005 and SQL Server 2008
  • Configuration Manager-System Center Configuration Manager 2007 Service Pack 1 (both server and agents) or later.
  • Data Protection Manager- Supported with limitations.
  • Microsoft System Center Essentials-2007 Service Pack 1 and later.
  • Operations Manager– 2007 (both server and agents) or later.
  • Microsoft System Center Virtual Machine Manager
  • Microsoft System Center Service Manager- 2010 or later.
  • Server (SMS)– Systems Management Server 2003 Service Pack 3 (agents only) is supported.
  • Microsoft Visual Studio Team System– 2008 or later.
  • Microsoft Windows HPC Server 2008– 2008 or later.
  • Windows Server 2003 Web Edition– Windows Server 2003 Web Edition with Service Pack 2 or later.
  • Microsoft Windows Server Update Services (WSUS)– Update Services 3.1 or later.
  • Windows Web Server 2008
  • Identity Lifecycle Manager 2007- 2007 Feature Pack 1 (FP1) (with the latest updates) and later versions are supported.
  • Microsoft Office Web Apps

More information can be found here.

Storage I/O Control

A new feature that was released with 4.1 is the VMware Storage I/O Control (SIOC). This feature allows for prioritizing access to your storage resources based on a predetermined policy. When set-up this will prevent cases of a single non critical VM taking hostage of your host for example. As well, it will allow for more virtualized apps because you can cram a whole bunch of low I/O VM’s without the fear of bottle necks. An added bonus is it will give the administrator some better predictability and you can dynamically allocate recourses as your needs change, plus since it is automatic you won’t need to manually manage for performance.

How it works and some limitations:

I/O control programmed on the datastore and is based on congestion policies. So once it detects latency it will then throttle back or forward for that datastore based on what you have told it to do.

A thing to note is that is designed to be a gradual enforcement and will not immediately scale down a machine. It is more of a guideline to help with the performance SLA’s for your VM’s.  It is only supported on Fibre Channel and iSCSI and if you have datastores with multiple extents or NFS datastores it won’t be supported.

To Enable Storage I/O Control:

  1. Select a datastore in the vSphere Client inventory and click the Configuration tab.
  2. Click Properties.
  3. Under Storage I/O Control, select Enabled.
  4. Click Close.

Some Details:

By default, all virtual machines have the same number of shares and IOPs limit.

  • By default, IOPs are unlimited.
  • Even if you enable this feature, if you don’t change the defaults, I/O won’t prioritize any VM’s, not very useful.
  • Lastly, to make sure everything is working well, it would be recommended to turn on logging:

To enable logging:

  1. Click Host Advanced Settings.
  2. In the Misc section, select the Misc.SIOControlLogLevel parameter. Set the value to 7 for complete logging. For example:Min value: 0 (no logging)
    Max value: 7
  3. Perform the action that is failing or repeat the procedure to replicate the observed issue.

Check out the video below: