VMs and their relevance to a cloud-native future: A conversation
VMs and their relevance to a cloud-native future: A conversation
Last week, we published the first episode of VM End-to-End, a series of curated conversations between a “VM skeptic” and a “VM enthusiast”. Join Brian and Carter as they explore why VMs are some of Google’s most trusted and reliable offerings, and how VMs benefit companies operating at scale in the cloud. Here's a transcript of the first episode:
Carter Morgan (VM skeptic): My team asked me to research VMs and see how they compare to other cloud-native approaches, like microservices, containers, and serverless. And to be honest with you, I am not excited about it at all. So I’ve brought in someone who is, Brian, resident VM expert. Welcome, Brian!
Brian Dorsey (VM enthusiast): Hello. I’m super happy to be here, because I am really excited about VMs.
Carter: How? See this is why I wanted to bring you here. I don’t understand how you can be so excited about VMs, already?
Brian: How can you not? It is like the best of both worlds. You’ve got a stable, reliable system you can run anything on, and you’re in the cloud, close to all of the new features, and you get new automation tooling.
Carter: See, that’s what I’m kind of skeptical about. When I think about the features of a modern system, I’m not sure that a VM can provide me with those.
Brian: Okay. Well, let’s be kind of specific there. What do you mean by a modern system?
Carter: When I think about a modern system, I think about things like modularity. I think about scalability and reliability. I want automation. I don’t want to have to do everything manually. I even think about portability and being able to move my workloads wherever they need to go. I also don’t want to implement everything by hand. I don’t want to have to do everything myself. Is that something I can get with a VM?
Brian: Yeah. Great, because I actually think we can get most of that, and I wonder, why not? Let’s go one level deeper and then we’ll come back out. In your mind, what is a VM?
Carter: Oh, you’re putting me on the spot, Brian?!
Carter: Okay. A VM, it’s a computer, but it’s a virtualization. It’s a slice of a computer. And so, what it lets you do is it lets you run multiple operating systems on one machine, so it looks like you have multiple machines running on one physical machine.
Brian: Yep. Absolutely. And in the cloud kind of not.
Carter: Oh, what?
Brian: Yeah. So here’s why I say not. The obstructions are all there, so you’ve got memory CPU, disk, networking. And instead of from one computer, in the cloud, that’s coming from all of the computers in a data center. So the CPU is coming from a lot of machines. The networking is from the whole data center. And so, I like to think about it as instead of a slice of a computer, it’s a slice of the data center
Carter: Instead of a slice of a computer, it’s a slice of a data center. That sounds interesting. Impressive, even. But also abstract. Do you have some examples of features that you can get from a cloud VM that you can’t get from a traditional VM on one machine?
Brian: My turn to be specific. Yeah. I think one example is like bin packing. You talk about these VMs, and their different shapes. So you have one that needs a lot of CPU and another that needs a lot of memory. Maybe you’ve got a bunch of them that need a lot of CPU and they don’t fit so well in the same box without orphaning some of the memory or CPU. And if you’re running those in a whole data center, or you can basically just leave it to Google to solve that problem, you can just have whatever shape machine you want and we’ll figure out where to put it. Basically, that lets you customize your machines to exactly what you need.
Carter: Okay. That’s very interesting, because that’s a hard problem. And so, if you can just let Google handle where your workloads are going to go, that’s a good benefit. If that’s the only benefit of cloud VMs though, I’m not sure I’m sold on them over other approaches. Is there anything else we got?
Brian: Absolutely. There’s a ton of stuff we could talk about in terms of automation and other things. But I think another really concrete example is disks, and it’s kind of my favorite there, because you think about a physical disk and you read and write blocks from it, right? It’s a block device. In the data center level, those blocks could be on hundreds or thousands of different machines, and so all of them are working together to give you more reliability and make things smoother, more predictable in terms of performance. So what you get out of it is something that looks a lot like a SAN, you can take backups of disks that are running even, or if you’ve run out of space, like I think almost all of us have, you can just make the disk bigger. So, things like that.
Carter: That’s impressive, especially like you’re saying being able to run and just scale up, scale down or resize. Okay. Then another very targeted question. It’s going to sound like a dig. I don’t mean it to you. Google’s putting a lot of effort and resources into Google Kubernetes Engine (GKE). And so, is Google even still investing in VMs?
Brian: Absolutely. Where do you think these containers run? Every Kubernetes cluster is running on top of a whole bunch of VMs. And so, everything you learned about VMs applies to those clusters that you’re running. Also, another example is our managed databases, so Cloud SQL. So if you’re running Postgres or MySQL on a Cloud SQL, that’s running on VMs. And there’s a bunch of other examples, too.
Carter: I can’t get away from VMs, even if I tried, it sounds like.
Carter: Okay. The way you’re saying that is making me think that maybe I need to rethink my idea that VMs are just old, dusty pieces of technology. So I want to be clear, definitively, are you saying that VMs have a place in a cloud-native future?
Brian: Absolutely. I want to take old and dusty and turn that into mature and reliable. Then the future part, all these things are built on top of it and we’re building new things over time. So we’ve got tools for scaling clusters of machines up and down. That’s using Kubernetes, but you can use it directly. And we keep investing and doing more and more things there. So, absolutely, part of the future as well.
Carter: Okay. Then what about if I wanted to switch to them? I’m pretty familiar with Kubernetes. It’s fairly easy to get started. What about with VM? Is it going to take me years to get started on these?
Brian: No. It’s just a computer. Basically, anything that’s already running on a computer somewhere, even if you don’t have the team who built it nearby, you can run that on a VM and in turn you can run it on a cloud VM and get a bunch of the cloud benefits as well.
Carter: All right. I must admit that you’ve swayed me a little bit. I’m still skeptical, but what you said made a lot of sense. I still have a lot of questions. I want to know about keeping costs down. I want to know how to update VMs. I have this idea in my head that they’re really slow to start and stop. Stateful data, I’m curious about that.
Brian: Awesome. How much time do you have?
Carter: All right. You know what, let’s have this convo another day, and maybe, just maybe we can agree that VMs do matter in a cloud-native future.