vladionescu.me
Deployment options
Vlad IonescuBDevOps
vladionescu.me
Plan• Deployment options
•
• Scripts
• Configuration management
• Immutable infrastructure
• Containers
• Serverless
• Blatant generalisations
• Q & A
↑ ↑ ↩ ↑ ↑ ↩
vladionescu.me
vladionescu.me/slides
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
• 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
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• Capistrano
• Fabric
• Shipit
• MS Deploy
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