Slide 1

Slide 1 text

1001 lives of containers in the cloud Christopher Maneu Azure Engineer & Advocate Microsoft R&D @cmaneu

Slide 2

Slide 2 text

1001 lives of containers in the cloud Dev teams challenges Technology changes as fast as a startup does Recruitment is hard - Finding great developers - Onboarding a dev is complex - Great candidates but not the right skillset? Security is hard Enterprise customer deployments are complex …

Slide 3

Slide 3 text

1001 lives of containers in the cloud Agenda What is a container anyway? How containers can help developers? What a container can do for production environments?

Slide 4

Slide 4 text

1001 lives of containers in the cloud What is a container anyway? A way to create lightweit, portable and self- sufficent packages for your application. Docker is the most used containerization techology. It’s an open-source project.

Slide 5

Slide 5 text

1001 lives of containers in the cloud Seems almost like a VM, no? Infrastructure Infrastructure Host Operating System Operating System Hypervisor Docker engine Guest OS Bin/libs App 1 Guest OS Bin/libs App 2 Guest OS Bin/libs App 3 Bin/libs App 1 Bin/libs App 2 Bin/libs App 3 Virtual machine Containers A complete OS / stack (memory,disk,cpy) footprint for each of your VMs An OS-level isolation of your resources

Slide 6

Slide 6 text

1001 lives of containers in the cloud Demo My first container

Slide 7

Slide 7 text

1001 lives of containers in the cloud How containers can help developers? Start working on a project quickly Share an environment configuration with other developers Deploy apps more safely Test new framework versions with ease Unite dev & ops

Slide 8

Slide 8 text

1001 lives of containers in the cloud Demo Dev in a container

Slide 9

Slide 9 text

1001 lives of containers in the cloud | How containers can help developers? Start working on a project quickly Write and execute code quickly without having to install anything Debug my code as usual Use docker for CLI tools Create your own docker container Use Visual Studio Code to debug within a container

Slide 10

Slide 10 text

1001 lives of containers in the cloud | How containers can help developers? Share an environment configuration with other developers Use and share pre-build containers through registries Hub.docker.com Azure Container Registry Use containers as a way to build your code in a CD/CI env. Build container pattern ( multi-stage builds) Use volume mapping + run command docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.8 go build -v

Slide 11

Slide 11 text

1001 lives of containers in the cloud | How containers can help developers? Deploy apps more safely Docker containers self-contain your app, eliminating any dependency issues Deploy on-demand apps for testing purposes Azure Container Instances Simplify A/B testing, carany deployments, etc… Azure Web Apps + Slots Deploy your apps anywhere! Your dev machine, all clouds, on customer’s infrastructure, on some IoT Devices (Azure IoT Hub), etc…

Slide 12

Slide 12 text

1001 lives of containers in the cloud | How containers can help developers? Test new framework versions with ease FROM node:8 WORKDIR /usr/src/app COPY package*.json ./ FROM node:8.15.0-jessie WORKDIR /usr/src/app COPY package*.json ./ Tags allows you to specifiy a specific version to use. Your own (base) images can have a tag. You can use latest to get the most recent version, this can be used in your CD/CI environment to test your code nightly against the latest/nightly version of your stack.

Slide 13

Slide 13 text

1001 lives of containers in the cloud Containers for production: some challenges How do you manage persisted state? How do you scale your service to several nodes? How do you implement a self-healing infrastructure? How do compose services using different containers? How do you aggregate logs from all containers & hosts ? You need an orchestrator & some cloud services!

Slide 14

Slide 14 text

1001 lives of containers in the cloud What is Kubernetes? Open source project started by Google in 2014 container-centric vs. host-centric schedules and runs application containers across a cluster of machines portable: public, private, hybrid, multi-cloud extensible: modular, pluggable, hookable, composable self-healing: auto-placement, auto-restart, auto-replication, auto- scaling Provides resource monitoring, load balancing, naming & discovery, horizontal auto-scaling Has cloud provider integration (Eg - Azure networking, Azure disks)

Slide 15

Slide 15 text

1001 lives of containers in the cloud Demo Containers in production

Slide 16

Slide 16 text

1001 lives of containers in the cloud You didn’t talked about microservices, right? CONTAINERIZE EXISTING APPLICATIONS Containerize for portability, efficiency and reliability TRANSFORM MONOLITHS TO MICROSERVICES New code and transforming existing code ACCELERATE NEW APPLICATIONS Agile cloud native app development

Slide 17

Slide 17 text

1001 lives of containers in the cloud You may need more than 1 cloud service https://aka.ms/1001SF-archi

Slide 18

Slide 18 text

1001 lives of containers in the cloud Tools used

Slide 19

Slide 19 text

1001 lives of containers in the cloud Next steps http://aka.ms/1001SF-slides http://aka.ms/1001SF-demo http://aka.ms/1001SF-runcloud http://aka.ms/1001SF-registry

Slide 20

Slide 20 text

@cmaneu