Deployment options - Vlad Ionescu...2017/08/09  · Deployment options Vlad Ionescu BDevOps...

Post on 22-May-2020

33 views 0 download

transcript

vladionescu.me

Deployment options

Vlad IonescuBDevOps

vladionescu.me

Plan• Deployment options

• Scripts

• Configuration management

• Immutable infrastructure

• Containers

• Serverless

• Blatant generalisations

• Q & A

↑ ↑ ↩ ↑ ↑ ↩

vladionescu.me

Vlad Ionescu

• DevOps consultant

• Observability

• Serverless

vladionescu.me

Deployment options

vladionescu.me

"app"

vladionescu.me

Deployment options

vladionescu.me

↑ ↑ ↩ ↑ ↑ ↩

vladionescu.me

AWS cloud

EC2

↑ ↑ ↩ ↑ ↑ ↩

vladionescu.me

vladionescu.me

vladionescu.me

vladionescu.me

vladionescu.me

vladionescu.me

vladionescu.me

vladionescu.me

vladionescu.me

• Highly available

• Fast

↑ ↑ ↩ ↑ ↑ ↩

vladionescu.me

AWS cloud

EC2

EC2

EC2

vladionescu.me

Scripts

vladionescu.me

Scripts• Very varied

• Capistrano for Ruby

• Fabric for Python

• Shipit, grunt, gulp for Javascript

• MS Deploy for .NET

vladionescu.me

Scripts

vladionescu.me

Scripts

• Deployments to multiple servers

• Easier

• DevOps !!!

vladionescu.me

AWS cloud

EC2

EC2

EC2

vladionescu.me

AWS cloud

i-abc-1

i-abc-2

i-abc-3

vladionescu.me

AWS cloud

i-abc-1

i-abc-2

i-abc-3

vladionescu.me

AWS cloud

i-abc-1

i-abc-4

i-abc-3

vladionescu.me

AWS cloud

i-abc-1

i-abc-4

i-abc-3

vladionescu.me

Configuration management

vladionescu.me

Configuration management

• Ansible

• Puppet

• Chef

• Salt

vladionescu.me

Configuration management

vladionescu.me

AWS cloud

Worker

Worker

Worker

Supervisor

vladionescu.me

AWS cloud

Worker

Worker

Worker

Supervisor

Auto Scaling group

vladionescu.me

Configuration management

• Solves snowflake problem

• Did not really catch on

• Auto Scaling groups

• Slow

vladionescu.me

Configuration management

• Solves snowflake problem

vladionescu.me

The real options

vladionescu.me

Immutable infrastructure

vladionescu.me

Immutable

vladionescu.me

Amazon Machine Image

vladionescu.me

vladionescu.me

Packer

vladionescu.me

Infrastructure

vladionescu.me

AWS cloud

EC2

EC2

EC2

vladionescu.me

AWS cloud

Worker

Worker

WorkerAuto Scaling group

ElasticCacheRDS

S3

Route53

CloudFront

IAM CloudWatch

vladionescu.me

Terraform

vladionescu.me

Terraform

vladionescu.me

Terraform

vladionescu.me

Packer + Terraform

vladionescu.me

Packer + Terraform

• Packer creates an AMI

• Terraform deploys that AMI

vladionescu.me

Packer + Terraform

vladionescu.me

Packer + Terraform

• Reliable deploys

• Safe deploys

• Infrastructure as code

vladionescu.me

Packer + Terraform• No concept of deploys

• Spinnaker sometimes an option

• Slow deploys

• AMI hell

• Scheduling woes

vladionescu.me

Containers

vladionescu.me

Container orchestration system

vladionescu.me

Kubernetes

vladionescu.me

Container orchestration

• Docker Swarm

• Hasicorp Nomad

• Apache Mesos

• Kubernetes

vladionescu.me

Kubernetes

vladionescu.me

AWS cloud

Worker

Worker

Worker

Master

Master

Master

Kubernetes

vladionescu.me

AWS cloud

Worker

Worker

Worker

Master

Master

Master

Kubernetes

vladionescu.me

schedkubelet

k-proxyc-m

c-c-m

api

Master

Master

vladionescu.me

kubelet k-proxyNode

Node

vladionescu.me

schedkubelet

k-proxyc-m

c-c-m

api

Master kubelet k-proxyNode

schedkubelet

k-proxyc-m

c-c-m

api

Master

schedkubelet

k-proxyc-m

c-c-m

api

Master

kubelet k-proxyNode

kubelet k-proxyNode

kubelet k-proxyNode

Kubernetes

vladionescu.me

Tooling

vladionescu.me

Kubernetes

• Complex

• Expensive

• Opinionated

vladionescu.me

Serverless

vladionescu.me

Serverless• AWS Lambda

• Google Cloud Functions

• Microsoft Azure Cloud Functions

• Huawei Function

• Cloudflare Workers

• Apache OpenWhisk

• Fission

• OpenFaaS

• Nuclio

• Kubeless

vladionescu.me

AWS Lambda

vladionescu.me

AWS Lambda

vladionescu.me

$0.00001667 / GB-SECOND

vladionescu.meAWS cloud

AWS Lambda

vladionescu.me

Serverless app

vladionescu.me

Serverless

vladionescu.me

Serverless Framework

vladionescu.me

Serverless

vladionescu.me

CloudEvents

vladionescu.me

Serverless

vladionescu.me

Blatant generalisations

vladionescu.me

Cross-cloud?

vladionescu.me

Cross-cloud?Kubernetes

vladionescu.me

Deploy rarely?

vladionescu.me

Deploy rarely?Terraform + Packer

vladionescu.me

Easy local dev setup?

vladionescu.me

Easy local dev setup?

Terraform + Packer

vladionescu.me

Cost is an issue?

vladionescu.me

Cost is an issue?

Kubernetes

vladionescu.me

Extra features?

vladionescu.me

Extra features?Kubernetes

vladionescu.me

Cost is an issue and a startup?

vladionescu.me

Cost is an issue and a startup?

Serverless

vladionescu.me

Bleeding edge, event driven, latency

insensitive?

vladionescu.me

Bleeding edge, event driven, latency

insensitive?

Serverless

vladionescu.me

Disclaimers

vladionescu.me

DisclaimersHeroku, AWS Elastic Beanstalk and other

PaaS skipped

Perfectly valid choices

vladionescu.me

DisclaimersPeople cost vs AWS bill

vladionescu.me

DisclaimersDevOps

vladionescu.me

Resources

vladionescu.me

Resources

• Better SSH: mosh

• Pretty code slides: carbon

vladionescu.me

Resources• Create, Change, and Orchestrate AWS

Infrastructure with Terraform - a nice introduction

• Terraform at Scale - a more in-depth introduction

• Evolving Your Infrastructure with Terraform - best practices and relevant pitfalls

vladionescu.me

Resources• Terraform

• Blue green example from Boston DevOps Meetup 2016-03-23

• Blue green example

• Rob Morgan's Terraform Rolling Deployemnt Demo

• Atlantis

• Packer

• Packer WinRM

vladionescu.me

Resources• Kubernetes for Sysadmins – Kelsey Hightower at

PuppetConf 2016

• The Container Operator’s Manual - Alice Goldfuss at LeadDevLondon 2018

• CNCF landscape

• Kubernetes Slack

vladionescu.me

Resources• Ksync

• MetalLB - load balancer for bare-metal

• Zalenium - better Selenium Grid

• Istio - service mesh

vladionescu.me

Resources• Telepresence - debugger

• Squash - debugger

• Pachyderm - machine learning

• Kubeflow - machine learning

vladionescu.me

Resources

• Helm - package manager for Kubernetes

• A first look at Helm 3 plan

• Ksonnet - fancier "programmable" package manager

vladionescu.me

Resources• CNCF Serverless Working Group

• CloudEvents

• Serverless Framework

vladionescu.me

Resources

• Economics of Serverless

• Yubl’s road to Serverless architecture