One of the most powerful features of the cloud is that developers and operations engineers can treat infrastructure as code. Instead of calling a provider requesting to bring a new server online, or asking for it to be removed, people can now write their application to toolkits that can control their entire configuration. Using a Multi-Cloud Toolkit makes this even easier – it allows you to control infrastructure on a variety of clouds in your native programming language, while reducing the amount of time you have to spend learning how to communicate with different cloud APIs.
I talked about cloud portability with Multi-Cloud Toolkits this week at OSCON, here are some of the key points I discussed.
There are several advantages to having your application work on a number of different clouds. First, you can make your application highly available. Let’s face it: providers have outages. Uptime is never 100 percent; it is always a series of 9s. Having the ability to deploy your app to multiple clouds can help make it highly available if one of those providers were to temporarily go down.
Another advantage is that you could more easily find a new home if your provider were to change its Service Level Agreements (SLAs) around performance or stance on privacy. Rather than being locked in to a provider whose new SLAs don’t align with your needs, integrating a Multi-Cloud Toolkit could give you the ability to move without having to rewrite your application.
There is always that bill at the end of the month with cloud hosting. When you initially deploy your app, the pricing model of one provider might make sense. But what happens when it explodes? At that point either you or the CFO will look at the bill and consider what that price might look like at other providers. Knowing that you could move can help open the discussion about how to best spend your money.
Finally, you could find yourself in a situation where your cloud provider didn’t give you the level of support you had initially expected. You discovered that you want more of a hosting partner than just a raw compute provider. Integrating a Multi-Cloud Toolkit can enable you to switch to a provider whose support model is more beneficial to your business.
There are three layers that you should be aware of as you begin writing portable code.
The top layer is called Portable; using these interfaces will give you the highest number of cloud providers that your code can communicate with. At this layer you have the commands that are common across all cloud providers. The Portable layer is the key feature of Multi-Cloud toolkits that allows you to control your infrastructure across supported providers.
Moving down a layer, you get into the OpenStack family of providers. When you integrate such toolkits into your code, you are able to communicate not only with a family of providers who have built their clouds on top of OpenStack (e.g. Rackspace, HP and DreamHost), you are also able to communicate with your own private cloud deployment of OpenStack. You gain the ability to have more options to control your infrastructure while maintaining the ability to port over your application to a number of different OpenStack-powered clouds.
The most specific layer that you can interact with is the Provider layer. Interacting with the toolkit at this level will enable you to take advantage of the specific features of a single provider. While you can’t port this functionality over to a different provider, it may be worthwhile to integrate certain parts of your application at the Provider level to take advantage of a very specific feature of the hosting company that enables your app to perform at higher level.
As you create your application, it is important to understand which layer of the Multi-Cloud Toolkit you want to integrate with. In fact, you could integrate with different pieces of the Provider, OpenStack and Portable layers within the toolkit. This is part of the conversation about technical debt where the decisions that you make today will impact your agility tomorrow. I would caution against simply hacking away at your application without taking a moment to consider the future state and needs of your business.
There is a good chance that the toolkit you are looking for is already written in your native programming language. You can check out the listing of all the toolkits at developer.rackspace.com. Rather than writing these toolkits from scratch, Rackspace has adopted many of the open source toolkits that are already in use by the community and that interface with our cloud. On the site, we provide links to download the toolkits, documentation and example code that can help you integrate it with your app. I invite you to check them out and even become part of a community that is helping make these Multi-Cloud Toolkits.