By: Ryan Day, Sr. Solution Architect
Last month we posted an article about the numerous options for an OpenStack based private cloud. We wanted to continue the discussion around orchestration, specifically orchestration through (more) abstraction.
Many organizations have built their applications around the idiosyncrasies of a single IaaS or PaaS cloud vendor, and as a result an application can become reliant on those idiosyncrasies in order to function. So much so that moving to a competing cloud provider without significant changes to how the application leverages infrastructure is unthinkable — moving an application can require major retrofitting, or in some cases re-architecture in order to leverage a competitive cloud.
There are multiple approaches to alleviating the burden of infrastructure compatibility issues and the good news is that although each approach might tackle different aspects of the same problem, there is also the possibility of using them in congruence to greater effect.
I’ll briefly cover two platform types that aim to address these and other challenges:
1) Cloud Management Platforms (or CMPs):
A Cloud Management Platform is a multi-cloud abstraction layer which at a high level is meant to help you:
- Avoid cloud vendor lock-in by providing an abstracted and agnostic framework that allows for greater application portability.
- Aggregate multiple clouds in a single pane of glass, allowing for mixing and matching cloud and virtualization infrastructure.
- Automate application life-cycle management; development, deployment, version control, de-provisioning, automatic scaling and HA/DR failover.
- Gain business intelligence of applications and infrastructure with capabilities like reporting, forecasting, chargeback or making recommendations about application placement in the interest of cost reduction.
- Create a unified self service-catalog with cost and security governance controls.
In addition to integrating with multiple cloud provider APIs, most CMPs also integrate with industry standard configuration management tools like Puppet and Chef to accomplish much of the cloud agnosticism and abstraction mentioned above.
While OpenStack on its own can provide limited API compatibility with certain public cloud vendors (which helps tremendously), it does not completely alleviate problems around application portability and vendor lock-in (many companies will deploy a commercially supported OpenStack distribution with some amount of proprietary intellectual property).
The CMP market is already established and growing with widespread support of OpenStack based private and public clouds. CMPs are available as SaaS, licensed software or open source with community support and they’re being offered from vendors both old and new. To name a few:
- Dell Cloud Manager (formerly enStratius)
- RedHat CloudForms (Open Sourced as ManageIQ)
- VMware vCAC (formerly DynamicOps)
2) Docker and Linux Containers (LXC):
Another method of abstraction is putting your application inside a Linux Container (LXC). Where Virtual Machines abstract operating systems from hardware, Linux containers abstract application(s) from operating systems.
While Linux containers have been around since the late nineties, Docker is playing a major role in popularizing and improving on the technology, with support from backers like RedHat and Google. Docker aptly describes itself as “The Linux container engine” and there are currently over 13,000 application containers readily available on Docker Hub.
Putting an application in a container can help accomplish two important things:
- Eliminates overhead inherent with running multiple virtualized operating systems
- Makes an application modular and portable between linux servers
The implications of the second being that you can run your container on a linux instance in the public cloud and move it to another cloud provider or even your on-premises infrastructure with minimal retrofitting –it can live anywhere there is Linux. For development purposes containers can also be run on MS Windows and Apple OSX clients.
There is already a strong and growing ecosystem of communities and products, as well as major IaaS and PaaS cloud providers supporting containers. Some examples:
- PaaS offerings like Heroku built from the ground up with containers in mind
- Resource/cluster management platforms like Mesos which aggregate and schedule resources for use with distributed applications running in containers
As part of the Dasher Engineering team, I’m fortunate to be able to feed my passion for learning about how technology can help people accomplish (more) big things. I encourage anyone who needs direction with, or is curious about a certain datacenter or cloud technology to engage with us and benefit from us doing what we love.