Velociraptor an open-source app deployment system by YouGov YouGov - - PowerPoint PPT Presentation

velociraptor
SMART_READER_LITE
LIVE PREVIEW

Velociraptor an open-source app deployment system by YouGov YouGov - - PowerPoint PPT Presentation

Velociraptor an open-source app deployment system by YouGov YouGov Top 25 research company Based in London Global offices Gathers beliefs and behaviors from millions Data + expertise What the World Thinks Heavily


slide-1
SLIDE 1

Velociraptor

an open-source app deployment system by YouGov

slide-2
SLIDE 2

YouGov

  • Top 25 research company
  • Based in London
  • Global offices
  • Gathers beliefs and behaviors from millions
  • Data + expertise → What the World Thinks™
  • Heavily invested in Python
slide-3
SLIDE 3

motivation

  • repeatable deployment
  • developer driven
  • language agnostic
  • Python
  • PaaS
slide-4
SLIDE 4

eggmonster

  • Setuptools multi-installed packages
  • Managed by central config server
  • YAML configs with inherited properties
  • Violated repeatability
  • one app might update another’s packages
  • No GUI
  • Fixed ports and manual routing
slide-5
SLIDE 5

Consideration

  • Juju
  • ActiveState Stackato
  • Based on CloudFoundry and Docker
slide-6
SLIDE 6

Inspiration

  • Heroku!
  • 12-Factor Methodology
  • http://12factor.net
  • Buildpacks
  • Docker (lxc)
slide-7
SLIDE 7

Implementation

  • Django
  • GUI
  • Postgres database models
  • TastyPie API
  • MongoDB
  • Images
  • Slugs
  • Celery workers
  • Supervisord to host processes (procs)
  • Command-line Interface
slide-8
SLIDE 8

Features

  • Zero downtime deployment
  • Pluggable Balancers
  • Managed Config
  • Repeatable Deployments
  • Uptests!
slide-9
SLIDE 9

Platform

  • Stacks / Images
  • Buildpacks
  • Apps
  • Squads
  • Ingredients (config)
  • Builds
  • Releases
  • Swarms
slide-10
SLIDE 10

Stacks

  • Runtime environment
  • Akin to Heroku stacks
  • Linux images
  • base
  • provisioning script
  • Images built through GUI
slide-11
SLIDE 11

Buildpacks

  • Inspired by Heroku
  • Industry standard for building apps
  • Simple protocol (detect, compile, release)
  • Supports many languages and techniques
slide-12
SLIDE 12

Apps

  • Repository (Git or Mercurial)
  • Relevant buildpack (autodetection)
  • Relevant stack
slide-13
SLIDE 13

Squads

  • Pool of hosts
  • Commodity
  • Identically provisioned
  • Colocated
slide-14
SLIDE 14

Config Ingredients

  • Re-usable Application Config
  • YAML
slide-15
SLIDE 15

Builds

  • Buildpack output
  • Freezes dependencies
  • Slug without config
  • Combine with config to create a Release (slug)
slide-16
SLIDE 16

Swarms

  • Primary target for Velociraptor
  • Logical combination of
  • a Process
  • within an App
  • at a Tag (designates build)
  • with Config (ingredients + direct)
  • targeting a Squad
  • routed in a Balancer
slide-17
SLIDE 17

Balancers

  • Internet-facing hosts
  • Route traffic to procs in Pools
  • Supports:
  • Nginx
  • Varnish
  • Stingray
  • Pluggable, extensible
slide-18
SLIDE 18

Uptests

  • Sanity check
  • Arbitrary executable
  • Guard routing until proc validated
slide-19
SLIDE 19

Demo

slide-20
SLIDE 20

Getting Started

  • walkthrough
  • Vagrant + Virtualbox
  • Mercurial
  • test suite
  • py.test
slide-21
SLIDE 21

Production Deployment

  • Create hosts with supervisord and proc_publisher.
  • Create a virtualenv for bootstrapping (similar to

development model).

  • Configure and provision production databases.
  • Use bootstrap instance to build/deploy a production

instance of Velociraptor.

slide-22
SLIDE 22

Alternatives

  • ActiveState Stackato (http://www.activestate.com/

stackato)

  • Google Kubernetes (http://kubernetes.io)
  • Ansible Tower (http://www.ansible.com/home)
  • Gilliam (http://gilliam.github.io/)
  • Tsuru (http://docs.tsuru.io/en/latest/)
  • openroku (https://github.com/openruko)
slide-23
SLIDE 23

Questions?

slide-24
SLIDE 24

Why not Docker?

  • Docker is opinionated about its process management

role.

  • Conflicts with use of supervisord.
  • https://github.com/docker/docker/issues/503
slide-25
SLIDE 25

Advanced Features

  • Shell in application context.
  • Volume mounts.
slide-26
SLIDE 26

References

  • Repository https://bitbucket.org/yougov/velociraptor