MARCUS SMITH: My name is Marcus Smith.
ERIK RAHTJEN: And I'm Erik Rahtjen.
MARCUS SMITH: And we are both the software developers
at Stable Kernel, which is a mobile consultancy in Atlanta.
We've both done full stat Dart applications for clients
that we've got live now.
For the web, we're using AngularDart,
which you're all familiar with.
For the back end, we're using Aqueduct,
which is a back end framework that we've developed for Dart.
It's HTTP multithreaded object-oriented.
We've got our own ORM.
It's got built-in OAuth 2 and [INAUDIBLE]
runs just kind of Dart VM on the server.
We're here today to kind of go over briefly how
we are deploying these full stack Dart
applications on Google Cloud using Docker and Kubernetes.
So Docker, if you're not familiar with it,
is a containerization service.
It's a lightweight way of packaging up your code and all
of its dependencies in a way that can be consistently run
on any kind of machine.
So you don't need to worry if it's Linux, or Windows, or Mac,
or anything else.
And to build your application into a Docker image,
you just use a Docker file.
And this is extremely easy for both Angular and Aqueduct
applications, because Google provides a base Dart
image, which for Angular, you can use as a build environment.
And then we tend to run ours in an Nginx Docker image
after that.
And Aqueduct is able to just use the Dart base image.
And all of this is fairly boilerplate to where
we tend to use the same one for every project
with maybe just a minor tweak or so.
And then Erik is going to tell you about Kubernetes.
ERIK RAHTJEN: So Kubernetes is a container orchestration
service.
It basically takes your applications in Docker images
and deploys them out onto a series
of nodes called a cluster.
It Manages the deployment rules.
So say, if you didn't ever want a container of yours
to be using more than 50% CPU, it
would go ahead and launch another one.
Or if it needed to provision a new node,
it could go ahead and handle that, too.
Additionally, it handles internal networking
between your applications.
So it'll go ahead and set up all the routing
between those for you.
And it also handles all external communications as well.
MARCUS SMITH: I think--
ERIK RAHTJEN: So--
MARCUS SMITH: I'll take it.
ERIK RAHTJEN: All right.
MARCUS SMITH: I think the most appealing thing for me about
Kubernetes is you're just defining the rules for how
you want your deployment to be.
So in programming terms, it'd be all declarative instead
of imperative.
You just tell it, here's how I want my deployment to be.
I want it to have three Aqueduct servers running, or no more
than five, no less than three.
And here's the parameters I want it to run in.
And it manages all the hard parts of getting them set up
and getting the right state.
And what this really boils down to is
you get to spend more time developing your applications
and less time doing DevOps, while still
getting all the benefits of professional DevOps engineers
who put together Kubernetes, and Google Cloud,
and whatever else.
ERIK RAHTJEN: One of the great things about Kubernetes
is it's open source.
It's already super robust, so it's
easy to define a lot of complex rules.
But if it doesn't meet your demands,
you can go ahead and extend it yourself.
It is usable by any cloud provider, not just
Google Cloud.
But I don't know why you'd be a traitor, especially when it
works out so well with Google Cloud.
So one of the things that that enables you to do
is it's consistent across any of these providers
or across your own bare metal.
So maybe Google Cloud doesn't provide a database server
that has 10,000 gigs of RAM, or whatever,
and you want to use that.
You can go ahead and do that, and Kubernetes can manage
doing those types of things.
It's self-healing, which is really neat.
So if your applications crash, it's
going to go ahead and relaunch the application.
And additionally, it can kind of take different applications
and figure out, can a node have eight of them running?
Is it capable of doing that?
OK.
I'll pack eight onto that one.
Or maybe this node can only have four.
So it can figure all that out for you.
It handles SSL certificates as well,
and TLS termination using native load balancers
to the cloud providers.
MARCUS SMITH: So we know it's kind of a lot to really cover
in depth in a five-minute talk.
But on our blog at stablekernel.com/blog,
we've kind of got some walkthroughs on setting up
Kubernetes and running all the way through Google Cloud.
We've got documentation up for Aqueduct as well.
ERIK RAHTJEN: Yep.
MARCUS SMITH: And then we're also--
if you want to develop Dart full time, we are hiring.
So end on the good news.
ERIK RAHTJEN: Yep.
[APPLAUSE]