With its offer of near infinite resources whenever we need them, the cloud’s original promise was that of flexibility. We could spend less time installing, configuring and managing servers, and more time coding. Instead, we got increasing vendor lock-in, and a handful of cloud players so large that if a data center experiences problems, significant sections of the internet go offline, or thousands of applications and their data might be vulnerable to exploitation.
Despite these issues, using cloud hosting for our applications can still save us tremendous amounts of time and money.
The ‘hybrid cloud’ is what the cloud should have been in the first place, a flexible suite of services that do what we ask, where we want them, when we ask, and charge us accordingly.
Hybrid Cloud: what it is and why it matters
There are two different types of cloud services. The public cloud, which is cheap and flexible, but depending on the options you pay for, you often share resources with other users that can result in less power and control over your application and introduce security concerns. There is also the ‘private’ cloud which generally provides you with more dedicated, separated and local machines.
Hybrid clouds are a mixture of different public and private clouds (and providers) to build redundancy and flexibility into a cloud infrastructure that can change as required for technical, operational or financial reasons.
Most cloud providers are supportive of hybrid clouds, especially those that connect their services to legacy and on-premises systems. Hybrid cloud removes barriers and opens up cloud computing to new opportunities for providers and customers alike.
Hybrid Cloud Advantages and Disadvantages
Strengthens Security and Privacy
Maintaining security patches and best practices is a time-consuming task, and one that cloud providers can handle for you with pre-configured machine images that they regularly update. And by reducing your dependence on one supplier you can spread your risk if one provider fails to patch or is vulnerable for other reasons.
There may be specific privacy-related reasons you need to keep data or applications in particular regions. A hybrid cloud architecture can help facilitate this, and help you change the structure when needed.
For example, regulations, government funding, or certain types of personal data (eg: banking, or health related data), require you to always host your data in a particular region.
There may be instances of services you want to keep geographically closer to customers for performance reasons. Even if you need to keep certain applications or data on-premises, you can still integrate those instances into a hybrid cloud architecture and access it as part of a wider application.
An application is only as secure as its weakest point, and adding more complexity introduces more potential vulnerabilities. Make sure that you encrypt all communication between services. This is generally a default setting with modern tools and frameworks, but always double check.
Balance Costs and Performance
Some cloud providers provide better value for specific services than others, and you may want to take advantage of the best deals with specific providers balancing special offers or discount programs.
Some cloud providers calculate costs based on a complex and opaque set of interconnected fee structures that may save you money, but it’s hard to be sure. Other providers charge you with a linear pricing, which makes it easier to understand what your monthly bills are.
While increasingly uncommon as most software vendors rush to the cloud, you may have legacy or custom applications that only run on particular machines or operating systems in your private network. This may be the case with commercial databases or market-specific software that is not yet compatible with virtualization or public cloud.
In that context, keeping the core on a private infrastructure and having frontend nodes on one or more hybrid cloud provides a convenient and elastic way to modernize a legacy application.
A hybrid cloud helps you bring these applications into a wider infrastructure and make them more useful to your business.
Software and Hardware Incompatibilities
While maintaining framework and dependency versions between development and deployment platforms is now easier thanks to tools that help you define your software and hardware setups (e.g. NPM, Chef, Terraform) there may be subtler inconsistencies you should watch for.
Different cloud providers maintain slightly different point or patch releases of major programming languages or operating systems. If you use compiled languages, there may be differences between CPU architectures or configurations that cause unexpected differences.
In short, do your research and test thoroughly before a major roll-out to find as many unexpected issues as possible. Continuous integration, and being able to automatically launch machines and applications for a very short period of time on public clouds during tests is one way to achieve a much higher level of quality in your roll-outs.
Network Complexity and Performance
Again, although cloud services, CDNs, and transmission mechanisms are continually improving. The more network connections you introduce, the more opportunities for lag, latency and ‘moving parts’ that you need to debug in case of a problem.
For large throughput requirements or workloads that require dedicated end-to-end security, most public clouds have the option to establish private interconnects at selected POPs - points of presence - and connect private and public cloud at lan speeds. Exoscale’s private cloud for instance offers a 10Gbps private connect for hybrid contexts.
How to implement a Hybrid Cloud
Now to everyone’s favorite discussion: what tools are available to help you create the setup you’re looking for? We’ve tried to separate these as much as possible into different levels of the hybrid cloud stack, but some of the tools crossover with function and purpose.
In theory, you can use whatever setup you want at the application level of hybrid cloud infrastructure, but in practice, there are patterns that are more common and fit the use case better. For example, there is the ‘microservices’ pattern, where an application is split into separate services or components. Or the ‘infrastructure as code’ pattern where services and the machines that run them are all defined in reproducible configuration files. Both these patterns make it easier to scale across different cloud providers or provide redundancy when you switch between providers.
Orchestration and Application Management
Managing (or orchestrating) your application components is another large conversation topic in itself, but there are a handful of popular and common choices.
For simple setups, Docker machine and swarm could be enough for your hybrid cloud infrastructure.
The popular Kubernetes project has hybrid cloud functionality (or as they call it ‘cluster federation’) in the form of kubefed. It’s a little complex to setup, but read this Google blog post for some ideas.
Somewhat overshadowed by Kubernetes, but still a powerful option these days, is Apache Mesos. It uses interesting paradigms to treat your distributed computing resources as one collective whole.
Hybrid Cloud Networking
The next layer on top of your applications is networking. You need a way for your services to know about the other services in your application, and communicate with them.
We published an entire guide on hybrid cloud networking, that covered the standards used, and the best options for adding a networking layer and service discovery to your application.
All-in-one Hybrid Cloud
So far we’ve covered the tools you need to assemble yourself to create a hybrid cloud architecture, but there are also all-in-one options that give you all the functionality you need in one place.
The commercial options like Accelerite Rovius offer to sit on top of your cloud providers and handle a lot of the work for you for a fee, and there are open source options that you configure and manage yourself. SixSQ’s Nuvla is such an open source orchestration tool that can deploy and manage recipes across heterogeneous clouds.
Make Data-Driven Decisions with Monitoring and Analysis Tools
Tools for monitoring hybrid clouds are also plentiful, and what you choose mostly depends on your setup and what you want to monitor. Common services such as DataDog or New Relic, and tools like Prometheus or the Elastic stack, should suit your needs and are widely available.
There are also a handful of companies such as ParkMyCloud, Replex, and Flexera that focus entirely on the money-saving aspect, helping you save as much money as possible by shifting applications components around as efficiently as possible.
Hybrid Cloud Providers
As mentioned earlier, many modern cloud providers are good fits for a hybrid cloud, including the large market players. We consider Exoscale to be hybrid cloud friendly, with a mixture of public cloud and private cloud offerings. We have convenient integration points and templates (including DNS resolution, Kubernetes support, Docker Machine drivers and API access) to help developers bring instances into a hybrid cloud with minimal effort. Our servers are exclusively located in Europe, so if you are looking after an EU compliant solution, then we’d love to hear from you.
Future-proof: Flexibility and Scalability
Despite the extra planning and considerations needed, a hybrid cloud gives applications a perfect combination of cloud convenience and long-term security, stability, and operational advantages.