Slide 1

Slide 1 text

The age of flynn

Slide 2

Slide 2 text

I’m Taichi Nakashima Twitter ID is @deeeet

Slide 3

Slide 3 text

http://deeeet.com/writing

Slide 4

Slide 4 text

Yo SOTABLOG

Slide 5

Slide 5 text

rbdock dmux https://github.com/tcnksm/dmux https://github.com/tcnksm/rbdock - docker + tmux = dmux ! - generate Dockerfile for ruby, rails and sinatra cli-init https://github.com/tcnksm/cli-init - TheThe easy way to start building Golang CLI docc https://github.com/tcnksm/docc - docc open your project document

Slide 6

Slide 6 text

DockerͷԠ༻ྫͷ1ͭͰ͋Δ OSSͷPaaSΛߏங͢Δ͜ͱΛ໨ࢦ͢Flynnͷ঺հ TL;DR

Slide 7

Slide 7 text

• Dockerʹ͍ͭͯجຊతͳ஌͕ࣝ͋Δ • DockerΛ৮ͬͨ͜ͱ͕͋Δ Assumes

Slide 8

Slide 8 text

Docker͸͍͢͝ʂͰ΋Docker͚ͩͰ͸ෆे෼ • Dockerͷ࢖͍ํ͸·ͩ·ͩະ஌ͳͱ͜Ζ͕ଟ͍ • Flynnʹ͸Dockerͷ໘ന͍࢖͍ํ͕ͨ͘͞Μ٧·͍ͬͯΔʂ Why flynn at Docker meet up ?

Slide 9

Slide 9 text

• Flynnͱ͸Կ͔ʁ • Flynnͷಛ௃ • FlynnͷΞʔΩςΫνϟʔ • σϞ • ࠓޙͷϩʔυϚοϓ Agenda

Slide 10

Slide 10 text

• DockerΛ࢖ͬͨϚϧνϗετରԠͷPlatform as a Service • Jeff Lindsay (dokkuͷ࡞ऀ) ΍Jonathan Rudenberg • Φʔϓϯιʔε & Ϋϥ΢υϑΝϯσΟϯά • Goݴޠ What is flynn ?

Slide 11

Slide 11 text

Goal of flynn “The product that ops provides to developers” • ؆୯͔ͭҰ؏ͨ͠ํ๏ͰσϓϩΠͰ͖Δ • git pushͰ, Docker containerͰ • ͲΜͳݴޠ/ϑϨʔϜϫʔΫͰ΋ಈ͔ͤΔ • ؆୯ʹεέʔϧͰ͖Δ • ৽ͨʹϊʔυΛ௥Ճ͢Δ͚ͩ

Slide 12

Slide 12 text

dokku (https://github.com/progrium/dokku) • 100ߦఔ౓ͷbashͰॻ͔ΕͨγϯϓϧͳPaaS → flynn͸ϚϧνϗετʹରԠ ! Deis (http://deis.io/) • ≒ flynn • CoreOSΛར༻ͨ͠ϚϧνϗετͷDocker PaaS → flynn͸ϗετOSΛݶఆ͠ͳ͍ OSS PaaS by Docker

Slide 13

Slide 13 text

FlynnͷΞʔΩςΫνϟʔ

Slide 14

Slide 14 text

FlynnͷΞʔΩςΫνϟ͸γϯϓϧ͔ͭཧղ͠΍͍͢Α ͏ʹσβΠϯ͞Ε͍ͯΔ • ΄΅͢΂ͯͷίϯϙʔωϯτ͕DockerίϯςφͰಈ͘ • ίϯϙʔωϯτͷมߋɾೖΕସ͕͑؆୯ • Heroku΍Apache MesosͳͲͷػೳΛγϯϓϧͳܗͰ࠶࣮૷͍ͯ͠Δ Architecture of Flynn

Slide 15

Slide 15 text

Architecture of Flynn layer0 (The Grid) • ௿ҐͳϦιʔεϑϨʔϜϫʔΫ૚ • FlynnͷશͯͷΞϓϦέʔγϣϯ΍αʔϏεͷجૅ • ίϯςφ؅ཧ, αʔϏεσΟεΧόϦʔ, λεΫεέδϡʔϥʔ, ෼ࢄܕKVS layer1 • ߴҐͳίϯϙʔωϯτ૚ • PaaSͷػೳ: Git-receiveɼHeroku BuildpackɼDBɼHTTP Routing • αʔϏε (ΞϓϦέʔγϣϯ)

Slide 16

Slide 16 text

Layer0

Slide 17

Slide 17 text

Overview of Layer0 H D flynn/discoverd flynn/flynn-host https://github.com/flynn/discoverd https://github.com/flynn/flynn-host - αʔϏεσΟεΧόϦʔ - ίϯςφ؅ཧ

Slide 18

Slide 18 text

flynn/discoverd D αʔϏεσΟεΧόϦʔ ػೳ • ϗετͷΫϥελͷߏங • ৽ͨͳϗετͷࢀՃ/཭୤Πϕϯτͷଞϗετ΁ͷ௨஌ • ΫϥελͷϦʔμʔͷબग़ ΫϥΠΞϯτ (flynn/go-discoverd) • Ϋϥελ΁ͷϗετͷొ࿥/࡟আ • ֤ϗετͷΞυϨε΍ϝλ৘ใɼ৽͍͠ϗετͷࢀՃ/཭୤Πϕϯτͷߪಡ όοΫΤϯυ • etcdʢzookeeperʣ

Slide 19

Slide 19 text

ίϯςφ؅ཧ ػೳ • HTTP APIܦ༝ͰϗετͷDockerίϯςφΛ؅ཧ ໾ׂ • Ϧʔμʔ → ΫϥελશମͷϗετͷҰཡͱͦΕΒ͕࣮ߦ͍ͯ͠Δδϣϒͷ؅ཧ → ৽͍͠δϣϒͷొ࿥/ґཔ • ͦͷଞ → Ϧʔμ͔ΒͷδϣϒΛDockerίϯςφͰ࣮ߦ → ࣮ߦதͷδϣϒɼࢦఆ͞Εͨδϣϒͷ৘ใͷฦ౴ flynn/flynn-host D H

Slide 20

Slide 20 text

ίϯςφ؅ཧ δϣϒ • XͷॲཧΛYͱ͍͏DockerΠϝʔδͷίϯςφ্Ͱ࣮ߦ͢Δ flynn/flynn-host D H S flynn/flynn-host/sampi • λεΫεέδϡʔϥϑϨʔϜϫʔΫ • ≒ Apache Mesos

Slide 21

Slide 21 text

HOST A HOST B HOST C https://flynn.io/blog/demo-roadmap

Slide 22

Slide 22 text

HOST A HOST B HOST C H H H https://flynn.io/blog/demo-roadmap

Slide 23

Slide 23 text

HOST A HOST B HOST C H H H D D D https://flynn.io/blog/demo-roadmap

Slide 24

Slide 24 text

HOST A HOST B HOST C H H H D D D https://flynn.io/blog/demo-roadmap R

Slide 25

Slide 25 text

HOST A HOST B HOST C H H H D D D S https://flynn.io/blog/demo-roadmap R

Slide 26

Slide 26 text

HOST A HOST B HOST C H H H D D D S https://flynn.io/blog/demo-roadmap R HOST D

Slide 27

Slide 27 text

HOST A HOST B HOST C H H H D D D S https://flynn.io/blog/demo-roadmap R HOST D H D

Slide 28

Slide 28 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap R

Slide 29

Slide 29 text

Layer1

Slide 30

Slide 30 text

Overview of Layer1 G D flynn/flynn-controller flynn/gitreceived https://github.com/flynn/flynn-controller https://github.com/flynn/gitreceived - HTTP API αʔό - git pushઐ༻ͷSSHαʔό flynn/slugbuilder https://github.com/flynn/slugbuilder - (Herokuతͳ) slugͷ࡞੒ flynn/slugrunner https://github.com/flynn/slugrunner - (Herokuతͳ) slugͷ࣮ߦ C SB SR

Slide 31

Slide 31 text

Overview of Layer1 D flynn/strowger flynn/flynn-cli https://github.com/flynn/strowger https://github.com/flynn/flynn-cli - TCP/HTTP ϧʔλ - ίϚϯυϥΠϯΫϥΠΞϯτ R flynn/flynn-postgres https://github.com/flynn/flynn-postgres - flynn༻ͷPostgreSQL DB

Slide 32

Slide 32 text

flynn/flynn-controller D HTTP APIαʔόʔ ػೳ • Flynn্Ͱಈ͘શͯͷΞϓϦέʔγϣϯ (αʔϏε) ΛHTTP APIͰૢ࡞͢Δ • ≒ Heroku Platform API ΫϥΠΞϯτ (flynn/flynn-cli) • Controllerʹରͯ͠ίϚϯυΛൃߦ͢Δ • ≒ Heroku Toolbelt D C

Slide 33

Slide 33 text

flynn/gitreceived D git pushΛ͏͚Δ͜ͱʹಛԽͨ͠SSHαʔό ಈ࡞ 1. git pushʹΑΓΞϓϦέʔγϣϯͷίʔυ͕σϓϩΠ͞ΕΔ 2. ೝূΩʔͱϢʔβ໊ΛҾ਺ʹ`authchecker`εΫϦϓτ(ೝূ)Λ࣮ߦ͢Δ 3. push͞ΕͨΞϓϦέʔγϣϯͷιʔε (.tar) ΛҾ਺ʹ`receiver`εΫϦϓτΛ࣮ߦ͢Δ D G

Slide 34

Slide 34 text

flynn/flynn-receive gitreceivedΛ࢖ͬͨϢʔβͷೝূͱΞϓϦέʔγϣϯ ͷϏϧυ+࣮ߦ receiver εΫϦϓτ (flynn-controllerʹରͯ͠ҎԼΛཁ੥) • git push͞ΕͨΞϓϦέʔγϣϯΛslugbuilderʹ౉ͯ͠Ϗϧυ͢Δʢslugͷ࡞੒ʣ • ࡞੒͞ΕͨϏϧυΛslugrunnerͰ࣮ߦ͢Δ

Slide 35

Slide 35 text

flynn/slugbuilder D DockerͱBuildpackͰʢHerokuతͳʣslugͷ࡞੒ Herokuͷ৔߹ • buildpackͰΞϓϦέʔγϣϯͷϏϧυ • ϏϧυΛslugʢSquashFS:ѹॖϑΝΠϧγεςϜʣͱͯ͠อଘ flynnͷ৔߹ • Dockerίϯςφ಺ʢΫϦʔϯʂʂʣͰBuildpackΛ࢖ͬͯΞϓέʔγϣϯͷϏϧυ • ϏϧυΛ.tgzܗࣜʹݻΊͯอଘ D SB

Slide 36

Slide 36 text

flynn/slugbuilder D DockerͱBuildpackͰʢHerokuతͳʣslugͷ࡞੒ D SB $ id=$(git archive master | docker run -i -a stdin flynn/slugbuilder) $ docker wait $id $ docker cp $id:/tmp/slug.tgz .

Slide 37

Slide 37 text

flynn/slugrunner D slugbuilderͰ࡞੒͞ΕͨʢHerokuతͳʣslugͷ࣮ߦ D SR Herokuͷ৔߹ • Dyno (LXCϕʔε)ʹslugΛϩʔυ͢Δ • ProcfileΛ΋ͱʹΞϓϦέʔγϣϯΛىಈ͢Δ flynnͷ৔߹ • Dockerίϯςφ಺ʹslug(.tgz)Λϩʔυ͢Δ • ProcfileΛ΋ͱʹΞϓϦέʔγϣϯ (Dockerίϯςφ) Λىಈ͢Δ

Slide 38

Slide 38 text

flynn/slugrunner D slugbuilderͰ࡞੒͞ΕͨʢHerokuతͳʣslugͷ࣮ߦ D SR $ cat myslug.tgz | docker run -i -a stdin -a stdout flynn/slugrunner start web

Slide 39

Slide 39 text

flynn/strowger D TCP/HTTP ϧʔλ ػೳ • ϥϯμϜϩʔυόϥϯγϯάͷͨΊͷϦόʔεϓϩΩγͱͯ͠ಈ࡞ e.g., ෳ਺ͷslugrunnerʹରͯ͠ϥϯμϜʹϦΫΤετΛৼΓ෼͚Δ • αʔϏεσΟεΧόϦʔʹΑΓόοΫΤϯυͰԿ͕ىಈ͔ͨ͠Λৗʹ؂ࢹ vs. HAProxy/nginx • αʔϏεσΟεΧόϦʔʹΑΔಈతͳઃఆมߋ͕Մೳ • HAProxy΍nginx͸ઃఆߋ৽ͷͨΊʹ৽͍͠ϓϩηε͕ඞཁʹͳΔ D R

Slide 40

Slide 40 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap

Slide 41

Slide 41 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22

Slide 42

Slide 42 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22 C

Slide 43

Slide 43 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22 C SB

Slide 44

Slide 44 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22 C SB SR

Slide 45

Slide 45 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22 C SB SR R

Slide 46

Slide 46 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22 C SB SR R port 80/443

Slide 47

Slide 47 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22 C SB SR R port 80/443 DB

Slide 48

Slide 48 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22 C SB SR R port 80/443 DB SR

Slide 49

Slide 49 text

HOST A HOST B HOST C HOST D H H H H D D D D S https://flynn.io/blog/demo-roadmap G port 22 C SB SR R port 80/443 DB SR SR

Slide 50

Slide 50 text

Demo

Slide 51

Slide 51 text

https://flynn.cupcake.io

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

Flynnͷࠓޙ

Slide 54

Slide 54 text

Production؀ڥͰ҆ఆͯ͠ಈ࡞ͤ͞Δ͜ͱΛ࠷༏ઌ • ਺िؒҎ಺ʹFlynn Beta (ࣾ಺؀ڥ޲͚) ΛϦϦʔε • ՆͷऴΘΓʹFlynn 1.0ΛϦϦʔε Roadmap of flynn ༧ఆ (2014.07)

Slide 55

Slide 55 text

"Container Indepnedence” - FlynnͷϢʔβ͸Docker Inc΍ଞͷاۀʹ݁ͼ͚ͭΒΕΔ΂͖Ͱ͸ͳ͍ Future of flynn • DockerҎ֎ͷίϯςφ؅ཧιϑτͰDocker ImageΛར༻͢Δπʔϧ • systemd+nspawn, LXC, libvirt-lxc, Lmctfy, OpenVZ flynn/pinkerton

Slide 56

Slide 56 text

References • Flynn - Open source Platform as a Service powered by Docker • https://flynn.io/ • The Start of the Age of Flynn • http://progrium.com/blog/2014/02/06/the-start-of-the-age-of-flynn/ • Unveiling Flynn, a new PAAS based on Docker • http://jpetazzo.github.io/2013/11/17/flynn-docker-paas/ • 5by5 | The Changelog #99: Flynn, Tent, open source PaaSes and more with Jeff Lindsay and Jonathan Rudenberg • http://5by5.tv/changelog/99 • 5by5 | The Changelog #115: Flynn updates with Jonathan Rudenberg and Jeff Lindsay • http://5by5.tv/changelog/115

Slide 57

Slide 57 text

References • Container Independence • https://flynn.io/blog/container-indepedence • Deis: Evolution of a Docker PAAS • http://gabrtv.github.io/deis-dockercon-2014/#/ • Flynn vs. Deis: The Tale of Two Docker Micro-PaaS Technologies | CenturyLink Labs • http://www.centurylinklabs.com/flynn-vs-deis-the-tale-of-two-docker-micro-paas- technologies/ • Inside Dokku in 5 minutes • http://banyan.me/slides/20140116/slides.html

Slide 58

Slide 58 text

References • Discoverd - r7km/s • http://r7kamura.github.io/2014/06/24/discoverd.html • Flynn Host - r7km/s • http://r7kamura.github.io/2014/06/26/flynn-host.html • Beyond Flynn, or Flynn-as-a-Worldview • http://progrium.com/blog/2014/07/01/beyond-flynn-or-flynn-as-a-worldview/