Are You Concerned with ‘Vendor Lock In' in the Cloud?

There seems to be two major concerns I hear from people when I talk to them about the cloud: Security and Vendor Lock In.  I can see real validity in the security discussion with some of the issues being valid and others just being chalked up to FUD (Fear, Uncertainty and Doubt), but I just can’t understand the vendor lock in concern at all. 

The conversation for Vendor lock in goes generally something like this:

THEM: “Aren’t you concerned about Vendor Lock In”?

ME: “Can you elaborate on what that?”

THEM: “Well, if you decide to go with Vendor A and you get everything running on their system and then they decide to just boost the costs sky high you can’t get out.  You’ve coded your system to work on their platform and you’ll be stuck.  Or maybe, they decide to change their systems to not offer some feature that you were using.  Or maybe they just decide to get out of the cloud business all together and leave you high and dry.”

ME: “Oh, well, when you word it like that … No, I’m not concerned about it.”

That response generally gets a quizzical look and I then go on to explain why this doesn’t bother me that much. 

First off, the concept of vendor lock in resides around the idea that you’ve coded your system to the specific platform you’re running on and you’re dependent on the services that vendor provides.  If you code is truly dependent up on the vendor’s platform  you might have made a mistake when you designed your system.  If you are really worried about this then you should be using good separation of concerns within your solution.  Anywhere there are touch points in your solution to the vendor platform you should be including an abstraction layer in your design.  For example, if you are going to store files in BLOB storage on Azure then you could use an adapter or façade pattern to abstract the BLOB storage access.  That way it doesn’t matter if you need to move to use Amazon S3 or just normal System.IO later, you just code and push in the new adapter or provider that deals with the specifics of the new platform.  This is something you should be thinking about when you are using any 3rd party services or components in your code anyway (at least be thinking about it!).  See, coding to interfaces isn’t just for unit testing.

Secondly, is this concern that much different than when you decided to use the coding tools you have?  What about the database option you selected?  If you had decided to utilize Oracle as your your database server and then found that Oracle decided to drop support of XYZ feature and that completely hosed you, what would you do?  You’d likely start a re-write of the database in another product.  The point here is that we make choices about the tools and systems we use all the time that could be considered very difficult to back out of.  Each of these types of choices could be considered “vendor lock in”.  The goal is to mitigate risks where you can and try to identify the best choice for the requirements and goals you have in front of you.  If a platform is a good fit for you now, are you really going to let the concern that it might dropped in the future keep you from moving forward (granted choosing VB6 now would not be a good idea, but you get the idea)?  We already deal with this all the time and which cloud platform to use is no different.  This question is not one of what will the vendor do for you to make it easy to back out, but what you plan for yourself if the need ever arises.

Thirdly, regarding the cost being raised.  It’s possible that the cost might go up, but really, with the big players realizing that they have to stay competitive the cost is going to stay pretty comparable between your options of cloud providers (as long as you are talking about similar services).

Finally, as far as the cloud provider just dropping their offerings completely; well, all I can say is look at the investments they are making on their offerings.  I can’t say much for the other vendors, but Microsoft is investing heavily in the cloud and the Azure Platform.  Over 3 Billion (with a “B”) dollars invested in the data centers and with 90% of their massive R&D budget going to cloud based initiatives I just don’t see this being a dead end for them.  If I didn’t think they were going anywhere with it, I wouldn’t be focusing so much of my energy into learning the platform.

So, in conclusion, I’m not concerned with Vendor Lock in for the cloud any more than I am with what database solution to use.  You make decisions based on what you know and what you can reasonably plan for.  From there, it’s all about executing on great ideas and making sure you implement good design choices.