SPEAKER 1: Welcome to VM End-to-End,
a show where we have a VM skeptic and a VM enthusiast
try and hash out, are VMs still amazing and awesome.
So Brian, thanks for coming in today.
I appreciate you.
SPEAKER 2: Happy to be here.
Let's get to it.
SPEAKER 1: Yes.
Yes.
Last time, we talked about are Cloud VMs relevant.
Are VMs still relevant in a Cloud native future?
You said, definitively yes.
So today, I want to go a little bit deeper and find out
what exactly is a Cloud VM.
Can you help me out?
SPEAKER 2: Absolutely.
Let's get into it.
And you know first it's a virtual machine.
I think most of what people know about virtual machines
is all true for Cloud VMs.
And the thing I hope we get out of this today
is that there's a bunch of extra stuff you might not know about
or might not think to look into.
SPEAKER 1: OK.
So it's like a Cloud, it's like a regular VM but not.
So a regular VM, we said it's a machine on a computer.
You said a Cloud VM is a little bit different.
What are the specific differences
with the real parts, the physical parts?
SPEAKER 2: Yeah.
In the end, it's all running on real computers
somewhere, right?
So when the VM is up and running, you've got a real CPU,
you've got real memory, and I think
the parts that are the most fluid are probably
the disk and the network.
And in Google Cloud, those are both software
defined services that give you a lot of flexibility.
So I think the takeaway here is, instead
of thinking about it as a slice of one computer,
think about it as like the slice of a data center's
worth of computers.
SPEAKER 1: Wow, all right.
So that's an interesting thought to me.
And what I'm curious about is, if I
have a slice of a data center, how
is that manageable or usable?
Like if I wanted to make a video game, what
do I do with a slice of a data center?
SPEAKER 2: I think that's a great example.
So it's down to what are you trying
to do and we then take a bunch of the variables that
are possible and kind of group them up.
So we group them up into compute optimized, memory optimized,
accelerator optimized and then general purpose.
So the compute ones are for where
you need the lowest latency single threaded
computation possible.
Memory is where you need the maximum memory you can possibly
stuff in a machine.
You're running like an in-memory database or something.
And the accelerator ones are for when
you need a GPU or one of our Tensor Processing Units.
And then for everything else, general purpose.
SPEAKER 1: General purpose.
Just like most people, just need a laptop.
So you have these specific groupings,
maybe families of machines ordered,
within those families can I specialize?
Like if I need a high-end gaming laptop versus just
like a low-end gaming laptop?
SPEAKER 2: Absolutely.
And the first knob you have is just how big it is.
So how many CPUs and memory?
So you can have a two core machine or a 20 or a 460 core
machine.
And so they get bigger and smaller.
SPEAKER 1: Really?
SPEAKER 2: Yeah, really.
And up to 12 terabytes of memory right now.
And like those numbers keep getting bigger over time.
So when you see this, it might be different.
And by default, those come in kind of like a preset ratio.
So they kind of grow together.
Part of the main reason people wanted
to use containers at all is that not everything fits
in that exact shape, so you end up
kind of orphaning some of the capacity
and kind of wasting money.
So we also allow you, with the general purpose machines,
to pick your own ratio.
So if you're like, Oh, I know this
is a really CPU heavy thing but I don't need that much memory,
you can make a computer that's shape
and you'll only pay for what you actually need.
SPEAKER 1: Oh, that's really cool.
OK, so if you can make your own shape,
somewhere there has to be physical memory.
SPEAKER 2: Yep.
SPEAKER 1: So where do we get this in a Cloud VM?
SPEAKER 2: Yep.
So when you go to set one of these up,
we find one of the machines out there
that has space for the shape you want and start it up there.
And so that's this kind of a Tetris problem
becomes not your problem, and we're
big enough that there's almost always
a good spot for that to fit.
SPEAKER 1: Yeah.
And so these are all on one machine
it just sounded like there.
SPEAKER 2: Oh, so there's a data center worth of machines.
And so when you go to start yours up,
we find the right spot for it.
Find a computer that has open space.
SPEAKER 1: So tell me a little bit more
about disks than in this slice of a data center world.
SPEAKER 2: So if we can just turn it
on on like any one of these computers in a data center,
how do the disks work?
Where's my data?
And so by default, our disks are almost always
network attached storage.
And so instead of a physical disk plugged into one computer,
those still exist, but we provide
a virtual disk made up of hundreds or thousands of disks
plugged into a whole bunch of computers.
And then assemble the blocks together virtually,
which gives you--
you actually get higher performance
than you might get normally.
So like the throughput is very fast.
And then you get a bunch of the features
that you might expect from a SAN,
like a Storage Area Network.
SPEAKER 1: So you can attach and detach on the fly.
You can--
SPEAKER 2: Yep.
SPEAKER 1: OK, that's really cool.
SPEAKER 2: So you can do that.
You can resize it, and use the snapshots to take backups.
But the resize thing is kind of amazing.
Like if you run out of disk space,
you can actually make the disk bigger
while the computer's running.
SPEAKER 1: Ryan, you're blowing my mind right now.
I gotta act skeptical.
I'm going to be skeptical.
You're blowing my mind.
Something I'm curious about.
When I'm using containers, I can select an operating system.
And so the benefit of that is, I can write applications
to operating systems that I know and love.
I can only use what I need.
Is there that same concept in the VM world or am I stuck?
Am I forced to use certain types of operating systems
to use a Cloud VM?
SPEAKER 2: Yeah, very similar concept.
Whereas in a container it's mostly just the
files that make up that system per for runtime.
Whereas here, we have the whole operating system running.
But other than that, it's really pretty much the same concept.
You have most workloads these days are
running on Linux or Windows.
And so we provide kind of premade images of Debian,
Santos, Core OS, Ubuntu, Red Hat, Enterprise, SUSE
and Windows Server Data Center, a bunch of different versions.
So when you create a VM you say, OK, I want it to run this OS
and it makes a copy of that image kind of on the fly
and boots your machine off of that.
SPEAKER 1: OK, that's really cool.
Can you use your own at All
SPEAKER 2: Yeah.
So if you-- two ways to do it.
So one, if you want to use one of these OS's and just kind
of put your flavor on it, add some tools,
configure it the way you want it to be, you can boot off
one of them and then make a new image based off of the work
you did.
SPEAKER 1: Nice.
SPEAKER 2: So that's a really common thing.
And then if you want to, it's a block device.
And so you can make a customized version of an OS
or develop a whole new OS, and as long
as that runs in a virtual machine, you can boot off of it
and go.
SPEAKER 1: I got to be honest, it's
sounding like there's a lot of flexibility.
Like all these things--
I'm like, well, in containers you can do this.
You're like Yes, you can do this in VM world too.
SPEAKER 2: And a lot of it's based on that.
So this is kind of a high-level version of what a Cloud VM is.
You can basically run anything that runs on a computer.
SPEAKER 1: OK.
We just specified really quick.
There's some virtual parts, there's some physical parts.
Your disks are going to be spread out over a wide data
center, pulled together to give you more reliability, more
consistency.
A lot of times you said it's even faster throughput.
This is really cool.
What I'm curious about is, what are
like actual like things that are non-obvious extensions
of this stuff.
Like, what can I do with this?
SPEAKER 2: I think one of the underused
or kind of under known things is actually
running a container, like kind of one container per VM
as a pattern.
SPEAKER 1: Yeah, why would I do that?
SPEAKER 2: So a couple of different reasons.
Like one, containers have become kind of a distribution format.
So a lot of software is already ready to go in a container.
And sometimes you don't want to deal
with setting up a whole cluster or managing some other stuff,
you just want to run one thing.
So that's a reason to do it.
And then sometimes there's constraints.
Like that particular thing, it might make sense
to run it on a very large machine
for a short amount of time.
Or it needs some particular configuration
that you might not have otherwise.
SPEAKER 1: And still use that packaging of containers.
SPEAKER 2: Yeah, one to one.
SPEAKER 1: OK, that makes a lot of sense.
In theory, I could still run containers for a lot of this.
What are some other features of Cloud VMs
that you're excited about.
SPEAKER 2: Yeah.
So one I think is, it's really commonly used
in almost all architectures.
Pretty much everybody has a load balancer
when you have multiple machines, right?
And the non-obvious like cool thing
is that, Yes, we have a load balancer.
But it's a load balancer service that
is provided at the data center level.
It's not some particular computer
that has a certain capacity that as soon as you hit,
like things start slowing down or getting overdrawn.
So you're actually configuring the data center level load
balancer that Google uses for YouTube and Gmail
to run your own machines.
SPEAKER 1: So one, that's just really cool
thinking about that concept.
But what I'm blown away right now
is thinking in kubernetes I use services all the time.
And GKE, the load balancer that's provided,
is the Cloud load balancer, the Google one.
So even then, I'm using the Google Cloud load balancer.
SPEAKER 2: Yep.
SPEAKER 1: My question though is, like I can still
access this load balancer, it sounds
like it's configured already for me through something
like Kubernetes.
Is there a reason to go lower?
Is there a reason to go to this level?
SPEAKER 2: So if you're already using Kubernetes,
use Kubernetes.
But I think those patterns are super useful.
And not all software is set up to run in containers
or is so easy to do there.
So if you want to use those same patterns--
SPEAKER 1: That pattern of having a single endpoint
that you can communicate with.
SPEAKER 2: Yeah.
So there's this idea of having a known endpoint that
provides this service.
And then there's a group of containers,
usually in Kubernetes, but a group of computers in this case
that do that.
And once you do that, you have a known endpoint
and a group of computers.
And we call that group in Compute
Engine a managed instance group.
Then you can put a bunch of logic on that.
So it's actually a service in and of itself.
So it handles starting up new machines when they're needed.
If you turn the dial up and you're like Oh, I have five now
and I want to have 10, it starts the new ones.
That can be set up to be run automatically
depending on the load you get.
And then you can spread those out across the world.
You can have some of them running in one country,
some of them running somewhere else,
and route the traffic to the closest one for your users,
that sort of thing.
SPEAKER 1: I'm going to have to find out more about this.
I'm going to have to dig in deeper
because I want to be skeptical and I'm
like this all sounds amazing.
I don't want this conversation to go too long,
but I'm definitely going to want to dig in deeper here.
In fact, maybe we can have an episode--
would you count this as like admin, infrastructure,
networking?
What is this that we were just talking about?
SPEAKER 2: I think we should dive
into the networking a bit more next into how that actually
works.
When I say it's not running on one box, wait, what?
How do you distribute traffic if it's not
going through one machine?
So let's do networking.
And then I'm just--
I love the disks and there's a lot more to talk about there.
Let's do that.
What else do you want to hear about?
SPEAKER 1: Disks for sure.
I want to hear about cost.
I'm going to have to do some my own homework after hearing
about like machine families and all of this.
I need to go start and create a VM.
And I hope people listening at home do the same thing.
Yes.
Because I'm going to be more skeptical next episode.
I'm going deeper.
But this episode, I got to admit,
Cloud VMs sounds pretty cool.
SPEAKER 2: They are.
Give it a try.
SPEAKER 1: All right, well thank you Brian and I'll
catch up with you next time.
SPEAKER 2: See you soon.