Until now we've been working on a single machine.
It's time to start thinking about scaling up and scaling out.
So let's bring our expert Adrian back in.
>> Hi there.
>> Hey, Adrian, thanks for coming back.
What role do you see containers playing in the future of
application development and deployment?
Well if you look at the history of having large systems in the data center.
Bare metal machines, typically you'd buy them,
you'd depreciate them over three years.
They'd sit at the same IP address.
They get installed once and used over and over again, and
you can think of those machines as pets.
What we really want to do is have cattle.
Right. So if you lose some
you know one cow out of a dairy hood you still got milk, right.
You can get another cow.
That's that kind of model, rather than having some machine that's
very specific and if one knows its name and
if they have anything goes wrong with it everyone gets very unhappy.
So that transition from sort of these very specific machines to
more sort of fleets or herds of machines is
something that happened typically when, you know, you can do it with the VMs.
But VMs take out as, you know,
they basically usually you get them by the hour and they last for
a few weeks and you know they have a much shorter life cycle.
But when we go to containers became efficient
enough that you could actually get a machine in seconds and
you could run it for minutes and that was a perfectly reasonable thing to do.
So, you can create an entire test environment from scratch,
run it until when and run all your tests, shut it down again and
you can have lots of those running in parallel.
So now you've got machines, some of them you barely know they exist,
they come and go very, very quickly.
And finally, sort of, if you take it right to the limit,
you could create a container just to run a single request and shut it down again.
And that's something that's starting to be called serverless computing,
and there's a few frameworks for doing that.
But that's sort of the leading edge of what's happening right now.
>> So when it comes to writing containerized apps other than make it
smaller, what are problems that no one's talking about?
>> So one of the problems is that people get into is if
they keep their old organization and the old practices.
So if you've got a micro service or an application you are building and
the way you used to build your monolith was you had teams spread
all around the world that contributed code into the system and
you spent, you know, weeks of putting everything together.
So when we created software it sort of followed the form.
That form, this is sometimes called Conway's law
which says that the structure of an organization
guides the kind of structure of the code they produce.
So what I'm really saying is that you can't build micro services with
a waterfall organization.
>> So people might lose some of the benefits of the microservices pattern
with organizational issues.
What about technical issues like monitoring,
logging what are problems with those?
>> And so you need much more automation.
That's a lot more moving parts,you need systems that dynamically discover what
to be monitored and track them.
So, that's the kind of characteristic you're looking for.
>> That sounds like a lot goes into it is this something
developers are programming themselves?
We're looking back five years when Netflix first started doing this.
One of the things we had was that because we were early we had to invent
a lot of stuff ourselves.
And there was just, we went and read papers and we built things, right.
And what the situation now is that there's really too many things to
choose from and you spend more time trying to figure out which GitHub
lipo has something useful in it, which open source project,s and
which the SAS vendor is trying to sell you something.
So, there's just too many choices right now, and
those choices are changing really rapidly.
>> So, it sounds like infrastructure is something really important,
maybe not to code yourself because there's so much, so
find something that works, use it for now change or readjust as you go.
>> Yeah, there's no need to build it yourself now, and there's too many good
options out there, too many things you can just get hold of and use.
There're cloud based services.
There's On Premise.
There's things you can download for free.
So something that could be an 80s has a lot of functionality you can just go use
it and you don't have to go try and build all that yourself.
So they're building higher and higher level services on top of
lots of the detailed engineering what goes into building these frameworks and
then you can build on top of them.
>> Okay thank you so much for coming in and talking about this.
>> Thanks very much.
>> After talking with Adrian,
one of the industry's leading experts on this subject,
it turns out that infrastructure is just as important as the application itself.
This course is going to cover the theory and
implementation of managing that infrastructure.
So in this course we're going to move past theory and show you how to do it,
and we'll be using Kubernetes for that.