Cut Costs and Enhance Scalability with Multi-Cloud Infrastructure
When public cloud services such as AWS first started, they were seen as an all or nothing proposition. You were either in the cloud, or you weren’t. This changed very quickly as companies figured out how to connect the cloud with their data centers and utilize the cloud in short bursts in order to save money.
As data centers and COLO providers have lost market share however, running 100% in the cloud is an increasingly popular option. Setting up and maintaining physical infrastructure is simply too costly and time consuming for most startups - and many established companies - to consider up front.
As cloud providers have evolved, they have each developed specialties. Some providers are very good at provisioning cheap Virtual Private Servers or basic machines. Others are very good at scalability and integrations with numerous tools and services.
Exploiting Cloud Provider Quirks
In the last few years clouds have begun to standardize certain features and it has become much easier to move from one cloud to another. This opens up a unique opportunity for companies to arbitrage differences in provider offerings and save on cloud service costs.
Instead of being locked into a single cloud, it’s now entirely possible to run your infrastructure on multiple providers, using the cheapest features of each. Even companies with complex compliance and security requirements can do this thanks to the availability of encrypted tunnels between providers.
How it works
When discussing features it’s hard to argue against AWS and their suite of services designed to meet every possible cloud use case. Those features come at a price however, as the cost for a single “vanilla” VPS (Virtual Private Server) server on AWS is significantly higher than “simple” cloud providers like DigitalOcean.
Historically many companies have simply paid the higher price for AWS servers in order to use their extensive suite of integrated services. With the increased standardization of cloud providers and cloud management tools it has become much easier to manage multiple cloud environments and connect them in ways that would have been very difficult just a few years ago.
The easiest way to standardize across cloud environments is to use a containerization system like Docker or a configuration management system like Chef or Puppet. These systems allow you to create a plain VPS on any cloud provider and then easily transform the server to a known state or deploy a container with known state to the new provider.
Developing a Cloud Strategy
In order to obtain the benefits of a multi-cloud environment you will need to evaluate the needs of your services and then categorize them based on requirements. Some services might need extensive load balancing and dynamic failover for instance, while others may be internal processes with minimal uptime requirements.
In this type of scenario you might consider running several cheap VPS’s in Digital Ocean for your internal infrastructure and support your critical services on AWS in order to utilize their load balancing (Elastic Load Balancer) infrastructure. In order to take full advantage of this type of scenario however, you must be prepared to fully automate your infrastructure provisioning.
Without automated infrastructure provisioning (Configuration management or containerization) you risk fragmenting your environment and making it very difficult to move or restructure your environment in response to changes in provider pricing or service levels.
You’ll want to make sure that any data transferred between cloud environments is secure from potential interception by third parties. Fortunately it is relatively easy to setup encrypted links between servers or cloud networks using free and open source tools like OpenVPN.
It’s also important to properly implement and enforce access controls across servers. This is best accomplished by restricting access to each server using a firewall whitelist and a known source IP Address such as a static office IP or even another VPN server located in the cloud.
You’ll want to have at least 2 or 3 source IP addresses for this type of scheme so you don’t accidentally get locked out of your own servers if an IP changes or something fails. Obviously you may also need to open the firewall for other types of traffic such as HTTP/HTTPS or Database Ports depending on the services running on the server.
Using multiple clouds can cut your hosting costs, enhance scalability and even increase security if setup correctly. These tips will help you avoid many common pitfalls encountered in multi-cloud scenarios and streamline setup of your multi-cloud environment.