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

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

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

astj
PRO

June 15, 2019
Tweet

More Decks by astj

Other Decks in Technology

Transcript

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

    View Slide

  2. id:astjʢ͋͞ͱ͐͡ʔʣ
    ͸ͯͳ ΞϓϦέʔγϣϯΤϯδχΞ
    ৽ଔ (2014/04)
    Mackerel ։ൃνʔϜ (2016/08~)
    Mackerel ςοΫϦʔυ (2018/05~)
    มભ: ͸ͯͳϒοΫϚʔΫ‎͸ͯͳϒϩά
    ➡डୗϓϩδΣΫτ➡Mackerel

    View Slide

  3. Mackerel

    View Slide

  4. View Slide

  5. View Slide

  6. View Slide

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

    View Slide

  8. • αʔόʔαΠυ: Scala / Go
    • ϑϩϯτΤϯυ: TypeScript + AngularJS
    • ػցֶशαϒγεςϜ: Python
    • AWS Lambda : NodeJS ੝୔ࢁ

    View Slide

  9. ຊ೔ͷத਎
    • ࠓ೔࿩͢ϓϩμΫτϝϯςφϯεͷఆٛ
    • Mackerel ։ൃνʔϜͰͷՁ஋؍
    • Mackerel ։ൃνʔϜͷऔΓ૊Έ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. Ձ஋؍

    View Slide

  15. ৽͍͠෺͸ྑ͍

    View Slide

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

    View Slide

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

    • ੑೳͷ޲্

    • etc…

    View Slide

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

    View Slide

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

    View Slide

  20. • Scala 2.11.12 ➡ 2.12.6
    • ϑϧίϯύΠϧ 30෼ ➡ 5෼൒
    • CI 40~50෼ ➡ 16෼
    • push ͢Δͨͼʹ͜Ε͚ͩ଴ͬͯͨ…
    • ࠓࢥ͏ͱੲͷॴཁ࣌ؒϠό͍

    View Slide

  21. ৽͘͢͠Δඞཁ͋ΔΜͰ͢ʁ
    ʮࠓͷ··Ͱ໰୊ͳ͘ಈ͍ͯΔ͡ΌΜʁʯ
    ʮมߋରԠ͢Δͷ΋खؒͩ͠…ʯ
    ʮ͏ͪͷίϯύΠϧ30෼͔͔Βͳ͍ΜͰ…ʯ
    ʮಈ࡞֬ೝ͢Δͷେมʂʯ

    View Slide

  22. ͦΕ΋Θ͔Δ

    View Slide

  23. ͕

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. View Slide

  32. ࣮ࡍͷऔΓ૊Έ

    View Slide

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

    View Slide

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

    View Slide

  35. • খ͍͞λεΫʢ1εϓϦϯτ͘Β͍ʣ
    • XXX ͷίʔυϦϑΝΫλϦϯά͍ͨ͠
    • ͋ͷαʔόʔΛೖΕସ͑ͳ͍ͱ͍͚ͳ͍
    • ͓͓͖ͳ࿩୊
    • Play Framework ͷόʔδϣϯΞοϓ
    • Redis Λ ElastiCache ʹҠߦ͢Δ
    ৭ʑͳϓϩμΫτϝϯςφϯε

    View Slide

  36. ݩʑ (astj TL ब೚௚ޙ)

    View Slide

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

    View Slide

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

    View Slide

  39. • ΞϓϦ͸ TL, SM, PO ͰόοΫϩάͱͯ͠੔ཧ
    • ىථ͸ issue Ͱ୭Ͱ΋Ͱ͖Δ
    • ੔ཧ͢ΔձͰ͓ΓΌͬͱܾΊͯͨ
    • Πϯϑϥ͸ SRE ʹλεΫ؅ཧ͓೚ͤ

    View Slide

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

    View Slide

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

    View Slide

  42. astj TL ब೚(2018/05)

    View Slide

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

    View Slide

  44. • ΞϓϦ͸ TL, SM, PO ͰόοΫϩάͱͯ͠੔ཧ
    • ىථ͸ issue Ͱ୭Ͱ΋Ͱ͖Δ
    • ੔ཧ͢ΔձͰ͓ΓΌͬͱܾΊͯͨ
    • Πϯϑϥ͸ SRE ʹλεΫ؅ཧ͓೚ͤ

    View Slide

  45. • όοΫϩά੔ཧͷͦͷ৔Ͱ൑அͰ͖ͳ͍
    • ʮ΍ͬͨ΄͏͕͍͍Ͱ͢Ͷʯ͸ݴ͑Δ
    • ʮ༏ઌ౓Ͳ͏Ͱ͔͢ʯʹ౴͕͑ग़ͳ͍
    • ຊདྷ͸ΤϯδχΞͷ૯ҙʢʁʣͷ൑அͰ͸
    • ΤϯδχΞΛ୅දͯ͠੔ཧͷ৔ʹग़ͯΔ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  51. View Slide

  52. • GitHub Project ʹ issue ΛूΊΔ
    • ʮػೳ։ൃλεΫ͸ೖΕͳ͍ʯ͕ϧʔϧ
    • νʔϜશମͷλεΫ؅ཧͱ͸ผͷϘʔυ
    • ఆظతʹΤϯδχΞͰ༏ઌ౓Λ͚ͭΔ
    • ༏ઌ౓௿͍ͱ์ྲྀʢؾ͕޲͍ͨΒ΍ͬͯʂʣ

    View Slide

  53. • খʢεΫϥϜͷόοΫϩάʹՃ͑Δʣ
    • νʔϜͷόοΫϩά੔ཧͰϘʔυΛݩʹ࿩͢
    • େʢϩʔυϚοϓʹ૊ΈࠐΉʣ
    • ϩʔυϚοϓΛࡦఆ͢Δձٞʹ TL ΋ग़Δ

    View Slide

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

    View Slide

  55. View Slide

  56. ͱ͜ΖͰ

    View Slide

  57. • ΞϓϦ͸ TL, SM, PO ͰόοΫϩάͱͯ͠੔ཧ
    • ىථ͸ issue Ͱ୭Ͱ΋Ͱ͖Δ
    • ੔ཧ͢ΔձͰ͓ΓΌͬͱܾΊͯͨ
    • Πϯϑϥ͸ SRE ʹλεΫ؅ཧ͓೚ͤ

    View Slide

  58. • SRE ΋ΤϯδχΞձʹࢀՃͯ͠૭ޱ౷Ұ
    • ΤϯδχΞΈΜͳͰ՝୊ʹऔΓ૊Ή
    • αʔόʔͷߋ৽΋ιϑτ΢ΣΞͷߋ৽΋ಉྻ
    Ұॹʹ΍Ζ͏͡ΌΜ

    View Slide

  59. View Slide

  60. ͱ͜ΖͰ̎

    View Slide

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

    View Slide

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

    View Slide

  63. • αʔόʔαΠυ: Scala / Go
    • ϑϩϯτΤϯυ: TypeScript + AngularJS
    • ػցֶशαϒγεςϜ: Python
    • AWS Lambda : NodeJS ੝୔ࢁ
    ࠶ܝ

    View Slide

  64. • ϝϯόʔʹΑΓಘखෆಘख͕͋Δ
    • ΋Γͩ͘͞Μ
    • ܭըతʹফԽ͢Δͱେྔͷ issue ͕ग़ݱ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  70. ➡౰൪੍

    View Slide

  71. View Slide

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

    View Slide

  73. View Slide

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

    View Slide

  75. View Slide

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

    View Slide

  77. View Slide

  78. ;ΓฦΓ

    View Slide

  79. ΤϯδχΞձ / GitHub Project

    View Slide

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

    View Slide

  81. Ξοϓσʔτ౰൪

    View Slide

  82. • ґଘ͕ݹ୅ͷ··์ஔ͞ΕΔ͜ͱ͕ͳ͘ͳͬͨ
    • ༷ࢠ͕ՄࢹԽͰ͖ͨ
    • τϥϒϧͷࣄલճආ΋੒ޭ
    • Amazon S3: AWS ॺ໊όʔδϣϯ2ഇࢭ
    • aws-sdk-go Λߋ৽ͨ࣌͠ʹࣗવͱҠߦ

    View Slide

  83. • Ұ౓ͷߋ৽ʹඞཁͳؾ߹ήʔδ͸ݮͬͨ
    • ؾ߹θϩͰ͸ߋ৽Ͱ͖ͳ͍ͷ΋ࣄ࣮
    • Ͳ͏ͯ͠΋ۤखͷ΋ͷ͸ख͕͖ͭͮΒ͍
    • ➡νʔϜ಺ͰͲ͏ٕज़Λ޿͛Δ͔
    • εΩϧϚοϓͳͲͷऔΓ૊Έ
    Mackerel։ൃνʔϜΧΠθϯͷཱྀʢৼΓฦΓɾϞϒϓϩɾεΩϧϚοϓͳͲʣ
    https://developer.hatenastaff.com/entry/2018/04/04/111410

    View Slide

  84. ·ͱΊ

    View Slide

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

    View Slide

  86. ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
    ͳʹ͔͋Ε͹࠙਌ձ or Twitter @astj ·Ͱʂ

    View Slide