[MUSIC PLAYING]
STEPHANIE WONG: Hi, everyone.
Welcome to Eyes on Enterprise.
I'm Stephanie Wong, and today we're
talking with Brian Dorsey, Developer Advocate for Compute.
And we're going to be talking about how
to approach cloud infrastructure for enterprises
and how to decide where to deploy your workloads.
We have a multitude of options on Google Cloud.
And so it can be a challenge to optimize
for things like scalability, performance, developer
experience.
So Brian, thanks so much for being here.
BRIAN DORSEY: Thanks so much for having me.
This is one of my favorite topics, so I'm really excited.
STEPHANIE WONG: That's great to hear.
So first off, there are lots of options
on Compute, Compute Engine, App Engine, and Cloud Run.
And enterprises, they have a lot of legacy systems
and a lot of dependencies in place like message brokers,
databases, web apps.
So through the lens of an enterprise,
how should they make that initial decision?
BRIAN DORSEY: Absolutely.
Yeah.
It gets complicated.
We have a lot of different options
and enterprises are complicated things.
So I think--
I like to think about it as kind of an abstraction, kind
of a layer cake almost, where at the bottom
you have things like VMs, and then
you kind of move up and up in layers as you go.
So you've got things like Kubernetes,
or Cloud Run, App Engine functions,
and they get more abstract as you
get kind of closer to the top.
And I think enterprises, also they're big, right?
So you end up often running multiples of those things
together to solve the same-- in the same system.
STEPHANIE WONG: To be honest, I think a lot of enterprises
face this challenge of feeling like they're
going to make the wrong decision and they
need to make the right decision from the get-go.
So how do you help them make that choice to dive in and not
feel like they have wasted time and resources
investing in the wrong infrastructure option?
BRIAN DORSEY: Yeah.
That can be really scary, right?
You know, like all this effort and if you
have to change things later.
So I think there's a few things we can do.
You can kind of try to lower the risk,
and there's some technical things we can do that.
I think running software in containers
really helps with that.
Nearly all of our computer environments
support running software that's running in containers.
I think that's true for most of the other environments
people might be using.
So I think that helps a lot.
Also, you can just decide not to move it, right?
You know, you've got [INAUDIBLE] existing systems.
Maybe, you know--
I think one of my favorite definitions of enterprise
is where most of the software doesn't have an engineering
team on it at all.
You know it needs to keep running.
It needs to work.
But it's the ops folks who are like trying to keep that going.
And there I think VMs are really useful.
And once you have some of your software running in cloud,
you're trying to make a bigger system out of it.
So you started trying to glue it together.
And I think that's where serverless and things like
that can help.
STEPHANIE WONG: OK.
Wait.
Hold on.
Serverless.
So everyone has a different definition of serverless.
Even at Google, we have varying products
under the serverless ecosystem.
So help us define what that is here in this case.
BRIAN DORSEY: I'm not going to do it.
Like, there's so many definitions as serverless.
I think it's a little tricky.
But for the purpose of this conversation,
let's focus on that kind of pay-for-use, like the actual--
you do some work and you pay for only that work.
I think that's the core definition of serverless.
And I think it will help in this conversation.
STEPHANIE WONG: Yeah.
I mean, wouldn't you argue that that pay-for-use model applies
to Compute Engine, too, though?
BRIAN DORSEY: Kind of.
So when we're talking pay-for-use,
we're thinking of the actual work being done.
And Compute Engine, and our VMs, and several other things
in cloud, you're kind of reserved--
you're paying while it's on, virtually.
So you're paying for the reservation.
And you might not be getting any value out of that.
You might just be sitting there idle.
So there are things you can do to minimize that
and you want to do that.
But the serverless stuff is designed
so you're only paying for the actual work being done.
STEPHANIE WONG: Yeah.
OK.
BRIAN DORSEY: You know, give an HTTP request, or responding
to a message broker, or something like that.
STEPHANIE WONG: Right.
So it's more event driven.
You have the potential to scale down to zero, things like that.
BRIAN DORSEY: Exactly that.
STEPHANIE WONG: Yeah.
OK.
So let's just talk about these abstraction layers in order,
if you don't mind going through them.
BRIAN DORSEY: Totally.
You have kind of functions as a service,
and I think there is Cloud Functions.
And you know, from a developer-- this
is a developer tool primarily.
From the developer's perspective,
you write this like small piece of code, a function,
and you kind of push it up to Google Cloud.
And we do all of the work of running it.
It responds to an event, like you said earlier,
or that might be something coming from HTTP
or from a message system.
Does a little bit of work, maybe a side effect, maybe not,
and then returns.
That's it.
STEPHANIE WONG: So what makes serverless a good fit?
And when would it be something that's
more of a constraint for people?
BRIAN DORSEY: So it's showing up in lots and lots of spaces.
So I think people are exploring all the use cases.
So consider that.
But some of the places that are especially strong
is in kind of gluing systems together,
where you've got a bunch of existing pieces.
And you're trying to make them all
behave like they're one system.
And also in a lot of, kind of, message flow kind
of scenarios where people are doing either data
transformations, or they're moving information
from one system to another.
Things like that is where it shows up
the most for this level of the abstraction, that
function side.
STEPHANIE WONG: Right, and then besides Cloud Functions
and Cloud Run, we also have our longtime managed service
from 2007, App Engine.
And that's been great for developing web
applications and the like.
So can you explain what App Engine is
and what it's used for specifically?
BRIAN DORSEY: Yeah so App Engine,
it's a wider view of the code.
You have a full code base.
It's still a code-focused kind of environment.
And you push that whole code base.
It's really meant for hosting web apps primarily.
And so you have the different URLs
respond to to and the different code that handles that.
And it works as one piece.
So you've got the code, hosted database pieces,
and the same kind of idea.
You have an app, you push it to Google,
it runs it, scales it up and down.
It's really good for things where it's really bursty,
where you can't really plan for the usage,
and you need to be able to respond, but also
not have a bunch of infrastructure
sitting there idle when you're not using it.
STEPHANIE WONG: Right, and I can imagine
with retail online shops that are expecting
huge, bursting events like Black Friday, things like that.
BRIAN DORSEY: Exactly that.
STEPHANIE WONG: All right, so working our way
down the abstraction layer cake, we have Cloud Run.
Can you tell me about what that is?
BRIAN DORSEY: Absolutely.
So it's kind of trying to make the combination
of the containers world and the serverless world,
and give you kind of the best of both.
So from the container side, it lets
you run any software that will run in a container
and can listen to a web request, HTTP request, or events
coming that same way, and serverless.
You get to pay for what you use, and only what you use.
You get this hosted environment to run anything you want,
basically.
STEPHANIE WONG: So Cloud Run, yeah.
It seems like it's something that developers have been
rallying for for a while now.
They want the portability and the flexibility of containers,
but they also want the agility that serverless gives them.
BRIAN DORSEY: Absolutely.
STEPHANIE WONG: So we've mentioned containers
a bunch of times already.
What is it exactly?
Let's talk about that.
BRIAN DORSEY: So from a technical standpoint,
there's a bunch of things you could say.
We're usually talking about Docker containers.
Under the covers, they're really, actually,
a [INAUDIBLE],, a ZIP file of some files.
Practically, though, I think what it does is it solves the--
works on "my machine" problem, like where
something worked in one environment,
but doesn't in another.
That worked on my machine.
Like, so it just makes things much more consistent
wherever you're running them.
I think that's the key takeaway for containers.
STEPHANIE WONG: So for those that are already
running a large number of containers,
what would you recommend them to deploy on?
BRIAN DORSEY: Yeah, I mean I think
that's what Kubernetes was invented to help with.
So it's basically a service, a system,
a set of tools, open source environment for running lots
of containers across lots of machines,
but with the idea of treating--
instead of thinking about individual containers,
we're thinking about individual computers.
You're thinking about the application as a whole,
or like microservices as you mentioned earlier,
and how they fit together, and how the pieces talk
to each other, and managing all of that communication
as well as the containers themselves,
and insulating you from the actual, physical or virtual
hardware they're running on.
STEPHANIE WONG: Right.
So that brings us to GKE, or Google Kubernetes Engine.
Tell us more about what that is used for.
BRIAN DORSEY: Yeah, so Kubernetes
is an open source project.
And it helps that this runs in a lot of different environments.
And Google Kubernetes Engine is taking the expertise
that Google engineers and SREs built, building this up
and the longtime experience of running software at Google
to make a hosted version of Kubernetes,
where we handle the upgrades to the software,
keeping the masters online, things
like that, and basically, let you focus on the application
even more than you would.
And under the covers, it's running on VMs
and the rest of Google Cloud.
But you don't have to worry about that.
It's just kind of all handled.
It's up.
If you want to make it larger or smaller,
there's knobs you can turn to do that sort of thing.
STEPHANIE WONG: Is there any kind
of opportunity for those that are running
their workloads on App Engine to move over to Kubernetes Engine,
for example?
BRIAN DORSEY: Yeah.
And in fact, basically all up and down this stack,
most of the environments allow you
to run software in containers.
So that's true from App Engine, Cloud Run, Kubernetes,
and VM's compute engine we talk about in a minute.
So once you get into a container,
you can move things around pretty smoothly.
STEPHANIE WONG: All right, so on GKE,
what are good use cases for, and what
are some of the constraints?
BRIAN DORSEY: Yeah, so it makes this insulation layer.
So that is a good example, so if you
need to run the same application in multiple different
environments.
So this comes up, for like dev and test and prod
for almost everybody.
But you can also see it come up for writing game servers,
for example.
You need to build to run in different legal environments.
We're talking enterprises here, right?
And large companies have legal-specific policies.
They have teams that are responsible for different parts
of the systems.
You need to be able to plug your system
into the other things that are already
going on the enterprise.
And Kubernetes is especially good at that.
It's really modular.
And you can connect your different enterprise pieces
into every level, from authentication
to policy about firewalls, all the way up and down the stacks,
and get the different teams who are
responsible for those involved in working
at it at the Kubernetes level.
STEPHANIE WONG: Yeah, and just for performance
and also just optimization for utilization
of your compute resources, how does it affect that?
BRIAN DORSEY: Yeah, so the utilization
is the key phrase there.
That's the reason everybody cares about containers at all,
so you can run more software on the same machines.
STEPHANIE WONG: Exactly.
BRIAN DORSEY: And that's what containers are for,
and honestly why Google cared about it.
You get more running on same hardware.
And the same thing is true in cloud as a whole.
In cloud, utilization usage costs money.
So if you can optimize there, it saves you money
and hopefully time as well.
STEPHANIE WONG: Yeah, so we just talked about GKE
and some of the performance and cost
optimizations that you get with it.
But, I mean, I want to talk a little bit about that low level
of abstraction, Compute Engine.
It gives you a lot of flexibility.
You can take care of everything that you
deploy on the VM, like software and any installations
that you have on it.
So when does it actually makes sense for you
to choose Compute Engine?
BRIAN DORSEY: Yeah, so this is--
it's one of my favorite services because it underlies so much
of the rest of cloud.
For one, GKE is, in turn, running
on top of Compute Engine.
Our managed databases are.
And I think that's especially relevant for enterprises
because you have so much software
that doesn't have an engineering team on it, right?
You need to keep it working.
And almost always, the best first step for that is to--
it may already be running in a VM,
and if not, to move it into a VM or move it into a Cloud VM.
And you can usually do that.
It's flexible enough, you can usually
do that without having to change hardly anything because it
is a computer.
It's a virtualized machine.
So you can run the same things you've
been running other places.
STEPHANIE WONG: So you mentioned software
that needs to run without a developer team supporting it
necessarily all the time.
So give me some examples there, like any stories that you have.
BRIAN DORSEY: Oh, yeah.
I mean, I think this is like classic enterprise, right?
You know, you've got--
you've got the team that builds it.
And then they have to move on and build the next thing
and build the next thing and build the next thing.
So even in-house software tends to not
have active engineering on it.
But also you're buying or renting
software from other places that needs
to work third party software you have to keep running.
And then there may just be some old stuff where you don't
know the history of it at all.
There's that thing that nobody quite knows how to redo
but needs to keep working.
And all of those, I think, are a good fit for running on VMs.
STEPHANIE WONG: Yeah.
Yeah, I think we've all have been in that case
where we're working with software,
but the code base is so old.
It takes so long to make changes.
And maybe it's not the best fit for deploying
in a containerized environment right now.
BRIAN DORSEY: Yeah, so for anything
where it's not the right time to kind of make changes to it,
the VMs are a good place to start.
STEPHANIE WONG: So we just went through the abstraction layer
cake, as you mentioned.
And there are a ton of options we just covered.
So, once again, to kind of wrap our heads around this,
how do you make that decision?
BRIAN DORSEY: Part of it is just this abstraction,
like how do you want to be working as a team?
And if your team is mostly developers,
that's going to keep you kind of higher at the abstraction.
If you're mostly kind of ops or have deep integration
requirements or existing things, you're
mostly going to be on the lower levels.
There's also some technical constraints.
It's worth checking the docs to make sure
that these specific things you need
are available in each of the environment.
And then I kind of mentioned team a little bit.
But I just want to double down on that.
What is your team most comfortable with?
What do you care about the most?
What do you need to do and want to do as a team?
And I think that may also kind of affect things there.
The other piece is maybe not so obvious
is just where in the lifecycle it is.
For things that are newer, you have the full range of options.
And I encourage people to start high on the abstraction thing
and go down if you need to.
For existing systems, you're usually
going to be working your way up from other VMs or containers
kind of from the bottom.
STEPHANIE WONG: Right.
All right, so we talked about so much.
But what can people do to actually
get started on some of these?
BRIAN DORSEY: Yeah.
I think, yeah, there are a lot of options.
And I think if specific ones of these jumped out,
and you're like, oh, that's what I need, go dig
into that a little bit.
Look at the docs, we have code labs
on each of these for what it feels like to actually use
and get started on.
If you want a bit more information,
I did a much longer talk on the same topic.
And you can take a look at that and kind of go from there.
But yeah, give it a try.
Think about how this works for your applications,
and what your challenges are, and where adding some of this
in is going to really help out.
STEPHANIE WONG: Yeah, I think the important point
that you made earlier was you don't actually
have to move all your stuff to the cloud.
You can pick and choose the ones that make sense and then
think about which layer of abstraction
makes the most sense for your development teams.
All right, Brian.
Thank you so much for being on the show.
I encourage everyone to check out
Brian's talk where he dives in much deeper about some
of these topics.
And again, join us next time for Eyes on Enterprise.
[MUSIC PLAYING]