This post is a big deal for me personally. It is the first public acknowledgment of a major change in my life. This blog post will be about me announcing this change; but it will also be about why I am doing it and what lessons I feel can be learned. I had a good boss for three years who had a funny saying I think fits here. “The only thing stopping you is fear and atmosphere.” Every time I pitched an idea to him that he was okay with, he would say those words. What they basically mean, is that the only things between you and your goal is your own fear and the air between you and getting started on it.
I feel those words really fit for this change. As of today I am announcing that I have taken a position with the VCE team(vArmy) at EMC as a Senior vSpecialist. It was a decision that was exciting, terrifying, and complex all at the same time. I was already a huge fan of both Chuck Hollis and Chad Sakac. After meeting my local team and getting a taste of the vision and drive to change the way datacenters are designed for the better; it was an easy decision to make. All that really had to be done was figure out how I could muster the courage to leave my home (current employer) where I have spent over 50% of my career.
For those that don’t know me, I have been on the customer-side of things for my entire short career of six years. To move to the provider-side will bring a great number of challenges and opportunities; which for me is the number one reason I have decided to make this change. I am a bit dramatic and sappy at my core. And so I will sum up the real reasons behind the decision through my eyes and hopefully encourage you in some way to continue or regain the passion for what you do.
1. Challenges Develop Passion
From the moment I got my first IT job I knew I what doing what I was meant to do. I enjoy it so much it is ridiculous. Whether I am working a major project or writing a small script, the minute I see it come to fruition I am as happy as a dog with two tails. For me overcoming challenges results in a strong Passion for technology and what it can do. And over the years I realized something; Passion is infectious. When you care about what you are doing either people around you will start to care also, or they will get the heck away from you.
For me, the secret to Passion in what you do, is never being satisfied with the just what you are doing. I have been surrounded by incredible people who have been more skilled that me in every facet. My reaction to this was simple, follow them around and figure out what makes them so awesome and learn how to do it yourself. Be positive, be a sponge, be part of the team. My Wife (who is awesome BTW) can tell stories about me starting a job, realizing that I didn’t know everything I needed to, and then spending 4-6 hours a night reading and studying till I was over-prepared. Those moments of realizing I am lacking start a fire in me to take things to the next level.
By taking this position I am intentionally moving myself from the top man on the totem pole to the lowest man on the rung. With great people like Chad Sakac, Scott Lowe, Stuart Miniman, John Avery, Ed Saipetch, Dave Graham, Chuck Hollis, Christopher Kusek and my incredible local team here in DFW; I am but a small speck in comparison. I will never reach my full potential until I knock myself down and surround myself with wiser and stronger people. For me, taking this position sets me up to really grow as a person and IT professional over the next phase of my career. Even better, this move will encourage my already strong Passion for virtualization and truly agile infrastructure.
2. The World is Changing (or at least the stuff it runs on)
I saw this the moment 4+ years ago when I was first introduced into enterprise datacenter virtualization. It was edgy and a little difficult to grasp but, there was one core thing I came away with - this is going to change everything. I went on to successfully do so many things with virtualization using VMware technologies and defined myself as a professional. The funny thing is that this is still just the beginning. Virtualization of computing resources utilizing a robust hypervisor is just the first step. With the new partnerships like vBlocks and move towards abstraction of layers in storage, networking, and security, information technology is soon to change forever. Not everyone sees or believes that yet but enterprise architecture will be molded by these changes, mark my words. At my core I see this future and more than anything else I want to be a part of helping make that happen. EMC has invested a enormous amount of money and vision and are redefining themselves as a company to be a part of this change. This position is the perfect opportunity to become a part of something great.
3. I Am The Warm Little Center
In my current position I make a huge impact. Across business or technology lines I play a major part in both decisions and accomplishments. My current employer has been incredible to me in so many ways. There have been tough times like: four different CIO’s in three years, losing close friends, and insane workloads. But, I feel nothing but love and gratitude to my current employer.
However, there is one problem I will not escape. At the end of the day I can’t make them one penny. I will never be a part of the profit center in a company that is a consumer lender. I readily admit jealously at seeing product owners or risk analysis folks who make direct contributions to the revenue and growth. While I am an important aspect of the company and make those warm little profit centers successful and on schedule; I am never going to be where I want to be.
This all changes for me at EMC. Not only will I be able to contribute to the revenue of such a great company; but they will have the tools, materials, and career advancement opportunities that I would never have access to otherwise. I get to become a part of a warm center and I would even venture that with this particular team, this is really the hot boiling center of things to come.
Fear & Atmosphere
Even with all these reasons this has been a very difficult choice. I feel at home at my current employer. I know so many amazing people that I have worked with there. My life both personally and professionally has been improved for the better by my experiences there. However, nothing lasts forever. To quote Ecclesiastes(3:1) “There is a time for everything, and a season for every activity under heaven”. Sometimes when you are in that wonderful, comfortable, happy place (atmosphere) you can be afraid to leave (fear).
I know this decision is the best one for my family and myself. So I will leave my comfortable atmosphere and overcome my fear of change and go forward with all the energy and effort I can muster. I want nothing less than to change the future of information technology and I believe there is no company in a better position than EMC.
Along with all these reasoning one thing is certain. I am a customer-focused person. I have lived life as the person trying to make the miraculous happen with little time or resources. Now I have the opportunity to partner with similar people and help make them successful. I now get the chance to change from the Warrior at the gate to the traveling Warrior Monk coming to turn the tide of battle.
So I will end this post with these questions for you:
What are you passionate about? What fears or atmospheres stand between you and that passion? Are you comfortable? Are you challenged? Inside you know you are capable of great things. Just search yourself and determine if you are heading towards them or waiting for them to head towards you.
Comments, questions, or critique are always welcome and really appreciated.
So eight days ago I decided I was going to give another try to write an application that uses the VMware vSphere Web SDK. I had attempted this at least a year ago and never finished anything because of *insert excuse here*.
I always have ideas for cool (at least in my mind) tools swirling in my head. Even though I am a data center quadruple threat kind of guy (Microsoft, VMware, Cisco, and EMC), I like to do scripting and development to sharpen my mind. I always thought I was going to be a developer in college and love to turn ideas into reality.
So last week I fired up Visual Studio 2008 and started spending some nights coding. Along the way I found out some interesting things, caused a great blog post, and had a blast learning more about vSphere. I have a tendency to roll my challenges together and so decided to make this slick as possible including:
Making it a Tray Icon (A must for this app)
Doing all forms in WPF which I have never worked with before (XAML crash course)
Making all background processes multithreaded and eliminating the need for timers
On top of all this I went and wrote all the operations, connections, and credential pieces into classes for re-usability. I am a bit of a perfectionist and probably went WAY overboard without much gain.
So without further self flagellation and glorification I present the: [download id="1"]
This little bad boy right here’s only purpose is to keep you informed of who is on your vCenter server. Let me walk you through the steps to try it out.
Download the x86 installer from here: [download id="1"] I do not endorse using this tool in production. Please test in a lab environment until you (if ever!) are comfortable using elsewhere.
Run the installer on the workstation of your choice. You must have .NET 3.5 installed. Also this workstation must have the ability to hit the vCenter Web SDK which is https://*your vCenter Server/sdk
After the application is installed, launch it from your new desktop shortcut or Program Files menu.
The application will prompt you for your vCenter fully qualified domain name (FQDN):
It will then prompt for you vCenter credentials:
If you entered everything correctly the tool will open up the main page:
And down in your notification tray a little pop-up will list current vCenter sessions:
Couple quick UI things to get out of the way:
To close the application, click the “X” in the main window.
Minimizing will hide the form. You can bring it back or hide it with a left-click on the notification tray icon.
If you right-click on the tray icon it will list the current users on the vCenter host.
The “Change Credentials” button will allow you to switch username and password. And the ‘Change vCenter Server” will let you change the FQDN you entered.
I bet at this point you are thinking: “Well Nick, that is cool and dandy but I can get that info from my vSphere client! Way to reinvent the wheel…” Well… now for the best part. This is the real reason I wrote this little app. It all started with my senior engineer, Justin. He had a nasty habit of yelling out “What are you doing?” every time someone did something on a vCenter server. That got me thinking; “It would be cool if something popped up telling Justin someone logged in. And it would be even cooler if you didn’t have to have the vSphere Client running to do it.” So with the vSphere Session Manager, the instant someone logs into your vSphere vCenter, you see this:
Not super fancy but if you want to know when someone is playing in your pool (like Justin) this will let you know. Here are couple features I was going to add but will (maybe) later:
Storing of credentials (encrypted) – not too difficult, a little RSA key generation, mix in some environment specific salt, and dehydrate a class to XML.
Allow multiple vCenter hosts – You can open multiple monitors to watch each vCenter for now
So that is a few hours of my life dedicated to seeing how easy it is to utilize the VMware vSphere Web SDK. And from a datacenter guy I can definitely say that the documentation, community (thanks @sjin2008), and SDK made this a pretty easy task. I highly recommend everyone take your cool tool ideas and try something out too.
Do me a favor and leave comments with feedback/questions. Thanks!
Well my blog post yesterday drew way more attention that I thought it would. Part of the attention was a comment from the esteemed Ben Armstrong (twitter & blog).
He provided wonderful feedback and I have decided to highlight it here with my response. Not sure if I am breaking a blogosphere rule but, I shall claim etiquette ignorance and proceed.
Here are Ben’s comments:
Ben Armstrong January 22nd, 2010 at 12:27 am
Hi Nick,
Just thought I would drop in to clarify some of the issues you raise around the issue of operating system support.
What we often talk about on the Hyper-V team is “Support versus support”. Hyper-V can run Windows NT 4.0 – and I would love it if we said that we support it, but we cannot say that – because Microsoft as a whole does not support Windows NT 4.0. And it really changes the story when you are the OS maker.
For example – let’s imagine that we did state that we supported Windows NT 4.0 on Hyper-V, and we compared the support experience between Microsoft and VMware:
VMware:
Customer encounters a problem with Windows NT 4.0 on ESX. They contact VMware – who after investigating the issue declares that “sorry – this is a bug in Windows NT 4.0, you should contact Microsoft”. When the customer contacts Microsoft they are told that Windows NT 4.0 is not supported. The customer still has a problem, but they do not feel lied to.
Microsoft:
Customer encounters a problem with Windows NT 4.0 on Hyper-V. They contact Microsoft – who after investigating the issue declares that “sorry – this is a bug in Windows NT 4.0, and even though we said we supported Windows NT 4.0 on Hyper-V we did mean that we supported Windows NT 4.0″.
Can you see why we (Microsoft) do not feel that we can make such statements? Meanwhile VMware currently states that they support every Microsoft OS from MS-DOS 6.22 onwards.
In regards to Linux support – when we state that we support a Linux distribution on Hyper-V, it means that we have signed formal support agreements with the owner of that Linux distribution. For example – if you have an issue running SuSE on Hyper-V, you can contact Microsoft product support. They will then work with Novel support engineers directly to solve the issue – without requiring you to bounce back and forth between the two companies.
As an aside – the problem with this approach is that it makes it hard to support versions of Linux like CentOS, where there is not a corporate entity who can sign a support agreement. That was one of the motivating points releasing our integration components under GPL – so that community supported distributions could provide the same level of support for Hyper-V as they provide for other platforms.
Cheers, Ben
First off, thanks for the comments Ben. I appreciate your providing clarity and participating in a discussion
I completely understand the predicament around legacy Windows versions. Because of the dual ownership, Microsoft does have to maintain standards around support.
But, I disagree that at a higher-level this is a problem. I see this as the difference between strategic and tactical viewpoints with hypervisors (great post on this from Steve Kaplan here). Here is an example:
Let’s say we have a customer that has 20 legacy servers running Windows NT 4.0. They don’t have the budget to purchase replacement software, the original application creator is gone (and they didn’t have the source in escrow), and it is completely incompatible with new OS server versions.
With Hyper-V not only will they not be able to P2V (physical to virtual migration) these servers. They also would get zero support from Microsoft for Hyper-V hosts that encounter issues with these VM’s. There is a built-in out for the support person on the other end of the phone. This translates into an implementation impossibility and extreme operational risk.
With VMware vSphere, not only is the P2V actually supported (allowing abstraction of the OS) but the VM’s themselves are supported on the hypervisor. That means if there is a specific issue with hypervisor configuration VMware will support, fix, and help with making this successful. I know people that have not only successfully virtualized legacy operating systems but, have also done it with extremely proprietary configurations (@tscalzott).
The hypervisor is a layer and a toolkit meaning the intent is to provide abstraction as well as options for business needs. Hyper-V is missing these options which, because of the tactical approach MS has, make it more limited in application. My points is the missing options and not an effort to downplay the features it does possess.
Microsoft’s (and your focus) on integrated support is because of the tactical approach to the hypervisor. Hyper-V it is built on the same platform as the server product and blends layers rather than abstracts. Support can be integrated but, in an abstraction model that is done successfully (empirically proven with VI3 & vSphere) this is not a critical need. When layers are abstracted you break the dependencies that exist in blended/tactical models. Integrated support is a core marketable value in tightly coupled dependency situations like hypervisor to storage, networking, and server components. In fact, that is one of the primary reasons VMware tightly maintains and accelerates their hardware compatibility list (HCL). Where abstraction does not exist this is essential and with vSphere is assumed by the ESX host. With Hyper-V the HCL is much broader because it is based on the underlying server operating system. But that is because Microsoft has abstracted hardware using the operating system (Windows Server). Problem is, that means all you have done is create another dependency upon a relocated layer. In fact if you think about it, the operating system with Hyper-V is now a layer above and below the hypervsior. This is a completely different approach to virtualization.
I am not saying Hyper-V has taken the wrong approach, I am just trying to clarify the real value of each product and the completely different approach. Microsoft has invested interest in businesses moving operating systems to newer Server version from a revenue perspective. Their motivation is inherit in their approach and marketing as evidenced by both the blog & your comments. Why would Microsoft invest major effort in reducing their ability to consume operation system market share?
On the other hand VMware’s interest in providing a extremely stable hypervisor with a robust feature-set that will work for as many possible deployment models as possible. They are successful despite the operating system choices of their customers. Being a customer I can testify that VMware support is extremely helpful in supporting guest OS’s on their platforms. While they won’t make changes application configurations (not stated at least), they do posses a massive knowledge base of how to successfully virtualize their long list of possible options.
However, in forward looking design scenarios Hyper-V does stand differently against newer Windows Server versions. With an apples to apples design using Windows Server 2008 and beyond, the battle is more over the cost, operational capability, and long-term value than support or compatibility choices. Hyper-V does not have options that compete against VMware in heterogeneous operating system space and once you cross that line and make statements against operating system approaches, you have broadened the argument beyond an apples to apples comparison.
I really do appreciate the feedback and feel free to hit me back.
First off stop reading this and go read Eric Gray’s post on the new Microsoft Virtualization Team post. He does a great job of pointing out the hypocrisy of marketing speak from the MS Virtual Team.
I am writing this blog post to address some specific annoyances in reasoning. While I have made a career in being a Microsoft guy (along with VMware, Cisco, EMC, and Nissan sportscars) I have some serious problems with the marketing pitch around Hyper-V.
VMWare claims to support 4x more OSes that Hyper-V, but what does that really mean? When Microsoft lists an OS as supported, they COMPLETELY support the actual OS installation in the VM and you can call Microsoft support on that OS. Microsoft has support agreements with Red Hat and Novell specifically for this purpose.
So let’s be clear. What does Microsoft support in this case? Do they have support staff on hand that will work with the customer on Red Hat or Novell OS configuration? Would you trust Microsoft to touch your device information files on your Linux host? And to be quite honest, since Red Hat and Novell fully supports their enterprise products within the VMware environment. What is the real difference?
So let’s sum this up.
On vSphere if I have a problem I can:
Call VMware for hypervisor specific issues (experts on this layer)
Call Red Hat or Novell to get full support for OS specific issues (experts on this layer)
On Hyper-V if I have a problem I can:
Call Microsoft for hypervisor specific issues (experts on this layer)
Call Microsoft for OS issues (not-experts) and likely be transferred to step 3
Call Red Hat or Novell to get full support for OS specific issues (experts on this layer)
So the real benefit Chris Steffen points out is an extra possible step. In the end my support coverage is the same at worst. Although I would be very curious about the actual level of knowledge between Linux support/Hyper-V and Linux support/vSphere. But, I can’t prove that point yet. And outside of these two specific operating systems flavors vSphere is light-years ahead. According to the current checklist, vSphere supports 48 flavors of OS compared to Hyper-V’s paltry 13.
Now to the next item:
Also, many of the OSes that VMWare claims to support are only supported by the Linux community – not taking a shot at the Linux community here, but most do not have a formal support organization. This leads me to question why they would be used in an enterprise environment. Also, those Linux distributions can be run under Hyper-V, using the Linux Integration Components Microsoft has available for download and the drivers which are in the 2.6.32 Linux kernel release. In this case, customers wouldn’t be able to call Microsoft for support for the OS, but would work with the Linux community, just as they would with VMware.
So this is pretty simple. The point here is: don’t use open source software. He states that VMware and Microsoft have the same community support so it is just a case of commercial vs. OSS and not a hypervisor argument. I would point out that community support is not only robust for vSphere but also VMware has guides, links, and walkthroughs on their own site (in a very easy to use setup) for how to implement multiple flavors. I wonder how easy it is with the Hyper-V side of things. Since OSS is not the argument here feel free to post OSS success stories in the comments.
Now for the fun part:
Reality: The Microsoft solution does not allow for over subscription of critical resources, but you shouldn’t do it anyway.
Oh no! I did not know this. Well I hope he is going to explain why at least.
The core of the VMWare argument is that you can somehow get “something for nothing” – that there is some kind of magic that comes with the over subscription of RAM using VMWare that is the silver bullet regarding memory management.
Wait a second, the argument is “something for nothing”? So efficiency is zero sum result? So I guess there goes thin provisioning, thin-client computing, or any other “thin” (read: effecient) technology. I better go shutdown my Windows Terminal Services farm too because I must be not really gaining anything.
So without the sarcasm, this is utter nonsense. He does not actually attack the technology or approach. He does not talk about direct risk or that fact that all efficiency models require management. Just like you have to manage the amount of users on a Terminal Services server you have to manage use on a vSphere cluster (notice I said cluster, not host. DRS much?). There is always inherent risk in higher utilization rates. That risk is managed by proper operational abilities. With vSphere these are clustering with DRS which allows automated movement of VM’s across hosts based on utilization and vCenter alarms which set low water marks against memory utilization. So with vSphere I have the option to take on operational responsibility for risk in exchange for higher efficiency (see $$$). The reason this is not zero-sum is obvious. I manage out the risk with a mature hypervisor (vSphere) gaining benefit I can never get with Hyper-V. With VDI and newer deployment models using virtualization, this can be a huge cost savings.
To leverage memory management in ESX to the fullest, one would have to fully burden the host beyond the physical memory. If you don’t, you really aren’t using memory overcommit.
Burden. Got to love that word. Puts an emotional spin on it. You can picture it right? The poor ESX host crawling across the data center will all the VM’s on it’s poor weary back.
Efficiency = lower total cost of ownership. The “burden” is your host doing more work for less money. I wonder if trucking companies talk about weight loads as “burdens” upon their poor MAC trucks.
Ok, one more:
Let’s go back to Basic Computer Architecture 101, and the example of the water pipe. There are limits to how much water you can push through a pipe at any given time, and the more taps that you add to the pipe, the longer it will take to fill up a bucket at each of the pipes. Hyper-V uses the best practice of moving a single VM as quickly as possible, using the entire bandwidth available to complete the transfer. Also, it is important to point out that without a modification of the host setting, VMWare would limit the migration to 4 VMs at a time (presumably for the same bandwidth considerations). The idea of moving 40 VMs all at the same time (as mentioned in the article) is not something that would be recommended, ever, regardless of platform.
Nice of him to explain throughput constraints for a kindergarten class. I would like to show a comparison of VMotion vs. Live Migration speeds (especially on my 10GE FCoE stuff) but instead I will keep it simple.
Why? Why can’t I do this with Hyper-V? Isn’t it because they don’t trust me? Or it is because they can’t make it work without sacrificing stability? vSphere lets you not only do more but, also lets you do less. In other words, the mechanism is stable enough that throughput is the limitation (the water pipe) and not the stability of the mechanism (Hyper-V Live migration). Microsoft’s limitation on this points out a possible stability flaw and not a risky endeavor. What is also fascinating is the focus on making it “quicker“. Why does it have to be so quick? Are they afraid the VM’s won’t get there on Hyper-V if it takes to long?
There is a lot more to point out but, instead I will let someone else have the fun. I am not an anti-Hyper-V guy. I am an anti-F.U.D. guy. I would much rather Microsoft focus on providing a cheap product for small shop markets. In my mind that is what they designed with their product in both cost and feature-set. Even though VMware has some nice offerings also – see here & here
Also, I claim originality rights to the term: “DRS much?”. Feel free to tweet it like crazy
Comments and criticisms are welcome and appreciated. .nick
Chuck mentions my favorite way to summarize what virtualization encompasses: “abstracts logical from physical”. What makes abstraction critical isthat it breaks historical dependencies that develop as technologies are built over time. I have said this phrase hundreds of times over the last four years of my career and in my mind it translates into an incredible paradigm shift in data center approach over the next ten years.
A good example of this is the push to service-oriented architecture design principles in the enterprise application space over the last decade. The whole gist was to enable business functionality to achieve independence and agility by breaking hard coded dependencies to platforms and systems. A loosely-integrated system can provide value to multiple business units by removing the overhead of inherited designs. Any ability to move quickly to market with business features brings competitive advantage. In simple terms, removing boundaries opens more opportunities.
Virtualization is the same approach with the end goal of the four food groups (CPU, memory, storage, networking) becoming commodities that can used as needed and where needed. The status quo has been large CapEx investments in infrastructure where efficiency was limited by the boundaries of the physical needs and the return on labor cost to optimize. Even with a large team invested in tuning and sizing, the organic growth of the business can waste resources quickly as usage patterns change and new infrastructure is purchased.
The virtualization of hardware resources, effectively coupled with the ability to treat hardware as single pools, removes that physical boundary. This allows single investment in infrastructure resources to be carved up for multiple needs. It also allows the refactoring and control of these resources without the large operational cost and risk that physical resources historically bring. This abstraction means that a single server is no more special to an application than another; which means I can move, change, add, remove, or make a host of operational changes without risk. The virtual machine is coupled with the service that needs it and therefore applies fewer boundaries.
With the release of VMware’s vSphere product, critical aspects have been added. This includes the extending of network control to the virtual machine with Cisco’s Nexus 1000v. Now, both management and security of this layer can follow standard process of governance and operational models.
And now with EMC’s new FAST and the deployment models around the V-Max unit, the approach to storage is following the same design principles. If my data workloads are no longer bound to physical boundaries then I can deploy, react, and manage with less risk and more efficiency. I can focus higher expense storage at specific business needs when they need them and maintain cost effective use with lower cost storage on workloads that are diminishing. This translates directly into higher efficiency and lower total cost. Better yet, with approaches like NPIV, virtual machines can be matched to security, quality of service, and metrics. These features extend management, service-levels, and security on the storage layer to the virtual machine as well. Storage abstraction is the last great milestone to the virtual machine becoming the foundation of a data center. EMC is making a huge investment in both technology and people to make this a reality.
Despite the “coolness” factor in abstraction, the one important benefit is simple. Virtualization of servers, storage, networking, and ultimately business functionality brings efficiency. With vSphere I can take a set of CapEx impacting infrastructure and achieve higher utilization, less operational management, and be faster to market with features. To the business, this translates into a competitive advantage that can be measured. Because this hardware can be incrementally grown (EMC V-Max, vSphere), I can horizontally scale with growth demands and bring agility to change as well. And with new models like the VCE vBlocks even the large and complex standup cost in time/effort can be drastically reduced.
In the end only the goal of making people and business more successful is important. The abstraction that virtualization brings opens possibilities where they have not existed before.
Many times I have seen situations where an application or process grows incrementally to a point where it is no longer able to meet it’s SLAs (whether official or imaginary). The cause of this can vary but is usually:
Overworked/Unbalanced teams - Too much effort dedicated to new feature-add and not enough to technical debt
Poorly planned systems – Designs for immediate need without taking into account needs for things like instantiation or scaling of decoupled components.
Poor maintenance/understanding – Lack of knowledge or effort to tune application/process to more effectively use resources. This can exist in both the application and infrastructure groups.
Usually the performance degradation is known early on but accepted because the business users are not making a big enough stink; or at least not big enough to reduce the drive for new features. In addition, lack of monitoring and baselining of application performance is a critical problem. It eliminates the ability to effectively plan for growth and manage team resources.
Eventually the impact reaches a point where someone significant (business executive) resets priorities to fix it (technical debt due date). Many options will be evaluated immediately, from trying to buy time by tuning components to finding misconfigurations. However if no easy answers exist, it usually comes down to two options.
Optimize the application/process (Fix the code)
Scale the application/process with faster hardware (Throw metal at it)
Both of these options impact the same core factors: time and money. Depending on what time of the year it is, what the next feature would be, and what staffing is available, the choice can go either way.
Optimization has benefits in that better running code has long-term cost effectiveness built-in. But, optimization can have a reduced rate of return when repeatedly used without a complete architectural rewrite. Coupled with this, optimization often consumes productivity from the same teams that were unable to spend cycles maintaining it the first place. Also, the cost of optimizing is can be much greater than the labor involved. It includes what a possible delay on new features does to the firms overall revenue and commitments.
Scaling benefits from not directly affecting the product teams and being more focused on configuration and infrastructure resources. Scaling is also usually easier to estimate and deliver being that both the current application design and hardware resources are usually known. Where scaling can lose ground is in risk and cost. Anytime a change is made, a risk is taken. Moving a application from a set of hardware resources whether server, SAN, network, can end up being more disasterous for the business than the performance issue itself. Failues in configuration, QA testing, implementation, and planning are a dime a dozen. Cost can also be a problem when dealing with a fixed budget. The next incremental step to scale might be a big pill to swallow given the wiggle room available. Along with hardware itself, cost can be found in long-term commitments to power, space, cooling, and staffing to maintain ever increasing data centers.
Another factor is what I call the optimization-bias. If scaling will cause a IT leader to both beg for more money and possibly incur the risk of an outage, she/he may decide to trust in the application team instead. It is better to risk schedule under the covers than business ops and budget above the table.
This is where Virtualization can change the balance of this decision by improving the agility, cost-effectiveness, and reduces the risk of migration for scaling significantly. I see Virtualization as both a layer and a toolkit. It directly changes the balance of choices in the following ways:
Reduced configuration, schedule impact, and risk in migration
With an application that resides on virtual machine(s) the migration to new servers, SAN, or networking can be performed without a single change to the configuration of the application itself. Technologies like VMware’s VMotion, Storage VMotion, and partnerships with major storage vendors such as EMC, NetApp, and 3PAR allow the application to truly be treated as an object. This eliminates the need to build platforms in parallel at anything above the hypervisor layer. This can be made even simpler with newer stateless platforms such as Unified Computing System (UCS) from Cisco which can reduce the hypervisor provisioning dramatically. In the end this can remove the need for QA resources and shorten implementation schedules. In some small cases migration can even occur while the application is under load.
Better efficiency and life-cycle management
Server consolidation has been a foundation of the VMware platform for a long time. When an application is primarily vertically scalable the efficiency of virtualization becomes a part of the life-cycle. An example is a database that must reside on a single server (not easily decoupled). In a physical migration, after the new server has inherited the application, the old server is placed into an equipment stack. Utilizing the old server for another existing application means starting all over again with another migration with the same risks. More often then not, this resource sits idle until it depreciates off the books or is needed in a lab.
In a virtual migration the new server would be added to an existing or new VMware cluster. When the application is moved to the new server the old server is still present and available for use. In fact with technologies like VMware DRS, this server would be immediately used for existing application loads. The available resource are equal for both physical and virtual models. However, the virtual model abstracts resources as a pool. This promotes efficiency in the long run and possibly significantly reduces hardware resource management and ultimately data center cost.
The advantages of virtualizing mean scaling as an option gains ground against optimization. Though every situation is different, the added sophistication and agility of virtualization provide any IT leader with possibilities they may not have had.
By far my favorite part of Virtualization is what it can do when coupled with a very well designed application platform. By designing application platforms with the intention of being decoupled and horizontally scalable, Virtualization can be used most effectively. Single components of the system can be quickly migrated to new hardware as needed, loads can be dynamically managed by VMware DRS, platforms can be quickly instantiated for new customers, and resources can be leveraged across physical locations with reduced cost. The major project of my career, of which I am working on right now, is this goal.
So on a whim I decided to take the VCP 4 test at VMworld in the Marriot. My new Senior guy, Justin, had studied and was booked. So I decided to follow him up to the table.
I asked the girls if I could go ahead and register to give it a shot. They said sure and a few minutes later I was in front of the exam.
Well, long story short, I passed it, and was the first one to have passed it at VMworld 2009. I definitely wasn’t the highest scoring of the bunch (Justin passed with quite a bit higher score).
But, I did pass without studying. I haven’t had time to really study for it since I am working on the CCNP (thanks again Train Signal!) and Microsoft EA exams.
So I kind of feel like the lucky guy who gets to the blog post and writes “First”. True I am first, but there were better men and women behind me.
There was some interesting swag:
A cool hat, a pair of led flashing glasses, and a cool little “Hello Certification” button.
Here is a video of the glasses in action:
*disclaimer: I am not the first VCP4. Just the first at VMworld. There are bunch of smart VCP4 beta testers who passed way before me*
As I am writing this I am sitting in the Dallas Love Field airport waiting for my first flight to VMworld. This marks several significant firsts for me. It is
my first time to California, first time to VMworld, and first time to see the Pacific ocean.
I am really looking forward to meeting some of people I have been following via Twitter and blogs this last year. I am also very excited about all of the information that will be at hand through booths, labs, and sessions.
I will be updating this blog with video and comments on what I find and what I think is interesting over the next few days. Stay tuned
To start off, let me preface this by saying two things:
1. This is funny because of the predicament and not the players. In no way am I implying that anyone is incompetent.
2. I have changed the names and story slightly to protect the innocent.
So I am having a normal day; the standard eight hours of meetings mixed well with eight more hours of managing the team and writing design/implementation plans, when into my cube walks Alex. Alex is a business analyst who is working on a new customer process.
This new process takes our existing platform and allows customers to avoid needing an email address or internet access to interact. Alex tells me that they had just purchased a new domain name and need to know the next steps for setting up an email domain and server to handle emails (using corporate email cluster is NOT an option).
Turns out the existing platform requires email as a primary key. Which means that even though the customer doesn’t need one, the database/process does. So the solution Alex brings me is to setup an email server and every time an account is created they will create an email for the customer on this new domain. Then they use the existing email notification components (of which there are many) without change. He asks me to setup an email server to receive these emails and immediately delete them upon arrival (since they are useless).
So I ask the most logical question: “Why do these emails need to go somewhere if you are just going to delete them?”. Why would we setup email infrastructure ($$$) and dependencies for something that has no value?
He answers: “Because the system mustn’t get any bounce backs or errors with delivery”
So I ask the new logical question: “Why even send these emails since no one gets them?”
The next reply: “Because we may actually populate their real email later and need to have the process send an email just in case”
Now I am really irked. The code is to complex to work around, the schema can’t be changed, and the process has to account for multiple possibilities. I ask my final question: “Why not only send an email if the domain isn’t the spoof domain?”
Alex looks at me and says: “Oh….. yeah that would work”, says thanks, and walks away.
And I am left wondering what just happened and why the infrastructure guy had to recommend a few lines of code to avoid a new email server. Funny but true.
4 visitors online now 4 guests, 0 members Max visitors today: 26 at 07:40 am MST This month: 93 at 02-05-2010 07:48 am MST This year: 93 at 02-05-2010 07:48 am MST All time: 93 at 02-05-2010 07:48 am MST