1. Build your own PAAS with Flynn
Jonathan Manuzak
@jonmanuzak
2. Docker is great…
… but normal people need glue.
Pain-relief As A Service?
3. 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
5. 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
6. 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
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
• Obligatory Dockerfile
• Runner executes the slug and registers
services
• Heavy Heroku inspiration
– Installs java, python, ruby, git
11. 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
12. Packed with potential
• Small reusable components
• Not difficult to imagine Flynn managing
containers rather than “apps”