サービス開発と健全なプロダクトメンテナンスを開発チームで持続的に取り組む / Developers Boost KANSAI

81e8ac1d3a766b3d9880cd08d9a7aba4?s=47 astj
June 15, 2019

サービス開発と健全なプロダクトメンテナンスを開発チームで持続的に取り組む / Developers Boost KANSAI

81e8ac1d3a766b3d9880cd08d9a7aba4?s=128

astj

June 15, 2019
Tweet

Transcript

  1. αʔϏε։ൃͱ ݈શͳϓϩμΫτϝϯςφϯεΛ ։ൃνʔϜͰ࣋ଓతʹऔΓ૊Ή 2019/06/15 Developers Boost KANSAI Asato WAKISAKA (astj)

  2. id:astjʢ͋͞ͱ͐͡ʔʣ ͸ͯͳ ΞϓϦέʔγϣϯΤϯδχΞ ৽ଔ (2014/04) Mackerel ։ൃνʔϜ (2016/08~) Mackerel ςοΫϦʔυ

    (2018/05~) มભ: ͸ͯͳϒοΫϚʔΫ‎͸ͯͳϒϩά ➡डୗϓϩδΣΫτ➡Mackerel
  3. Mackerel

  4. None
  5. None
  6. None
  7. • 2014೥9݄ਖ਼ࣜϦϦʔε • ͔ͦ͜ΒຖिʢຖӦۀिʣͷ৽ػೳϦϦʔε • 200+िଓ͚·ͨ͠ • Ҏ߱΋ΞΫςΟϒʹػೳ։ൃΛܧଓ https://mackerel.io/ja/blog/entry/announcement/20180705

  8. • αʔόʔαΠυ: Scala / Go • ϑϩϯτΤϯυ: TypeScript + AngularJS

    • ػցֶशαϒγεςϜ: Python • AWS Lambda : NodeJS ੝୔ࢁ
  9. ຊ೔ͷத਎ • ࠓ೔࿩͢ϓϩμΫτϝϯςφϯεͷఆٛ • Mackerel ։ൃνʔϜͰͷՁ஋؍ • Mackerel ։ൃνʔϜͷऔΓ૊Έ

  10. ϓϩμΫτϝϯςφϯε

  11. • ʢΤϯδχΞͷ΍Δ͜ͱͷ͏ͪʣ • ϦϑΝΫλϦϯά • ґଘιϑτ΢ΣΞͷߋ৽ • Πϯϑϥɺϛυϧ΢ΣΞͷߋ৽ ʮػೳ։ൃҎ֎͍͍ͩͨશ෦ʯ

  12. ٕज़తෛ࠴ͷ͜ͱʁ

  13. ์ஔͯ͠෗ΒͤΔͱٕज़తෛ࠴ ੵۃతʹऔΓ૊Ήͱརӹ͕͋Δ

  14. Ձ஋؍

  15. ৽͍͠෺͸ྑ͍

  16. ιϑτ΢ΣΞ͸৽͘͢͠Δͱྑ͘ ͳ͍ͬͯ͘ͱࢥ͍ͨ͘ͳ͍Ͱ͔͢ʁɹ ࣮ͦͯ͠ࡍଟ͘ͷ৔߹͸੒Γཱͭ͸ͣ

  17. ৽͍͠෺͸ྑ͍ • ػೳͷ௥Ճ • ෆ۩߹ͷमਖ਼
 • ੑೳͷ޲্
 • etc…

  18. όʔδϣϯΞοϓ͕ۜͷ஄ؙ ……ʹͳΔ͜ͱ΋͋Δ

  19. • Scala ͷίϯύΠϧ͸஗͍ͱݴΘΕΔ • ࣮ࡍ Mackerel Ͱ΋೰·͞Ε͖ͯͨ

  20. • Scala 2.11.12 ➡ 2.12.6 • ϑϧίϯύΠϧ 30෼ ➡ 5෼൒

    • CI 40~50෼ ➡ 16෼ • push ͢Δͨͼʹ͜Ε͚ͩ଴ͬͯͨ… • ࠓࢥ͏ͱੲͷॴཁ࣌ؒϠό͍
  21. ৽͘͢͠Δඞཁ͋ΔΜͰ͢ʁ ʮࠓͷ··Ͱ໰୊ͳ͘ಈ͍ͯΔ͡ΌΜʁʯ ʮมߋରԠ͢Δͷ΋खؒͩ͠…ʯ ʮ͏ͪͷίϯύΠϧ30෼͔͔Βͳ͍ΜͰ…ʯ ʮಈ࡞֬ೝ͢Δͷେมʂʯ

  22. ͦΕ΋Θ͔Δ

  23. ͕

  24. ྑ͠ѱ͠Ͳ͜Ζ͡Όͳ͍ྫ • όά • ηΩϡϦςΟ໰୊ • αϙʔτऴྃ

  25. ಀ͛੾ΕΔ͔Ͳ͏͔ • ख͕཭ΕΔ·Ͱಀ͛੾ΕͨΒউͪ • ʮೲ඼ͯ͠׬ྃʯʮӡ༻ظ͕ؒݶఆʯ͸༗ར • ʮಀ͛੾ΕΔํʹṌ͚·͔͢ʁʯ • ಀ͛੾Δલʹߋ৽͕ආ͚ΒΕͳ͘ͳͬͨΒʁ

  26. ߋ৽ͷखؒ • ಥવͷେ͖ͳมߋ͸ඇৗʹ͠ΜͲ͍ʂʂ • ܭըతʹ৽͍ͯ͘͘͠͠ͱେδϟϯϓճආ • ʢܭըతʹ΍ͬͯ΋݁ہେδϟϯϓͷ͜ͱ΋…ʣ

  27. => ϦεΫϔοδͱͯ͠ͷ ܭըతͳߋ৽ ʢͱ͍͏໘΋͋Δʣ

  28. ߋ৽ͷखؒ • ಥવͷେ͖ͳมߋ͸ඇৗʹ͠ΜͲ͍ʂʂ • ܭըతʹ৽͍ͯ͘͘͠͠ͱେδϟϯϓճආ • ʢܭըతʹ΍ͬͯ΋݁ہେδϟϯϓͷ͜ͱ΋…ʣ

  29. • ීஈͷ։ൃʹ͓͚ΔՁ஋؍Λ౿ऻ͢Δ • খཻ͍͞౓ͰͷϦϦʔεΛੵΈॏͶ͍ͯ͘ • ڊେͳϓϧϦΫΤετ࡞Βͣ෼ׂ͍ͯ͘͠ • ཁ͸มʹಛผѻ͍͢Δ͜ͱͳ͍Ͷͱ͍͏࿩

  30. ޻਺ͳ͍໰୊ • ػೳ։ൃ༏ઌ͞Εͯ͠·͏ɺͳͲ • ։ൃܭըଆͱՁ஋؍Λڞ༗Ͱ͖Ε͹ྑ͍ • Mackerel ͷ৔߹͸ΤϯδχΞ͕ଟ͍ • ͜ͷղ͸͋·Γ࣋ͬͯͳ͍Ͱ͢……

  31. None
  32. ࣮ࡍͷऔΓ૊Έ

  33. •৽ͨʹߟ͑Δ͜ͱ / ൑அ͢Δ͜ͱ͕ग़ݱ •վΊͯνʔϜঢ়گΛ࠶֬ೝ ςοΫϦʔυʹͳͬͨ (2018/05)

  34. લఏ • εΫϥϜ • 2िؒεϓϦϯτ • εϓϦϯτͷ౓ʹόοΫϩάΛؔ܎ऀͰ੔ཧ • ௕ظతʹ͸̏ϲ೥ϩʔυϚοϓ •

    ̏ϲ݄͝ͱʹݟ௚͠
  35. • খ͍͞λεΫʢ1εϓϦϯτ͘Β͍ʣ • XXX ͷίʔυϦϑΝΫλϦϯά͍ͨ͠ • ͋ͷαʔόʔΛೖΕସ͑ͳ͍ͱ͍͚ͳ͍ • ͓͓͖ͳ࿩୊ •

    Play Framework ͷόʔδϣϯΞοϓ • Redis Λ ElastiCache ʹҠߦ͢Δ ৭ʑͳϓϩμΫτϝϯςφϯε
  36. ݩʑ (astj TL ब೚௚ޙ)

  37. Α͍͜ͱ • ΍Δ΂͖͜ͱ͸ΈΜͳͷ೴ཪʹ֓Ͷ͋Δ • ϝϯςφϯεʹϦιʔεΛׂ͖͍ͨҙࣝ͸͋Δ • ʮ৽͍͠෺͸ྑ͍ʯ • ΤϯδχΞʹݶΒͣνʔϜϨϕϧͰ࣋ͬͯΔ •

    ҙࣝͷߴ͞ͱؾ߹ͰͦΕͳΓʹਐΜͰΔ
  38. ͓ࠔΓ • λεΫʹ૊৫తʹऔΓ૊ΉྲྀΕ͕ະ੔උ • ݸਓͷؤுΓۦಈ͕ଟ͍ • ҙࣝͷߴ͞ͱؾ߹པΈ • ࣋ଓੑ͕ͳ͍ʢؾ߹͕࣋ͯ͹࣋ଓ͢Δ…ʣ

  39. • ΞϓϦ͸ TL, SM, PO ͰόοΫϩάͱͯ͠੔ཧ • ىථ͸ issue Ͱ୭Ͱ΋Ͱ͖Δ

    • ੔ཧ͢ΔձͰ͓ΓΌͬͱܾΊͯͨ • Πϯϑϥ͸ SRE ʹλεΫ؅ཧ͓೚ͤ খ
  40. • ϩʔυϚοϓʹج൫ܥλεΫͱͯ͠Ճ͑Δ • SM ͱ PO ͕ issue ͔ΒงғؾͰर͍ͬͯͨ େ

  41. • ΤϯδχΞ͕༨ྗͱؾ෼ɾؾ߹Ͱߋ৽͢Δ • ґଘϥΠϒϥϦͷߋ৽ͱ͔ ແ

  42. astj TL ब೚(2018/05)

  43. ͜ΕܾΊΒΕͳ͘ͳ͍ʁ

  44. • ΞϓϦ͸ TL, SM, PO ͰόοΫϩάͱͯ͠੔ཧ • ىථ͸ issue Ͱ୭Ͱ΋Ͱ͖Δ

    • ੔ཧ͢ΔձͰ͓ΓΌͬͱܾΊͯͨ • Πϯϑϥ͸ SRE ʹλεΫ؅ཧ͓೚ͤ খ
  45. • όοΫϩά੔ཧͷͦͷ৔Ͱ൑அͰ͖ͳ͍ • ʮ΍ͬͨ΄͏͕͍͍Ͱ͢Ͷʯ͸ݴ͑Δ • ʮ༏ઌ౓Ͳ͏Ͱ͔͢ʯʹ౴͕͑ग़ͳ͍ • ຊདྷ͸ΤϯδχΞͷ૯ҙʢʁʣͷ൑அͰ͸ • ΤϯδχΞΛ୅දͯ͠੔ཧͷ৔ʹग़ͯΔ

  46. • ϩʔυϚοϓʹج൫ܥλεΫͱͯ͠Ճ͑Δ • SM ͱ PO ͕ issue ͔ΒงғؾͰर͍ͬͯͨ େ

  47. • ;Θͬͱͯ͠Δʂʂʂʂʂʂʂʂʂ • ΤϯδχΞ͕ͪΌΜͱؔ༩͍ͨ͠ • ໪࿦ϩʔυϚοϓͳͷͰަব΍ௐ੔͸͢Δɹ

  48. ܾΊΔͨΊʹԿ͕ඞཁʁ

  49. ϓϩμΫτϝϯςφϯεͷλεΫ؅ཧ

  50. • ΤϯδχΞϦϯάλεΫͷ༏ઌ౓Λ؅ཧ͍ͨ͠ • ͦͯ͠ΤϯδχΞ಺Ͱٞ࿦͍ͨ͠ • ࠷ऴతͳλεΫ؅ཧ͸νʔϜશମ • খͳΒόοΫϩά΁ / େͷ࿩͸ޙड़ʂ

    • λεΫΛೋॏ؅ཧͨ͘͠ͳ͍ʢϜμʣ ➡όοΫϩά / ϩʔυϚοϓͷલஈ֊Λ؅ཧ
  51. None
  52. • GitHub Project ʹ issue ΛूΊΔ • ʮػೳ։ൃλεΫ͸ೖΕͳ͍ʯ͕ϧʔϧ • νʔϜશମͷλεΫ؅ཧͱ͸ผͷϘʔυ

    • ఆظతʹΤϯδχΞͰ༏ઌ౓Λ͚ͭΔ • ༏ઌ౓௿͍ͱ์ྲྀʢؾ͕޲͍ͨΒ΍ͬͯʂʣ
  53. • খʢεΫϥϜͷόοΫϩάʹՃ͑Δʣ • νʔϜͷόοΫϩά੔ཧͰϘʔυΛݩʹ࿩͢ • େʢϩʔυϚοϓʹ૊ΈࠐΉʣ • ϩʔυϚοϓΛࡦఆ͢Δձٞʹ TL ΋ग़Δ

  54. ͜ΕܾΊΒΕͳ͘ͳ͍ʁ ղܾ

  55. None
  56. ͱ͜ΖͰ

  57. • ΞϓϦ͸ TL, SM, PO ͰόοΫϩάͱͯ͠੔ཧ • ىථ͸ issue Ͱ୭Ͱ΋Ͱ͖Δ

    • ੔ཧ͢ΔձͰ͓ΓΌͬͱܾΊͯͨ • Πϯϑϥ͸ SRE ʹλεΫ؅ཧ͓೚ͤ খ
  58. • SRE ΋ΤϯδχΞձʹࢀՃͯ͠૭ޱ౷Ұ • ΤϯδχΞΈΜͳͰ՝୊ʹऔΓ૊Ή • αʔόʔͷߋ৽΋ιϑτ΢ΣΞͷߋ৽΋ಉྻ Ұॹʹ΍Ζ͏͡ΌΜ

  59. None
  60. ͱ͜ΖͰ̎

  61. • ΤϯδχΞ͕༨ྗͱؾ෼ɾؾ߹Ͱߋ৽͢Δ • ґଘϥΠϒϥϦͷߋ৽ͱ͔ ແ

  62. => ϦεΫϔοδͱͯ͠ͷ ܭըతͳߋ৽ ʢͱ͍͏໘΋͋Δʣ ࠶ܝ

  63. • αʔόʔαΠυ: Scala / Go • ϑϩϯτΤϯυ: TypeScript + AngularJS

    • ػցֶशαϒγεςϜ: Python • AWS Lambda : NodeJS ੝୔ࢁ ࠶ܝ
  64. • ϝϯόʔʹΑΓಘखෆಘख͕͋Δ • ΋Γͩ͘͞Μ • ܭըతʹফԽ͢Δͱେྔͷ issue ͕ग़ݱ

  65. ʢݸਓʣ ؾ߹େ޷͖ʂʂʂʂʂ

  66. ʢTLʣ ؾ߹΍Ί͍ͨʂʂʂʂ

  67. ×TL͕ҟৗʹ͕Μ͹Δ ×ಛఆͷ୭͔͕ҟৗʹ͕Μ͹Δ ʓνʔϜͰ࣋ଓతʹ͕Μ͹Δ

  68. • ҆ఆతʹϥΠϒϥϦΛߋ৽͍ͨ͠ • νʔϜͰऔΓ૊ΜͰ͍͖͍ͨ • ຖि issue ݐͯΔͷେมͰ͸ • ʢਐḿ؅ཧ͸γϏΞ͡Όͳ͍ʣ

  69. ➡ ΤϯδχΞձͰٞ࿦

  70. ➡౰൪੍

  71. None
  72. • ΋ͱ΋ͱΤϯδχΞ಺ͰिସΘΓͷ౰൪੍ • ϦϦʔε୲౰ɺΤεΧϨʔγϣϯ੥͚ etc • ౰൪ͷҰͭͱͯ͠௥Ճ

  73. None
  74. • େྔʹ͋ΔͷͰ͍͔ͭ͘ળҙͰબΜͰߋ৽ • ͬ͞ͱ্͛ΒΕͳ͍৔߹͸దٓઌૹΓ • ➡λεΫͱͯ͠ܭըతʹ޲͖߹͏

  75. None
  76. • ߋ৽౓߹͍͸εϓϨουγʔτʹه࿥ • ͠͹Β͘଺ͬͯΔͱ੺͘ͳΔ • పఈ͍ͨ͠ͱ͍͏ΑΓՄࢹԽ͍ͨ͠

  77. None
  78. ;ΓฦΓ

  79. ΤϯδχΞձ / GitHub Project

  80. • ॠൃతͳ൑அྗʹཔΒͣ༏ઌ౓ܾఆͰ͖Δ • ٕज़తཁ݅ͳͲ΋֬ೝ͠΍͘͢ͳͬͨ • গ͠Πϯϑϥߋ৽ʹภͬͯΔؾ͸ͯ͠Δ • SRE ۀ΋TL ͕࢓੾͔ͬͯͨΒʁؔ܎ͳ͍ʁ

    • ➡࠷ۙ SRE ૿һ͕͋ͬͨͷͰௐ੔͍ͯ͘͠
  81. Ξοϓσʔτ౰൪

  82. • ґଘ͕ݹ୅ͷ··์ஔ͞ΕΔ͜ͱ͕ͳ͘ͳͬͨ • ༷ࢠ͕ՄࢹԽͰ͖ͨ • τϥϒϧͷࣄલճආ΋੒ޭ • Amazon S3: AWS

    ॺ໊όʔδϣϯ2ഇࢭ • aws-sdk-go Λߋ৽ͨ࣌͠ʹࣗવͱҠߦ
  83. • Ұ౓ͷߋ৽ʹඞཁͳؾ߹ήʔδ͸ݮͬͨ • ؾ߹θϩͰ͸ߋ৽Ͱ͖ͳ͍ͷ΋ࣄ࣮ • Ͳ͏ͯ͠΋ۤखͷ΋ͷ͸ख͕͖ͭͮΒ͍ • ➡νʔϜ಺ͰͲ͏ٕज़Λ޿͛Δ͔ • εΩϧϚοϓͳͲͷऔΓ૊Έ

    Mackerel։ൃνʔϜΧΠθϯͷཱྀʢৼΓฦΓɾϞϒϓϩɾεΩϧϚοϓͳͲʣ https://developer.hatenastaff.com/entry/2018/04/04/111410
  84. ·ͱΊ

  85. • ʮ৽͍͠෺͸ྑ͍ʯͰ΍ͬͯ·͢ • ϓϩμΫτΛ݈શʹ৽͍ͯ͘͘͠͠ • νʔϜͰ޲͖߹͏औΓ૊ΈΛ͍ͯ͠·͢ • ։ൃϩʔυϚοϓ΁ͷ૊ΈࠐΈ • ΤϯδχΞ಺ͰͷλεΫ༏ઌ౓෇͚

    • Ξοϓσʔτ౰൪
  86. ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ͳʹ͔͋Ε͹࠙਌ձ or Twitter @astj ·Ͱʂ