Ignites- Containers, Virtual Machines...

0 0

[Music] the Battle of infrastructure 2017 Nell shamera Harrington my name is Nell sham real Harrington and there's a million deploys I haven't done but just you wait just you wait now you may have no control over who lives who dies who tells your story but the rumors of the death of any technology are greatly exaggerated I've had people say to me why do people still use on premises why do people still use bare metal isn't bare metal infrastructure dead and the answer this is definitely no if you're dealing with processing a lot of video if you're dealing with my no mining whatever cryptocurrency is in vogue today you still need the raw compute power of bare metal now I've also heard isn't virtual machine infrastructure dead I mean isn't everything serverless now why are you still spinning up bm's like you're running out of time and the answer this is no it's not dead there are a lot of parts of your application which don't work well in serverless and you still need that VM now this one's the big one doesn't everyone just run everything in containers now and the answer of this is also no despite what the hype may lead you to believe the containers are not the best solution for everything this is because containers are for the stateless parts of an application things like web servers or even short-lived caches things where it doesn't matter if that container goes away and we spin up a new one from that container image now by contrast containers are not for the stateful parts of an application things like production databases if you try to run a production database in a container you are in for a world of hurt now when I say stateful what I mean by that is something is stateful when it has persistent data what it has data that needs to stick around from deploy to deploy and throughout the lifetime of the application that means something is stateful and that means it should not go in a container now if you store persistent data in a container you will get a giant container that is locked into a host it's not young scrappy and hungry and you are throwing away your shot with containers if you do this now addition to having that giant non portable container you're also going to be locked into a particular host it's going to be very difficult to spin up a new container and get all that persistent data out of the old container into the new one and if that containers goes away you're pretty much screwed it turns the world of containers upside down now I mentioned this last week and someone said to me well isn't what running a giant container that's locked to a host just the same thing as running my database in a virtual machine and the answer this is also know there's some big differences the two biggest are that you don't back up a container and you don't patch a container containers the idea of them is that you don't change the software running in them you update the container image and then you make a new container to do that keeping the persistent data out of your containers keeps them portable that's the reason containers were in the created in the first place to have that wonderful ephemeral flexibility to spin up a new version of that application piece anywhere now what about kubernetes I mean there's a lot of really smart people at Google haven't they figured out this problem of stateful data in containers and the answer is yes but there are stateful sets in kubernetes and they are very very cool but the thing about them is they still keep the persistent data out of the containers they keep it on a separate volume that is then automatically mounted on each container as its spun up within that stateful set now how do I know what parts of my application go where I mean is my infrastructure even something I can control is it uh nimita belit an original well I can't give you the ten commandments of infrastructure but I can give you three general guidelines to help you when you're deciding where to run your application parts the first is that stateless parts should go in containers again anything where it doesn't matter if it goes away and comes back up again you'll get a lot of benefit from having those in containers now if you have a persistent data store something like a production database those generally should go in virtual machines if you want to keep that wonderful power flexibility of the cloud and have the ability to easily back it up and/or spin up a new virtual machine now if you're dealing with anything with a heavy compute load again processing video doing cryptocurrency anything where it would be bad for your hosts to be sharing its resources with other applications running on it those generally do best on bare metal there is definitely still a place for bare metal in this work so and so the DevOps experiment begins with my servers not scattered to the winds again I'm Mel shamrock Harrington my name is Nell Cheryl Harrington that's my info and thank you [Applause]