Build your own PAAS with Flynn
Jonathan Manuzak
@jonmanuzak
Docker is great…
… but normal people need glue.
Pain-relief As A Service?
The Project
• A modular, open-source PAAS
• Based on Jeff Lindsay’s Dokku
– ‘The smallest PAAS implementation you’ve ever
seen’
• Heavily inspired by Heroku
• Open source project launched in early 2013
• Became not so open in late 2013
• Asked for sponsorship from the community
The People
Jonathan Rudenberg Daniel Siders Jeff Lindsay
The Tech
• A lot of Go goodness
• Service discovery is a core component
• CLI means happy devs and ops teams
• Can run persistent ‘appliances’
• Unix tool philosophy
The Tech
• Layer 0
– flynn-host - The Flynn host service
– discoverd - The Flynn service discovery system
• Layer 1
– flynn-controller - Controller for the management of applications running via
an HTTP API
– flynn-bootstrap - Bootstraps Flynn Layer 1
– gitreceived - An SSH server made specifically for accepting git pushes
– flynn-cli - Command-line Flynn HTTP API client
– flynn-receive - Flynn’s git deployer
– slugbuilder - A tool using Docker and Buildpacks to produce a Heroku-like slug
– Slugrunner - A Docker container that runs Heroku-like slugs produced by
slugbuilder.
– flynn-dev- Flynn development environment in a VM
– strowger -Flynn TCP/HTTP router
– shelf - A simple, fast HTTP file service
– Sdutil - Service discovery utility for systems based on go-discover
– flynn-postgres - Flynn PostgreSQL database appliance
– taffy - Taffy pulls repos and deploys them to Flynn
DEMO
What just happened?
• Push repo to Flynn
• Flynn compiles a slug
• Hosts the slug on a file server
• Launches slug in docker container(s)
• Wires routes and starts load balancer
The slugrunner
• Obligatory Dockerfile
• Runner executes the slug and registers
services
• Heavy Heroku inspiration
– Installs java, python, ruby, git
Model Cement -> Elmers
Rough around the edges
• Difficult to manage remote clusters from CLI
• Web interface needs polish and features
– Can’t delete apps?
• Scaling across multiple hosts isn’t configurable
• Not much fault tolerance
Packed with potential
• Small reusable components
• Not difficult to imagine Flynn managing
containers rather than “apps”
That’s all folks

Atlanta Docker Meetup - 26June14 - Flynn

  • 1.
    Build your ownPAAS with Flynn Jonathan Manuzak @jonmanuzak
  • 2.
    Docker is great… …but normal people need glue. Pain-relief As A Service?
  • 3.
    The Project • Amodular, open-source PAAS • Based on Jeff Lindsay’s Dokku – ‘The smallest PAAS implementation you’ve ever seen’ • Heavily inspired by Heroku • Open source project launched in early 2013 • Became not so open in late 2013 • Asked for sponsorship from the community
  • 4.
    The People Jonathan RudenbergDaniel Siders Jeff Lindsay
  • 5.
    The Tech • Alot of Go goodness • Service discovery is a core component • CLI means happy devs and ops teams • Can run persistent ‘appliances’ • Unix tool philosophy
  • 6.
    The Tech • Layer0 – flynn-host - The Flynn host service – discoverd - The Flynn service discovery system • Layer 1 – flynn-controller - Controller for the management of applications running via an HTTP API – flynn-bootstrap - Bootstraps Flynn Layer 1 – gitreceived - An SSH server made specifically for accepting git pushes – flynn-cli - Command-line Flynn HTTP API client – flynn-receive - Flynn’s git deployer – slugbuilder - A tool using Docker and Buildpacks to produce a Heroku-like slug – Slugrunner - A Docker container that runs Heroku-like slugs produced by slugbuilder. – flynn-dev- Flynn development environment in a VM – strowger -Flynn TCP/HTTP router – shelf - A simple, fast HTTP file service – Sdutil - Service discovery utility for systems based on go-discover – flynn-postgres - Flynn PostgreSQL database appliance – taffy - Taffy pulls repos and deploys them to Flynn
  • 7.
  • 8.
    What just happened? •Push repo to Flynn • Flynn compiles a slug • Hosts the slug on a file server • Launches slug in docker container(s) • Wires routes and starts load balancer
  • 9.
    The slugrunner • ObligatoryDockerfile • Runner executes the slug and registers services • Heavy Heroku inspiration – Installs java, python, ruby, git
  • 10.
  • 11.
    Rough around theedges • Difficult to manage remote clusters from CLI • Web interface needs polish and features – Can’t delete apps? • Scaling across multiple hosts isn’t configurable • Not much fault tolerance
  • 12.
    Packed with potential •Small reusable components • Not difficult to imagine Flynn managing containers rather than “apps”
  • 13.

Editor's Notes

  • #12 It’s pretty rough right now. When I was experimenting with it, there were some WTF moments.
  • #13 It’s pretty rough right now. When I was experimenting with it, there were some WTF moments.