20 Minutes to Production
Zero Downtime Paul Payne
@paulrpayne http://payne.io
Presentation code can be found at:
github.com/payneio/qcon-gtin.git
Photos from http://unsplash.com.
20 Minutes to Production Zero Downtime Paul Payne @paulrpayne - - PowerPoint PPT Presentation
20 Minutes to Production Zero Downtime Paul Payne @paulrpayne http://payne.io Presentation code can be found at: github.com/payneio/qcon-gtin.git Photos from http://unsplash.com . GTIN (bar code) Product Lookup Service 18 million
Presentation code can be found at:
github.com/payneio/qcon-gtin.git
Photos from http://unsplash.com.
Coding with confidence.
Sensible units of deployment.
Patterns for zero downtime.
Coding with confidence.
Sensible units of deployment.
Patterns for zero downtime.
Single responsibility. Minimal, easily understood code. Loosely coupled.
Maintain their own state.
In which the presenter demonstrates an update to the microservice with defensive coding practices and fast build and test steps with the aid of Go.
Coding with confidence.
Sensible units of deployment.
Patterns for zero downtime.
“An application container is a way of packaging and executing processes on a computer system that isolates the application from the underlying host
brought into the kernel... namespaces cgroups SELinux AppArmor btrs/aufs/device mapper/etc ... Various projects... chroot (1979) jail Linux-VServer OpenVZ ... and packaged up. systemd-nspawn LXC lmctfy libvirt-lxc Docker / libcontainer rkt / appc ...
Bare Metal Host OS (Linux) Hypervisor Guest OS bins/libs App A Guest OS bins/libs App B Bare Metal Host OS (Linux) Container Engine bins/libs App A bins/libs App B VM Container
Virtual Machines Containers
Analogy from Bill Baker, Microsoft
Installing and configuring VMs. Configuring app environments. Creating, building and installing apps. Making VM snapshots. Installing OS updates. Installing and configuring hardware. Distributing VMs. Monitoring and fixing hardware. Working with devs on bad VMs. Configuring app environments. Creating, building and installing apps. Installing and configuring hardware. Distributing containers. Monitoring and fixing hardware. Rejecting bad containers. The mythical DevOPS unicorn
The DevOPS continuum
VMs Containers
OPS Dev
$ make In which the presenter demonstrates the simple containerization of the microservice using Docker and make.
Coding with confidence.
Sensible units of deployment.
Patterns for zero downtime.
Luiz Barroso & Urs Hölzle (2009).
http://doi.org/10.2200/S00516ED2V01Y201306CAC024
1999 VMWare 2003 Xen 2006 EC2 2009 Eucalyptus 2013 Docker CoreOS Mesos Marathon Google Omega LXC 0.9 2012 OpenStack 2014 Kubernetes 2009 Mesos 2015 Docker Swarm 2003 Google Borg Late 1960s Mainframe Job Control Multics Burroughs B5700 1977 ARCnet 1984 VAXcluster 2001 HP Utility Data Center 1994 IBM S/390 Parallel Sysplex 2006 cgroups 2008 LXC namespaces OpenVZ jails Solaris zones
docker + swarm + compose
DCOS
Visible/Volatile/Persistent —Peter Gillardmoss, 2012 Phoenix servers —Martin Fowler, 2012
VISIBLE VOLATILE PERSISTENT
Jez Humble and David Farley (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, Addison-Wesley.
VISIBLE VOLATILE
Public Private
etcd fleetctl GTIN GTIN GTIN Public Private In which the presenter demonstrates a canary and rolling deploy with zero downtime using CoreOS and Vulcand.
Coding with confidence.
Sensible units of deployment.
Patterns for zero downtime.
Deployment Manager
Google Cloud Platform Amazon Web Services
Terraform
Cross-platform
CloudFormation
Each service manages its own data;
Integrate through interfaces, not data stores! Our canonical GTIN data is kept in a commercial enterprise product. We copy the data we need for our service to Dynamo, syncing daily.
http://martinfowler.com/bliki/StranglerApplication.html. Image by http://journals.worldnomads.com/beckandphil.
Presentation code can be found at:
github.com/payneio/qcon-gtin.git
Photos from http://unsplash.com.