Anywhere Cloud Services - Thanks to Docker & Kubernetes
Cloud Services without the Lock In
Part 2 of 2
These posts will mostly describe a vision I have but will also include some back story and some technical information. The attended audience is anyone building or using applications.
Where are Cloud services Today?
- You are locked into these services via your code (ie, changing database backends would need a software change)
- By choosing a public cloud service, you also are forced to use their hardware. What if you run on Microsoft Azure but love Big Table?
- What if you want to use open source software but you don't want to operate, scale and secure open source software myself?
Enter anywhere cloud services.
Model #2 - Anywhere Cloud Services
An anywhere cloud service is a fully managed service that can be delivered anywhere and should have these characteristics:
It runs anywhere - The consumer chooses where the service lives. This could be any one of the major cloud providers or a private cloud with a standard API. There is a clear separation between the entity running the infrastructure and the service running on top of it.
It is consumed as a service, not as software - It provides a function to the consumer in a clearly consumable method. Ie, a NoSQL service provides a way to insert data and retrieve data. The services heals itself. It scales when required. It provides metrics, logs and alerts to the consumer. It is highly available. The service is installed as easy as running a command or clicking on a button.
Give me some Examples...
To help illustrate this idea, here are a few examples that we might see in the future:
- Any of AWS's non-infrastructure services, like the NoSQL DynamoDB service, can be provisioned in all of the other cloud providers. Ie, Azure, GoogleCloud, Etc.
- Google's non-infrastructure services, like their PaaS App Engine, can be deployed on any public cloud or even in on-premise data centers via openstack
- A startup goes after the Docker container space by building a service that will run your application/code on any public or private cloud.
- A development team decides on a data stack of Kafka, Spark and Cassandra because they want the benefits of open source software. However, they don't want to pay consultants or do operations themselves. So, they use a new service made by a startup that specializes in delivering these software stacks in any location desired.
- Creators of open source software will package their software up so that is can be easily deployed as a service in addition to supping the source code and binaries. Companies will also offer 'supported' versions of these services at a cost.
All of these are possible, thanks to Anywhere Cloud Services
How do we get to Anywhere Cloud Services?
Their were two big hurdles to Anywhere cloud services:
- Standard and efficient way to package and deploy software services across the multiple cloud providers and on premise hardware
- Efficient way to package, run, deploy, scale and secure your services (NoOps)
Enter Docker and Kubernetes!
Docker enables us to easily build, ship and run software by packaging it up in a way that will run on a wide range of systems. By using containers, cloud service providers can run their software in any environment. But, that isn't enough. We need a way to get that software installed, working and highly available. We need something like Kubernetes.
Once the software is packaged in Docker containers we can turn their software into services by using kubernetes's features. Kubernetes's goal is to take a set of infrastructure (that lives anywhere) and provide an API to create services on top of that infrastructure. Kubernetes includes features like load balancing, scaling, rolling-updates, service discovery, name spaces, APIs, scheduling and configurable infrastructure threshold limits. Using these features, we can create declarative services and give control of the service to the consumer. Kubernetes provides the No in NoOps while providing developers a single API to launch into both public and private clouds.
How will we consume Anywhere Cloud Services?
Notice that the consumer is in complete control here of where their applications will run as they will be freed from any lock-in. Thanks to the common API that lives in any infrastructure environment, consumers can use these clusters to deliver on a multiple cloud provider strategy or they can create a true hybrid strategy.
Second, consumers simply consume these services by having these services deploy their code into the customer's Kubernetes clusters. Either through an app-store like experience or through a developer friendly like experience, users will search for a service that meets their needs and click install. The service provider would than reach out to the Kubernetes cluster in question, either in the cloud or on-premise, and install the service. Developers could than immediately start using the service. The service provider's job is to ensure the service is running, healthy and scale it as required.
In this new world, consumers will have more control of their application and the services that they depend on. They can move our applications between clouds or between private and public. Consumers can run their applications actively across multiple clusters or do active-standby. All this is sweetness.
In summary, Anywhere Cloud Services
In summary - Anywhere and Open Source Services
In 5 years, cloud services will be just like software in that you go buy some and install it where you want. Pretty easy.