LINE Developer Meetup #32 https://line.connpass.com/event/83597/
∁ੴྒ / GMO Pepabo, Inc.2018-04-24 LINE Developer Meetup #32ʙΞΫηεස༧ଌΛ༻͍ͯαʔόʔΛࣗಈ૿ݮ͢ΔʮܭըతεέʔϦϯάʯͦͷޙʙ͜Μͳ͜ͱ͋Ζ͏͔ͱɺαʔόʔ༧Ί૿ͯ͠ஔ͍ͨ
View Slide
ιϑτΣΞΤϯδχΞ∁ੴ ྒ / @r_takaishihttps://repl.info/TAKAISHI Ryoٕज़෦ ٕज़ج൫νʔϜ
ΩϟύγςΟϓϥϯχϯά
μϯ͠ͳ͍ෛՙΛ͘͞ແବͳ͘దͳϦιʔεΛஔ͢Δ
!5• ϐʔΫλΠϜʹ͋ΘͤͯΛܾఆ• ϝσΟΞ࿐ग़ɾΩϟϯϖʔϯ࣌ʹݸผʹ૿ઃΞϓϦέʔγϣϯαʔόʔͷ߹@minne
!6ϐʔΫλΠϜʹ͋ΘͤͯΛઃఆ͢Δ߹࣌ؒ ΞΫηεසʢਖ਼نԽࡁʣ αʔόʔ
ΞΫηε͕গͳ͍࣌ؒαʔόʔΛ͍͍ײ͡ʹݮΒ͍ͨ͠
ΞΫηε͕ଟ͍࣌ؒͦΕΛࡹ͚ΔΑ͏ͳαʔόʔʹ͍ͨ͠
ෛՙʹԠͯ͡Φʔτεέʔϧ͢Ε͍͍
!10• ϐʔΫ࣌ͷෛՙॠؒతʹൃੜ͢ΔͨΊɺݕ͔ͯ͠ΒͷεέʔϧΞτͰؒʹ߹Θͳ͍• αʔόʔͷىಈʙαʔϏεΠϯʹ͔͔ΔλΠϜϥά• ԾϚγϯͷىಈ• ىಈ࣌ʹ࠷৽ͷΞϓϦέʔγϣϯίʔυΛσϓϩΠෛՙΛݕͯ͠Φʔτεέʔϧ͢Δख๏
ͳ͔ͳ͔͍͠ʜ
ͱࢥ͍ͬͯͨΒɺͷ಄ʹ
͍͍ͷ͋ΔΑ…ʂ
ࡾݚڀॴһʹΑΔఏҊख๏
ΞΫηεස༧ଌΛ༻͍ͨܭըతεέʔϦϯά
͜Ε·Ͱੵ͖ͯͨ͠ΞΫηεϩάΛͬͯະདྷͷΞΫηεසΛ༧ଌ͢Δ
ࣄલʹΞΫηεස͕Θ͔ΕɺඞཁͳαʔόʔΘ͔Δ
• minneͰΞΫηεϩάɾߦಈϩάΛอଘ͍ͯ͠Δ• ྫ͑աڈ1ϲ݄ؒɺ1࣌ؒ୯ҐͷΞΫηεස͕Θ͔Δ• ͜ͷ࣌ܥྻσʔλΛ༻͍ͯɺະདྷͷΞΫηεසΛ༧ଌ͢Δ• ࣄલʹΞΫηεස͕Θ͔ΕɺॲཧՄೳͳʹ૿ݮͰ͖Δ!18Ͳ͏͍͏ͷ͔ͬ͘͟Γ
• minneͰΞΫηεϩάɾߦಈϩάΛอଘ͍ͯ͠Δ• ྫ͑աڈ1ϲ݄ؒɺ1࣌ؒ୯ҐͷΞΫηεස͕Θ͔Δ• ͜ͷ࣌ܥྻσʔλΛ༻͍ͯɺະདྷͷΞΫηεසΛ༧ଌ͢Δ• ࣄલʹΞΫηεස͕Θ͔ΕɺॲཧՄೳͳʹ૿ݮͰ͖Δ!19Ͳ͏͍͏ͷ͔ͬ͘͟Γࠓ͢ͷɺಛʹ͜ͷ෦
!20ϩάऩू෦͕ؾʹͳΔํεϥΠυΛνΣοΫʂIUUQTTQFBLFSEFDLDPNNPOPDISPNFHBOFQFQBCPMPHJOGSBTUSVDUVSFCJHGPPU
!21༧ଌʹ͍ͭͯؾʹͳΔํϖύݚϒϩάΛνΣοΫʂIUUQTSBOEQFQBCPDPNBSUJDMFJPUNJZBLFZ
ͱ͍͏Θ͚Ͱ࡞͍ͬͯͧ͘
!23• ΞΫηεස༧ଌ܅ʢϖύݚʣ• αʔόʔܭࢉɾ૿ݮ܅ʢminneʣඞཁͳίϯϙʔωϯτԿ͔ʁ
!24͜Ε͕ܭըతεέʔϦϯάͷߏͩʂcronRedis ΞΫηεස༧ଌ܅(Sidekiq)IaaS API Endpoint༧ଌΞΫηεͷऔಘఆظ࣮ߦ αʔόʔܭࢉɾ૿ݮ܅(hakata)ඞཁαʔόʔΛܭࢉɾ૿ݮ༧ΞΫηεසΛอଘ
!25ܭըతεέʔϦϯάͷྲྀΕ࣌ ࣌ ࣌ ࣌ຖ0࣌ա͗ɿ1ͷΞΫηεසΛ༧ଌ͢ΔΑຖ࣌40࣌ա͗ɿ࣍ͷ1࣌ؒͷΞΫηεස༧ଌ͔ΒαʔόʔΛ૿ݮ͢ΔΑ
• ༧ଌΞΫηεස(ϦΫΤετ/࣌)Λϕʔεͱ͢Δ• αʔόʔ͕ৗʹҰఆͷεϧʔϓοτ(rpm)ΛอͭΛࢦ͢• εϧʔϓοτظ(rpm)NewRelicͷϝτϦΫε͔Βࢉग़!26ඞཁαʔόʔͷܭࢉඞཁ༧ଌΞΫηεසεϧʔϓοτظ
!27• ༧ଌΞΫηεසɿ60,000 ϦΫΤετ/࣌• εϧʔϓοτظɿ1,000 rpmαʔόʔܭࢉͷྫඞཁ༧ଌΞΫηεසεϧʔϓοτظ
• ʮΞΫηεස༧ଌʯͱʮϦιʔεྔܭࢉɾ૿ݮʯͷ2͕ͭඞཁ• ΞΫηεස༧ଌ1ʹ1ճ• Ϧιʔε૿ݮͷλΠϛϯά1࣌ؒʹ1ճ• Ϧιʔεྔܭࢉ༧ଌͱεϧʔϓοτظΛݩʹܭࢉ!28ܭըతεέʔϦϯάͷઃܭ·ͱΊ
ධՁɾ՝
!30ΞϓϦέʔγϣϯαʔόʔͷCPU༻ܭըతεέʔϧɿແޮܭըతεέʔϧɿ༗ޮ
!31ΞϓϦέʔγϣϯαʔόʔͷભҠܭըతεέʔϧɿແޮ ܭըతεέʔϧɿ༗ޮ
݁ߏ͍͍͔Μ͡ʹಈ͍͕ͨʜ
͍͔ͭ͘՝
!34• ༧ଌͷਫ਼ԼʹΑΔϦιʔεෆ• ༧ଌʹݱΕͳ͍ΞΫηεͷରԠ• εέʔϧΞτ͕ؒʹ߹Θͳ͍έʔε՝
͜͜·Ͱͷ
ผ࡞ۀͷͨΊɺҰ࣌తʹఀࢭ͍ͯͨ͠
݄ࠒ͔Βվળʹணख
εέʔϧΞτ͕ؒʹ߹Θͳ͍
!39• αʔόʔىಈ࣌ʹΞϓϦέʔγϣϯͷίʔυΛऔಘɾల։͓ͯ͠ΓɺϘτϧωοΫͱͳ͍ͬͯΔ• ࠷৽Πϝʔδ ≠ ࠷৽ΞϓϦ• ΞϓϦͷϥΠϑαΠΫϧ ≠ αʔόʔͷϥΠϑαΠΫϧͳͥɺεέʔϧΞτ͕ؒʹ߹Θͳ͍ͷ͔ʁ
!40ϥΠϑαΠΫϧCentOS minimal www wwwbuildminimal imagebuildwww imageimage lifecycle server lifecycleinstall puppetapply puppetdeploy minne-applaunchwww serverwwwdeploy minne-appterminatewww serverdeletedreleaseminne-app
!41• ࠷৽ΞϓϦ = ࠷৽ΠϝʔδΛࢦ͢• ϦϦʔε࣌ʹΠϝʔδΛϏϧυ͠ɺ࠷৽ͷΞϓϦΛؚΉΑ͏ʹ͢ΔϦϦʔε࣌ʹΠϝʔδΛϏϧυ͢Δ
!42• baseΠϝʔδͷϏϧυ• wwwΠϝʔδͷϏϧυ• wwwΠϝʔδͷݕࠪ• αʔόʔͱͯ͠ىಈ͢Δͷ͔ʁ• ىಈͨ͠ޙɺͪΌΜͱ֤ϓϩηε͕ಈ͍ͯΞΫηεͰ͖Δ͔ʁΠϝʔδϏϧυʹඞཁͳͷ…ʁ
!43͍͍͔Μ͡ʹΠϝʔδΛϏϧυͯ͘͠ΕΔͭhakataworkflow- build- push- verifynotifyrunखݩ͔Βssh࣮ͯ͠ߦΞϓϦͷϦϦʔε࣌ʹϏϧυIaaCͷϦϦʔε࣌ʹϏϧυ
࣮ͯ͠ɺಈ࡞Λ֬ೝ࠷৽ΞϓϦ࠷৽Πϝʔδ✨
ܭըతεέʔϦϯάΛ࠶Քಇͯ͠ɺվળ͞Ε͔ͨݕূͨ͠
!47• ΠϝʔδͷࣗಈϏϧυʹࢥͬͨΑΓ͕͔͔࣌ؒͬͨ• ࠶Քಇ͠Α͏ͱͨ͠Β͍Ζ͍Ζಈ͔ͣbug fix࠶Քಇ͜ͷMeetupʹؒʹ߹Θͣ…
ࠓޙʹ͝ظ͍ͩ͘͞ʂ
·ͱΊ
!50• ΞΫηεස༧ଌΛ༻͍ɺΞΫηε͕૿͑ΔલʹΦʔτεέʔϧ• ϖύݚͱ࿈ܞɾ୲͠ɺ࣮ݱ• ࢼݧӡ༻͠ɺ՝Λચ͍ग़ͨ͠• ͕ɺվળ·ͰͰ͖ͣ…·ͱΊ
Α͔ͬͨ͜ͱ
!52• ϖύݚͱ࿈ܞ͠ɺ৽ٕज़Λ࣮ࡍͷαʔϏεʹಋೖ• Φʔτεέʔϧʹ͍ͭͯͷݟΛಘΔ͜ͱ͕Ͱ͖ͨΑ͔ͬͨ͜ͱ
!53• Έͷ൚༻Խ• ࠓճIaaS্Ͱ࡞͕ͬͨɺΈࣗମଞͰ͑Δ• ྫɿKubernetesͷΑ͏ͳίϯςφج൫ͷల։• ༧ଌʹݱΕͳ͍ΞΫηεͷରԠ• ෛՙΛτϦΨʔͱͨ͠εέʔϧΞτࠓޙ͍͖͍ͬͯͨ͜ͱ
We are hiring!ϗεςΟϯάαʔϏεͰ৽ٕज़Λ׆༻ΣϒαʔϏεͷ4JUF3FMJBCJMJUZ&OHJOFFSJOHશࣾతͳٕज़ج൫Λ͕ͬͭΓࣄۀΛࠩผԽͰ͖Δٕज़Λ࡞Γग़͍ͨ͠ FUDʜ