Continuous Delivery to Multiple Clouds made easy

continuous delivery

There is an increasing trend in which companies are using more than one cloud to deploy their infrastructure. Continuous Delivery without interruption and least effort is still needed. There is also a shift in how companies are defining application. There are several reasons for this but the end goal is to make the software deployment and continuous delivery easy to multiple clouds.

For this purpose several multi-24/7 cloud management software is coming out in the market, some open source and some commercial, that make continuous deployment to multiple clouds easy if not trivial. The common theme among all these software is you define your software deployment in a common model that the software provides. The software then translates that model into deployment in different clouds and other targets (Vagrant, Docker, etc.) that it hooks into. Another common theme is also how an “application” is defined. Typically the application definition has everything needed to build it from grounds up including the OS, DNS, Firewall rules, monitoring rules, etc. This avoids any ambiguity(a.k.a. “It worked on my laptop. It should work for you!”) and makes deployment on any infrastructure easy and absolute. Of course, many of them have other bells and whistles. Each software package is designed specifically for a certain area, that can then be adapted to fit certain systems. There is planning software (https://www.prosymmetry.com/features/what-if-analysis/) that can be used to help with certain management projects that need this type of assistance, and can be looked into as a potential base.

Why Hybrid Clouds ?

There are several reasons why companies are choosing the hybrid cloud model to begin with.

Local Testing

Developers want to test their changes locally. Sometimes deploying the change to the production cloud can be cumbersome, buggy, time-consuming, costly or just plain not desirable. In situations like these, developers want a solution that is local but will still “emulate” the production cloud. Container solutions like Docker are perfect for such scenario. With this in mind, it is likely that other software tests such as C/C++ testing might need to take place. You can learn more about the importance of C/C++ testing here: https://www.parasoft.com/products/ctest/. Moreover, local testing can also give quick turn around and instant feedback which aids in faster development.

Vendor Lock-In

There was a time when companies developed their applications to leverage services provided by a particular cloud provided. The downside of this was now the company was locked in to that vendor and could not move their infrastructure to another cloud provider without major architectural changes to their application. This also put companies at the mercy of pricing levels dictated by the cloud vendors. With new abstraction software available, companies are now defining their software in terms of generic models which allow them to deploy their software to more than one cloud vendor in a couple of clicks. This also allows them to avoid vendor lock-in and allows them so shop around for a better deal if available. Companies can make their applications more portable and switch cloud vendors on short notice and with minimal changes to their application.

Hot/Hot or Hot/Cold Backups

As an extension of avoiding vendor lock-in these software also allow companies to deploy several copies of their software in parallel in Hot/Hot or Hot/Cold fashion for redundancy across several different cloud providers. Once done, switching between these becomes trivial.

Scaling

Multi-cloud management software makes scaling, specifically auto-scaling of software easy and in many cases built-in into the deployed software itself. To be clear many cloud vendors give scaling capabilities out of the box, however the cloud managed software can give scaling that goes beyond one particular cloud vendor and span multiple vendors and zones depending on how the software is defined and deployed. Also many cloud vendors will charge extra for scaling feature, however depending on which cloud management software you use you can get this feature for free or on the cheap.

Monitoring

A multi-cloud management software will also monitor your app for any disruptions and change in state and raise right alerts. Again most cloud providers have this functionality but based on the how critical it is, extra charges may apply. It’s nice to have all of this functionality in a single place.

Auto-Healing

If your software or certain components of it croaks, or even a particular zone goes dead, many of these software have auto-healing capabilities. Depending on the rules defined, the software will try to restore functionality with the particular cloud provider or else failing that deploy your whole infrastructure automagically with another cloud provider saving you a lot of headache.

So what Multi-Cloud Management software are out there ?

Now this is by no means a comprehensive list and I may have missed some major players. If I did let me know in the comments below. These are just some of the players that I have come across recently.

Walmart’s OneOps

WalmartLab’s recently open sourced their multi-cloud management software called OneOps. Or as they call it it’s a Continuous Application Life-cycle Management of cloud based work load. OneOps allowed Walmart to go from monolithic twice monthly deployments to about 1000 deployments per day. Currently OneOps allows Walmart to give self-service control to developers over their application over its whole life cycle. Should you need it, you can visit the Salesforce webpage for more information on self-service systems. As of now, it plugs into OpenStack, Azure, RackSpace, AWS and CenturyLink (Coming Soon according to the website).

Netflix’s Spinnaker

Netflix has long been a pioneer in DevOps. It open sources it’s global continuous delivery platform called Spinnaker some time ago. To build a kick ass cluster management platform, Netflix partnered with Google, Microsoft and Pivotal. The deployments in spinnaker start right from Jenkins into which it hooks in. It now supports AWS, Google Cloud, Kubernetes and CloudFoundry with support for Azure under way.

IBM’s CloudMatrix

IBM’s CloudMatrix bills itself as a cloud brokerage software that enables IT to adopt a Hybrid IT and a multi-sourced operating model. It allows enterprises to customize their offerings and create a veritable marketplace from which a solution can be intelligently and collaboratively chosen for a product that is being developed. It promises to deliver a bill of IT and track usage of Cost all upfront. I could not find a definite list of all the clouds that it hooks into but based on their API layer it bound to be comprehensive. Based on their brochures OpenStack, AWS, Azure, Docker are a few names that I saw.

Calm.io

Calm.io is specifically highlights micro-service architecture and has comprehensive support built-in for Docker. It supports all the standard features of a multi-cloud management software like modeling of software, auto-healing, multi-cloud support. It also has some unique features like rolling upgrades, integration with Chef, Jenkins and Puppet, and a really good GUI. Currently it supports AWS, OpenStack, Docker, XenServer, NutaniX, Azure and VmWare.

Do you use any other multi-cloud management software or are aware of one that I missed ? Let me know in the comments below.