Upgrade to Pro — share decks privately, control downloads, hide ads and more …

一休での開発における改善の取組み /devops-at-ikyu

一休での開発における改善の取組み /devops-at-ikyu

4/28(金) にDevOps推進協議会 で講演したときの資料です。

kentana20

April 28, 2017
Tweet

More Decks by kentana20

Other Decks in Technology

Transcript

  1. About me • ాத ݈հ • @kentana20 • 2006೥5݄͔ΒҰٳ •

    ॓ധαʔϏε։ൃ(9೥)
 →γεςϜຊ෦(2೥)

  2. αʔϏε։ൃͷମ੍ ॓ധࣄۀຊ෦ Ϩετϥϯ ࣄۀຊ෦ ৽نࣄۀຊ෦ γεςϜຊ෦ &OHJOFFS Designer Sales Marketing

    αʔϏεڞ௨ͷ։ൃج൫ʢೝূͳͲʣɺ Πϯϑϥɺσʔλ෼ੳج൫ɺ৘γε͸ γεςϜຊ෦͕୲౰ &OHJOFFS
  3. DevͱOps ॓ധࣄۀຊ෦ Ϩετϥϯ ࣄۀຊ෦ ৽نࣄۀຊ෦ γεςϜຊ෦ %FW %FW %FW 0QT

    %FW • ݖݶ෼ঠ͸͋Δ΋ͷͷɺ͔ͳΓͷݖݶΛ
 ։ൃΤϯδχΞʹ෇༩ • ຊ൪αʔόɺDB΁ͷΞΫηε • ೔ʑͷϦϦʔεӡ༻ etc.. • ຊ౰ʹॏཁͳ෦෼ͷΈΛอޢ • ݸਓ৘ใɺܾࡁɾਫ਼ࢉʹؔΘΔػೳͳͲ
  4. ౰࣌ͷঢ়گ • ձࣾن໛ • ձࣾن໛͸໿120໊ɺ͏ͪ։ൃϝϯόʔ͸40໊ऑ • ։ൃ૊৫ • ॓ധ: 20໊ऑ

    / Ϩετϥϯ: 12~3໊ / Πϯϑϥ: 5໊ • ֤෦໳Ͱύʔτφʔ(֎஫)Λ࠾༻͠ɺϓϩύʔ1໊ʹରͯ͠ৗறͷ ύʔτφʔ2~3໊ͱ͍͏ମ੍͕ओͩͬͨ
  5. ౰๊͍࣌͑ͯͨ՝୊ • Ϣʔβ΁Ձ஋Λఏڙ͢Δεϐʔυ͕௿Լ͍ͯͨ͠ • ඼࣭௿Լ / ։ൃޮ཰௿Լ / ӡ༻ෛՙ /

    ݖݶ෼ঠ • αʔϏε։ൃ/ӡ༻ʹ௥ΘΕΔ೔ʑͰɺࣗಈԽΛ͸͡Ίͱͨ͠ӡ༻վળ΍
 ৽͍ٕ͠ज़ɾαʔϏεͷಋೖ͕௥͍͔ͭͳ͍ • ӡ༻ෛՙ͕ঃʑʹ্͕Γɺஈʑͱ։ൃ଎౓͕௿Լ • ϓϩύʔΑΓ΋ύʔτφʔʹ։ൃφϨοδ͕ཷ·Γɺٕज़͕ۭಎԽ • DevͱOpsͷݖݶ෼ঠ͕ਐΈʮDev͕Ͱ͖ͳ͍͜ͱʯ͕૿Ճ
  6. • πʔϧ • ϝʔϧɺ಺ઢɺRedmine • ࿮૊Έ • γεςϜि࣍ϛʔςΟϯά • ݸʑͷҙࣝʹґଘͨ͠৘ใڞ༗

    • ॓ധɺϨετϥϯɺΠϯϑϥͱίϯςΩετ͕ ҟͳΔϝϯόʔͰͷத਎ͷബ͍ϛʔςΟϯά • ਐߦதͷҊ݅΍ϓϩδΣΫτͷ;Γ͔͑ΓͳͲ ΛΧδϡΞϧʹڞ༗͢Δ৔͕ͳ͍ Bad
  7. ৘ใڞ༗ج൫(After) • πʔϧ • Hipchat (ݱࡏ͸Slack) / Qiita Team •

    ࿮૊Έ • ேձ / Χϯόϯ / ;Γ͔͑Γ(KPT) • ΨΠυϥΠϯ • ֤πʔϧ΍࿮૊Έʹରͯ͠ΨΠυϥΠϯΛ੔උ
  8. ৘ใڞ༗ج൫(After) • πʔϧ • Hipchat (ݱࡏ͸Slack) / Qiita Team •

    ࿮૊Έ • ேձ / Χϯόϯ / ;Γ͔͑Γ(KPT) • ΨΠυϥΠϯ • ֤πʔϧ΍࿮૊Έʹରͯ͠ΨΠυϥΠϯΛ੔උ • ✔ ΨΠυϥΠϯʹԊͬͨ࢓༷ͷڞ༗ • ✔ ίϯςΩετ͕ἧͬͨνʔϜຖʹேձΛ࣮ࢪ ͠ɺ಺༰ਂٞ͘࿦Ͱ͖ΔΑ͏ʹ • ✔ Qiita TeamʹΑͬͯҊ݅࢓༷ͷڞ༗͕Χδϡ ΞϧʹՄೳʹ Clear!
  9. σϓϩΠϑϩʔ(Before) ϩʔΧϧ ؀ڥ 3FQPTJUPSZ 4VCWFSTJPO $IFDLPVU $PNNJU 5BH 4UBHJOH؀ڥ %FQMPZ

    ຊ൪؀ڥ %FQMPZ ϩʔΧϧ ؀ڥ 5FTU ΄΅खಈ ΤϯδχΞ͕౰൪(िସΓ)Ͱ࣮ࢪ खಈ ΤϯδχΞ͕෼୲Ͱ࣮ࢪ
  10. σϓϩΠϑϩʔ(Before) ϩʔΧϧ ؀ڥ 3FQPTJUPSZ 4VCWFSTJPO $IFDLPVU $PNNJU 5BH 4UBHJOH؀ڥ %FQMPZ

    ຊ൪؀ڥ %FQMPZ ϩʔΧϧ ؀ڥ 5FTU ΄΅खಈ ΤϯδχΞ͕౰൪(िସΓ)Ͱ࣮ࢪ खಈ ΤϯδχΞ͕෼୲Ͱ࣮ࢪ • ద੾ͳλΠϛϯάͰͷϨϏϡʔ͕ࠔ೉ • σϓϩΠ࡞ۀɺखಈςετͷෛՙେ • ӡ༻ෛՙ͕ߴ͍͜ͱΛཧ༝ʹϦϦʔεස౓͸
 ि2ճ͔Β1ճ΁ Bad
  11. σϓϩΠϑϩʔ(Before) ϩʔΧϧ ؀ڥ 3FQPTJUPSZ 4VCWFSTJPO $IFDLPVU $PNNJU 5BH 4UBHJOH؀ڥ %FQMPZ

    ຊ൪؀ڥ %FQMPZ ϩʔΧϧ ؀ڥ 5FTU ΄΅खಈ ΤϯδχΞ͕౰൪(िସΓ)Ͱ࣮ࢪ खಈ ΤϯδχΞ͕෼୲Ͱ࣮ࢪ • ✔ Pull Requestϕʔεͷ։ൃͰॊೈʹϨϏϡʔ Մೳͳ։ൃϑϩʔ • ✔ ఆܕͷσϓϩΠɺςετ͸ࣗಈԽ • ✔ ϦϦʔεස౓͸ि1ճ → ि2ճʹUp Clear!
  12. ϦϦʔεલͷσϞɾϨϏϡʔ ϩʔΧϧ ؀ڥ ։ൃ ςετ σβΠϯ ϨϏϡʔ σϞ ϦϦʔε ϩʔΧϧ

    ؀ڥ Engineer Marketing / CustomerService ର໘ͰϩʔΧϧ؀ڥΛ࢖ͬͯ σϞɺϨϏϡʔ
  13. ϦϦʔεલͷσϞɾϨϏϡʔ ϩʔΧϧ ؀ڥ ։ൃ ςετ σβΠϯ ϨϏϡʔ σϞ ϦϦʔε ϩʔΧϧ

    ؀ڥ Engineer Marketing / CustomerService ର໘ͰϩʔΧϧ؀ڥΛ࢖ͬͯ σϞɺϨϏϡʔ • ର໘ͰͷϨϏϡʔɾσϞ • ඇಉظʹ΍ΓͱΓͰ͖ͳ͍ • ϩʔΧϧ؀ڥͷ৴པੑ • ςετ༻ͷࢿࡐ͕࢒͍ͬͯͨΓɺίϛοτ࿙ΕΛ ݕ஌Ͱ͖ͳ͍ • ΤϯδχΞಉ࢜ͷίʔυϨϏϡʔ • ϨϏϡΞʔ͕ϩʔΧϧͰର৅ͷϒϥϯνΛ Checkout(ϨϏϡʔෛՙߴ͍) Bad
  14. ϒϥϯνσϓϩΠ(σϞ༻؀ڥ) • ։ൃதͷϒϥϯνΛࢦఆͯ͠ผ؀ڥʹσϓϩΠͰ͖Δπʔϧ • ༻్ • ίʔυϨϏϡʔ࣌ͷಈ࡞֬ೝ؀ڥͱͯ͠ • Marketing, CustomerService޲͚ͷσϞ༻؀ڥͱͯ͠

    • Remote΁pushࡁͷࢿࡐΛ࢖ͬͯ؀ڥΛߏங͢ΔͷͰίϛοτ࿙Εͷ
 ϦεΫ΋ͳ͘ͳΔ • ✔ ඇಉظͰσϞɺಈ࡞֬ೝ͕Մೳʹ • ✔ ϩʔΧϧ؀ڥΛ࢖ΘͣʹσϞ͕Ͱ͖Δ • ✔ ϨϏϡΞʔͷෛՙܰݮ Clear!
  15. ౰࣌Α͋ͬͨ͘ޫܠ Engineer CustomerService ͳΜ͔͜ͷϖʔδʹΞΫηε ͢ΔͱΤϥʔʹͳΔΜ͚ͩͲ... ͪΐɺௐࠪ͠·͢! • Dev • ΞϓϦέʔγϣϯͷҟৗΛݕ஌͢Δ࢓૊Έ͕ෆे෼

    • αʔϏε͕݈߁Λҡ͍࣋ͯ͠Δͷ͔ɺͲ͔͜ҟৗ͕͋Δ ͷ͔Λ೺ѲͰ͖͍ͯͳ͍ • Ops • ΞΫηε਺ɺෛՙঢ়گͷϞχλϦϯά͕े෼ʹͰ͖͍ͯͳ ͍ Bad
  16. ౰࣌Α͋ͬͨ͘ޫܠ Engineer CustomerService ͳΜ͔͜ͷϖʔδʹΞΫηε ͢ΔͱΤϥʔʹͳΔΜ͚ͩͲ... ͪΐɺௐࠪ͠·͢! • Dev • ✔

    ΞϓϦέʔγϣϯͷҟৗΛϦΞϧλΠϜʹݕ஌Մೳʹ • Ops • ✔ αʔϏεʹඞཁͳϝτϦΫεΛμογϡϘʔυʹ·ͱΊ ͯϞχλʹ౤Ө Clear!
  17. ౰࣌ͷঢ়گ(2016೥) • ։ൃ૊৫ͷมԽ • νʔϜຖͷ໾ׂ(ϛογϣϯ)͕ΑΓ໌֬Խ • ॓ധ: UI/UXɺύʔτφʔΞϥΠΞϯεɺٕज़ϓϥοτϑΥʔϜ • Ϩετϥϯ:

    UI/UXɺΞϓϦɺϏδωεϑΝ΢ϯσʔγϣϯ • ٕज़໘Ͱͷվળ • Ϋϥ΢υҠߦʹ޲͚ͯେ͖͘଩Λ੾ͬͯXaaSΛϑϧ׆༻
  18. σʔλ෼ੳج൫(Before) • ETLॲཧ(جװσʔλϕʔε΍GoogleAnalytics͔Β෼ੳʹඞཁͳσʔλΛந ग़ →෼ੳ༻σʔλϕʔεߏங) • ߋ৽ස౓: 1ճ/೔ • σʔλ:

    2೔஗Ε • खಈ࡞ۀଟ͘ɺߋ৽࡞ۀʹޕલத͍ͬͺ͍͔͔Δ • ෼ੳϨϙʔτ • Excelϕʔε͕ओ • खಈ࡞ۀ͕ଟ͘ɺࣗಈԽ͍ͯ͠Δ෦෼΋ͨ·ʹ ࣦഊ͢Δ • ࢪࡦ࣮ࢪ͸ޕޙҎ߱ • ExcelͰՄࢹԽ Bad
  19. ܒ໤ • σʔλͷஔ͖৔ɺՄࢹԽͷํ๏ΛΦʔϓϯʹ͠ ͯ୭Ͱ΋σʔλநग़͕ߦ͑ΔΑ͏ʹ • ❌ XX ͞Μʹґཔͯ͠σʔλΛग़͢ • ⭕

    σʔλΛݟ͍ͨਓ͕ࣗ෼Ͱͭ͘Δ • ⭕ ࡞ͬͨσʔλ͸URL(Re:dash)Ͱڞ༗ σʔλΛຽओԽ
  20. ݱࡏͷঢ়گ • ։ൃ૊৫ͷมԽ • ֤αʔϏεɺKPIͷ੹೚ऀʹΤϯδχΞɺσβΠφʔΛूΊͯ
 ʮ໨తܕͷ૊৫ʯʹҠߦ • νʔϜ͝ͱͷ੹຿ΛΑΓ໌֬ʹ • ٕज़໘Ͱͷվળ

    • Ϋϥ΢υԽɺXaaSಋೖʹΑͬͯվળ͕ਐΈɺϨΨγʔίʔυ΍γεςϜΞʔΩ ςΫνϟͳͲγεςϜຊջ෦෼ͷ՝୊ʹ޲͔͑Δঢ়گʹ • αʔϏε/ϓϩμΫτͷ՝୊ʹԊͬͨՕॴͰͷվળ΁ϑΥʔΧε
  21. ·ͱΊ • ໾ׂ΍ܖ໿ܗଶͷִͨΓ͕ബ͘ͳͬͨ • ։ൃ૊৫ͷมԽͱٕज़໘ͰͷվળΛܧଓͨ݁͠Ռɺʮ։ൃ(Dev)ͱӡ༻(Ops)ʯ΍ ʮϓϩύʔͱύʔτφʔʯͱ͍ͬͨ۠෼͚͕ബ͘ͳͬͨ • վળ͸ܧଓతʹ • Ұ଍ඈͼͰ΍Ζ͏ͱͯ͠΋੒Ռʹ͸ͭͳ͕Βͳ͍ͷͰ஍ಓʹίπίπ

    • 1ਓͰ΍ΔͷͰ͸ͳ͘ɺ֤ϝϯόʔ͕ಘҙͳ͜ͱΛ΍Δ • αʔϏε/ϓϩμΫτͷ੒Ռʹͭͳ͕Δ͔͕࠷΋ॏཁ • ٕज़తʹਖ਼ͯ͘͠΋ఏڙ͢ΔαʔϏεʹޮ͔ͳ͚Ε͹੒Ռͱͯ͠͸ෆे෼