Cloud Native Doesn't Mean Breaking Everything You Have
You've probably heard lots of talk about "cloud native computing," but if your world revolves around applications built around virtual machines—for example, if you're a VMware shop—you may think it's not an option that's open to you. Fortunately, that's not the case. With today's technologies, it's possible to take advantage of cloud native computing without having to rewrite every piece of software you've been using all these years.
Multiple paths, same destination
Ultimately, yes, you want to be in a position where your applications are all cloud native and you can take advantage of technologies like containers and orchestrators such as Kubernetes to ensure that your infrastructure is flexible and resilient.
Cloud native environments offer multiple advantages. They include, for example:
Increased resilience: Cloud native applications are built so that if one component goes down, it can be automatically restarted with no user downtime.
Increased scalability: Cloud native applications are broken down into components that can be scaled horizontally at a moment's notice to accommodate bursts in demand.
Decreased cost: Because cloud native applications can be scaled easily, you don't need to allocate permanent resources for your worst-case demand scenario (overprovisioning); you can simply use (and pay for) what you need at a given time. You can even have resources that are on-prem and get extra capacity from public clouds when necessary.
Culture changes: Cloud native environments provide an easier path to DevOps and other beneficial developer mindset changes. They even make it easier to focus your business on tasks that provide the greatest business value.
Yes, transitioning to cloud native is a lofty goal, but it's totally reachable. Thousands of companies have already made the transition.
In the long run, the transition involves taking your monolithic applications and breaking them down into cloud native components – but you don't have to do that to get started. Instead, you can run your VMs in the cloud.
How you get there depends on how in-depth you want to get. Fortunately, you have options. You can use:
OpenStack
VMs on Kubernetes
OpenStack and Kubernetes together
Let's look at these three in a little more detail.
OpenStack
OpenStack is an open source Infrastructure-as-a-Service platform that enables self-service requests for and management of resources such as Compute, Storage, and Networking. It also has many ancillary services that are crucial to a cloud-based infrastructure, such as identity and key management.
In other words, it's VMware without the expensive VMware licensing, and with a focus on cloud native application deployment and management.
OpenStack has been around for more than a decade, and has long since reached basic feature parity with VMware. It's also the most deployed open source Infrastructure-as-a-Service project in the world, so you know you can trust it.
Migrating VMs to cloud — for example, from VMware to OpenStack — isn't trivial, but it's extremely do-able. Both systems are based on taking a machine image and launching a virtual machine from it, then using that VM as a full-fledged computer, on which your software runs.
This approach will probably be the most similar to the one your people are used to, in that it's a one-to-one relationship between VMware VMs and OpenStack VMs. It does, however, have the added advantage of enabling self-service creation of resources.
VMs on Kubernetes
And of course the current "cool thing" in cloud native computing is Kubernetes, which was designed to orchestrate containers. It works best when applications are broken out into microservices, or tiny bits and pieces that can be scaled individually and that talk to each other to make up a full application.
But did you know that Kubernetes can also orchestrate VMs?
That's right, Kubernetes has a component called KubeVirt that makes it possible to run your virtual machines as though they were containers. True, it's not the best use of Kubernetes' talents, but it enables you to put your VM in the cloud and orchestrate and scale it automatically.
The process isn't as straightforward as simply moving to OpenStack, but it adds the advantage of Kubernetes' self-healing capabilities--as long as you’re running only stateless applications. (Stateful applications actually are an option, but they involve an additional level of complexity.)
OpenStack and Kubernetes Together
But perhaps the best and easiest way to get your VM-based applications into the cloud is to use OpenStack and Kubernetes together. For example, Mirantis OpenStack for Kubernetes is a containerized distribution of OpenStack that runs on top of Kubernetes. Let me explain what that means and why it's important.
We talked earlier about what OpenStack is and how you can use it to run your VMs. Well, imagine that OpenStack instance running on top of Kubernetes.
A setup like this has multiple advantages. Not only does OpenStack get the reliability of running on Kubernetes, you wind up in a situation in which you can lift-and-shift your VM-based applications to OpenStack, then shift over to Kubernetes at your own pace by creating additional clusters. For example, Mirantis Container Cloud enables you to create multiple Kubernetes clusters -- including one or more running OpenStack -- and manage them from a single control plane.
In other words, you have options:
You could keep your existing apps as VM-based applications, but move them to OpenStack.
You could let your developers experiment with Kubernetes (which most of them want to do anyway, to the point where they will change jobs to do it, if necessary).
You could start with a single application to test out the cloud native paradigm.
You could decide to do all new development in Kubernetes.
You could even decide to slowly migrate your existing apps to a microservices infrastructure.
The choice is yours. You have complete control over what works best for you.
It's not an easy choice, but it's do-able. Mirantis Press published a book about how to do it, From Virtualization to Containerization: A Guide for VMware Admins and Other Smart People. Click here to get the ebook version free, and let us know if we can help.