2015/01/17 Docker Meetup Tokyo 第 4 回での発表資料。 Wantedly が Docker の本番運用から学んだことについて発表しました。 スライドだけだと分かりづらいかもしれません。 以下発表時の動画です。 https://www.youtube.com/watch?v=ia5w5UBic2E
Docker@ ANTELDYW
View Slide
ా ޛ
@spesnova
Wantedly ʹ͍ͭͯ
ݟ͚ͭΔॴΛ࣋ͬͯऔΓΉࣄΛ
150,000 Ϣʔβʔ!5,000 ࣾ!30 ਓ͘Β͍2015/01/17ݱࡏ
2 (2) Rails!4 iOS!1 Android!1 (1) Infrastructure2015/01/17ݱࡏ
ࠓͷ
͔ΒֶΜͩ͜ͱDockerin production
heroku2011 Ն ~ 2014 Ն
Rails on
web!worker!scheduler!on-off
ଞશ෦ AWS
Search!Database!Storage!Image distribute!etc…
Chef Ͱཧ
͋ͱ SaaS
NewRelic!Logentries!Wercker!DNSimple!etc…
GitHub Flow
heroku࣌
heroku࣌σϓϩΠ͍ʢ2ʣεέʔϧ͍ʢ1ʣDyno ͷૢ࡞؆୯
౦ژϦʔδϣϯ͕ͳ͍͚ͩͲ…
Docker2014 Ն ~
ͳ͍ͨ͘͠౦ւ؛ߦͬͯؼͬͯΛ
AWS Ҡߦ + Docker
Rails Λ heroku !͔Β Docker
৭ʑࢼͯ͠:Elastic beanstalkCenturionChef with Docker
͜Εʹͨ͠:Capistrano3ChefPacker
DockerϗετUbuntu 14.04LTS
DockerϨδετϦPrivate Registry (S3)
DockerϨδετϦೝূճආͱՄ༻ੑͷͨΊ!શϗετʹඋ
Capistrano Ͱ“ελςΟοΫ”!ΦʔέετϨʔγϣϯ
σϓϩΠ!ίϯςφͷૢ࡞!ϗετͷૢ࡞!etc…
σϓϩΠDockerfile ͰϏϧυNginx Ͱ৽چίϯςφΓସ͑
Chef ͱ Packer ͰϏϧυʢҰ෦ʣ
DockerϗετAMI!“base” Πϝʔδ!“ruby” Πϝʔδ!etc…
Datadog ͰϞχλϦϯά
Logentries gemͰϩάऩू
ֶΜͩ͜ͱ
DockerϏϧυDockerfileͦͷ··͓͏
Chef+Packer ͰϏϧυ!→Ωϟογϡཉ͍͠!→ඞཁͳπʔϧ͕ଟ͍
Dockerfile ಈతੜ!→ཧղͮ͠Β͍
DockerfileͰॻ͘ͷਏ͍!ෳࡶͳΞϓϦέʔγϣϯ!→͓ͦΒ͘ίϯςφʹ͔ͳ͍!→VM ͖͔
γϯϓϧ͞ΛอͭͨΊͷ੍Λड͚ೖΕΔ
Dockerϗετϗετܰྔʹ͓ͯ͘͠
ϗετAMIম͍ͯΔ!→Կ͔ม͍͑ͨ!→AMIম͘!→docker pull Γ͠!→ϗετ͝ͱ blue-green!→݁ߏେม
ϗετʹ৭ʑೖΕͯΔͱ!୯७ʹཧഒ૿͢Δ
ڈ৭ʑେมͩͬͨ…
ίϯςφͷ͍ํheroku ͔Βֶ΅͏
heroku ͬͯαʔϏεӡ༻ͨ͠ܦݧ͕ྑ͔ͬͨ
one-off ίϯςφͱ͍͏͍ํ!ৗʹ“ࣺͯΒΕΔ”Α͏ʹ͓ͯ͘͠!ઃఆڥมͰ͢!ίϯςφΛࡌͤΔج൫ʹඞཁͳͷ!etc…
ͦͷଞ1 ίϯςφ 1 ϓϩηε!ϩά stdout/stderr !ϞχλϦϯάɾϩάऩूઐ༻ίϯςφͰ!restart Φϓγϣϯ͏!ग़དྷΔ͚ͩશͯίϯςφͰΔ!Private Registry Φεεϝ͠ͳ͍!etc…
CoreOS2015 ౙ ~ ?
ϗετΛܰྔʹ͍ͨ͠
capistrano૿͑Δͱ͍
Rails ίϯςφҎ֎ࡌ͍ͤͨetc…
CoreOS ಋೖʹνϟϨϯδத
WebPରԠը૾αʔόʔ!ίϯςφͷςετnginx-image-server
etcd / fleet Λϕʔεʹͨ͠!ΦʔέετϨʔγϣϯπʔϧkujiraʢࣾπʔϧ։ൃதʣ
ֶΜͩ͜ͱࣗಈΞοϓσʔτ·ͩෆ҆ఆ, off ͕ແ!fleet Ϧιʔεཧ͠ͳ͍ͷͰμΠφϛοΫΦʔέετϨʔγϣϯҙ͖͢!k8s ͷ Pod ͷ֓೦͕ඞཁʹͳΔཧ༝!cloud-config ࠷খݶʹͯ͠ fleet ͏!etc…
ֶΜͰΔ͜ͱίϯςφΦʔέετϨʔγϣϯ!fleet ʹ͓͚ΔϦιʔεཧ!etcd ͷΫϥελӡ༻ϊϋ!systemd ͷৄ͍͍͠ํ!etc…
·ͱΊ໎ͬͨΒγϯϓϧͳํʂ!Docker & CoreOS ָ͍͠ʂ!ҙݟަ͠·͠ΐ͏ʂ
͓ΘΓ
Q&A