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

Mackerelの200週連続リリースの舞台裏とこれから / DevsumiKansai2018

KASUYA, Daisuke
September 28, 2018

Mackerelの200週連続リリースの舞台裏とこれから / DevsumiKansai2018

デブサミ関西登壇資料

KASUYA, Daisuke

September 28, 2018
Tweet

More Decks by KASUYA, Daisuke

Other Decks in Technology

Transcript

  1. Mackerelͷ200ि࿈ଓ
    ϦϦʔεͷ෣୆ཪͱ͜Ε͔Β
    2018-09-28
    Developers Summit 2018 Kansai
    גࣜձࣾ͸ͯͳ | പ୩ େี (@daiksy)
    #devsumiC C-1

    View Slide

  2. Who are you?
    പ୩ େี(@daiksy)
    ▸ גࣜձࣾ͸ͯͳ.
    ▸ Mackerel σΟϨΫλʔ
    ▸ ScalaMatsuri, Scalaؔ੢Summit
    ▸ ૉਓDJ

    View Slide

  3. Who are you?
    ஶॻ

    View Slide

  4. https://mackerel.io
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  5. https://mackerel.io
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  6. https://mackerel.io
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  7. https://mackerel.io
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  8. Mackerel
    ▸ 2013೥11݄ʹ࠷ॳͷίϛοτ
    ▸ 2014೥5݄8೔ βϦϦʔε
    ▸ 2014೥9݄17೔ ਖ਼ࣜϦϦʔε
    ▸ 2014೥11݄1೔ daiksyೖࣾ
    ▸ 2016೥6݄10೔ 100ि࿈ଓϦϦʔε
    ▸ 2018೥7݄2೔ 200ि࿈ଓϦϦʔε
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  9. Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  10. ࿈ଓϦϦʔε
    #devsumiC C-1

    View Slide

  11. ࿈ଓϦϦʔε
    ▸ ϢʔβʔʹͱͬͯՁ஋ͷ͋ΔػೳΛຖिඞͣϦϦʔε͢Δ
    ▸ όάϑΟοΫε΍ϝϯςφϯεϦϦʔε͸ʮ࿈ଓϦϦʔεʯ
    ͷఆٛʹ͸ؚ·ͳ͍
    ▸ ຖि݄༵೔ʢੲ͸ຖि༵ۚ೔ʣʹ৽ػೳͷ͓஌ΒͤΛϒϩάͰ
    प஌ˍϝʔϦϯάϦετ഑৴
    ▸ ͨͩ͠೥຤೥࢝/ΰʔϧσϯ΢ΟʔΫ/͓ຍظؒ͸আ͘ʢզʑ͸
    ϗϫΠτاۀͳͷͰ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  12. ࿈ଓϦϦʔε
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  13. ͳΜͷͨΊʹ࿈ଓϦϦʔε
    Λ΍͍ͬͯͨͷ͔
    #devsumiC C-1

    View Slide

  14. ▸ Mackerel͸ͱͯ΋ϛχϚϜͳঢ়ଶ͔Βελʔτͨ͠
    ▸ Slack௨஌ -> ਖ਼ࣜϦϦʔεͷ2िؒޙ
    ▸ αʔϏεϝτϦοΫͷ؂ࢹ -> ਖ਼ࣜϦϦʔεͷ3ϲ݄ޙ
    ▸ ࠓͰ͸౰ͨΓલͷػೳͷ΄ͱΜͲ͸ະ࣮૷ͷঢ়ଶͰελʔτ
    ͳͥʁ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  15. ▸ ౰ॳ͸ػೳ։ൃͷεϐʔυײ͕ސ٬ʹରͯ͠໿ଋͰ͖Δ਺গͳ
    ͍Ձ஋ͷͻͱͭͰ͋Γɺ༏Ґੑͩͬͨ
    ▸ ౰ॳ͸࿈ଓϦϦʔεΛҙ͍ࣝͯ͠ͳ͔͕ͬͨɺ͋Δ࣌਺͑ͨΒ
    50ि࿈ଓϦϦʔε໨લͩͬͨ
    ▸ ຖि࿈ଓϦϦʔεΛΞϐʔϧͨ͠ͱ͜Ζɺސ٬֫ಘͷେ͖ͳ෢
    ثͱͳͬͨ
    ▸ ·ͣ͸100िɺ࣍͸150िͱগͣͭ͠໨ඪΛ৳͹ͨ͠
    ͳͥʁ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  16. Ͳ͏΍ͬͯ
    ࿈ଓϦϦʔεΛҡ͔࣋ͨ͠
    #devsumiC C-1

    View Slide

  17. Mackerel ͷγεςϜߏ੒
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  18. Mackerel ͷϚΠΫϩαʔϏείϯϙʔωϯτ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  19. Mackerel ͷϦϦʔεࠂ஌ର৅ൣғ
    ▸ mackerelຊମ
    ▸ WebγεςϜ
    ▸ ֎ܗ؂ࢹ, AWS, AzureͳͲͷΫϩʔϥ
    ▸ ҟৗݕ஌ίϯϙʔωϯτ
    ▸ ͸ͯͳࣾ಺ʹͯ։ൃ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  20. ▸ OSS
    ▸ mackerel-agent
    ▸ mackerel-agent-plugins
    ▸ go-check-plugins
    ▸ mkr (CLIπʔϧ)
    ▸ ͸ͯͳࣾ಺Ͱͷ։ൃ + ϢʔβʔʹΑΔίϯτϦϏϡʔτ
    ▸ OSSͷΈͷϦϦʔε͸200࿈ଓϦϦʔεதʹ໿30ճ΄Ͳ
    Mackerel ͷϦϦʔεࠂ஌ର৅ൣғ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  21. ▸ ϓϩμΫτΦʔφʔ
    ▸ σΟϨΫλʔ ← ΅͘͸͜͜
    ▸ ΤϯδχΞ
    ▸ σβΠφ
    ▸ CRE
    ▸ ຋༁
    ։ൃνʔϜͷମ੍
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  22. ▸ ΤϯδχΞ
    ▸ 5 ~ 8໊ (಺1໊͕ςοΫϦʔυʣ
    ▸ σβΠφ
    ▸ 1ʙ2໊
    ։ൃνʔϜͷମ੍
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  23. ▸ ఆظϦϦʔε͸ि2ճ
    ▸ Րɾ໦
    ▸ ϦϦʔε೔͕ॕલ೔ͷ৔߹͸ௐ੔
    ։ൃνʔϜͷମ੍
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  24. ։ൃνʔϜͷମ੍
    staging؀ڥ
    PullRequest࡞੒ & ϨϏϡʔ
    ࣗಈςετOK -> staging؀ڥʹࣗಈ൓ө
    ຖिՐɾ໦ʹͦͷ࣌఺ͷstaging؀ڥͱͷࠩ෼͕ຊ൪൓ө͞ΕΔ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  25. ▸ ि࣍౰൪ (ϩʔςʔγϣϯ)
    ▸ ϦϦʔε୲౰ (Ր)
    ▸ ϦϦʔε୲౰ (໦)
    ▸ αϙʔτ୲౰
    ▸ OSS܎
    ։ൃνʔϜͷମ੍
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  26. ▸ ि࣍౰൪ (ϩʔςʔγϣϯ)
    ▸ ϦϦʔε୲౰
    ▸ ϦϦʔε࡞ۀͷओ୲౰
    ▸ αϙʔτ୲౰
    ▸ Ϣʔβʔ͔Βͷ͓໰͍߹Θͤͷٕज़ௐࠪΛ୲౰
    ▸ OSS܎
    ▸ Ϣʔβʔ͔Βͷmackerel-agentͳͲ΁ͷPull Request, IssueΛݟΔ୲౰
    ։ൃνʔϜͷମ੍
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  27. ։ൃνʔϜͷମ੍
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  28. ▸ staging؀ڥͰͷಈ࡞֬ೝ
    ▸ ֤छϝτϦοΫɾΤϥʔϩάͳͲͷ؍࡯
    ▸ ຊ൪؀ڥʹσϓϩΠ
    ▸ ຊ൪؀ڥͰͷಈ࡞֬ೝ
    ▸ ֤छϝτϦοΫͷ؍࡯ɾΤϥʔϩάͳͲͷ؍࡯
    ▸ ҟৗ͕͋Ε͹ϩʔϧόοΫ͢Δ
    ▸ શମͷॴཁ࣌ؒ͸2࣌ؒ΄Ͳ
    ϦϦʔεखॱ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  29. ▸ 2िؒεϓϦϯτͷεΫϥϜܗࣜ(มଇత)
    ▸ εϓϦϯτܭը
    ▸ ։ൃ
    ▸ Րɾ໦ʹఆظϦϦʔε
    ▸ ݄༵೔ʹࠂ஌
    ▸ 2िؒͷ࠷ޙͷ༵ۚ೔ʹৼΓฦΓ
    ։ൃͷϦζϜ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  30. ▸ ϓϩμΫτΦʔφ͕࡞੒͢Δதɾ௕ظͷϩʔυϚοϓ
    ▸ 3೥ͷ௕ظϩʔυϚοϓ
    ▸ ࢛൒ظ͝ͱͷதظϩʔυϚοϓ
    ▸ CREʹΑΔϢʔβʔώΞϦϯάɻαϙʔτʹدͤΒΕΔཁ๬
    ▸ ΤϯδχΞ͔ΒϘτϜΞοϓͰఏҊ͞ΕΔվળʢΞϓϦέʔγϣ
    ϯϑϨʔϜϫʔΫ΍ϛυϧ΢ΣΞͷόʔδϣϯΞοϓͳͲʣ
    ܭը ʢ։ൃͷΠϯϓοτʣ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  31. ▸ ௕ظλεΫ
    ▸ ։ൃʹ௕͍ظؒΛཁ͢Δ։ൃλεΫ (਺ϲ݄~1೥)
    ▸ ࠷ۙͩͱҟৗݕ஌ػೳ, ίϯςφରԠͳͲ͕͜Εʹ֘౰
    ▸ ओ୲౰ΤϯδχΞΛΞαΠϯ͠ɺϓϩδΣΫτԽ
    ▸ ௕ظλεΫ΋ࡉ͔͍୯ҐͰϓϧϦΫΤετ͕࡞ΒΕͯɺຖिϚʔδ & ϦϦʔ
    ε͞Ε͍ͯ·͢
    ▸ ୹ظλεΫ
    ▸ 1εϓϦϯτ಺(਺೔)Ͱ։ൃ͕ऴΘΔλεΫ
    ܭը ʢ։ൃλεΫͷ෼ྨʣ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  32. ▸ εϓϦϯτܭըձͷલ೔ʹ࣮ࢪ
    ▸ ։ൃͷਐḿঢ়گΛ֬ೝ͠ɺ࣍ͷεϓϦϯτόοΫϩάʹͳʹ
    Λ΍Δ͔ΛϓϩμΫτΦʔφʔ, σΟϨΫλʔ, CRE, ςοΫ
    ϦʔυͰ૬ஊ͢Δ
    ▸ εϓϦϯτظؒதʹɺͳʹΛϢʔβʔࠂ஌͢Δ͔ΛܾΊΔ
    ▸ ௕ظλεΫͷਐḿΛ֬ೝͭͭ͠ɺεϓϦϯτόοΫϩάʹ୹
    ظλεΫΛೖΕ͍ͯ͘
    ܭը ʢόοΫϩάάϧʔϛϯάʣ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  33. ▸ ݄: ΞαΠϯ͞Ε͍ͯΔ௕ظλεΫΛਐΊΔ
    ▸ Ր: ޕલ: ϦϦʔε౰൪, ޕޙ: ௕ظλεΫΛਐΊΔ
    ▸ ਫ: ޕલ: ৽ϝϯόʔͱϖΞϓϩ, ޕޙ: ௕ظλεΫΛਐΊΔ
    ▸ ໦: དྷिࠂ஌༧ఆͷ୹ظλεΫΛਐΊΔ
    ▸ ۚ: ޕલ: 1࣌ؒ΄ͲͰऴΘΓͦ͏ͳόάमਖ਼Λ΍Δ, ޕޙ: ։ൃ
    ݴޠͷόʔδϣϯΞοϓʹνϟϨϯδͯ͠ΈΔ
    ͱ͋ΔΤϯδχΞͷ1िؒͷ༷ࢠ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  34. ▸ όοΫϩάʹରͯ͠ΤϯδχΞͷ100%ՔಇΛٻΊͳ͍
    ▸ ͍͍ͩͨ20~30%͘Β͍͸༨ྗ͕࢒ΔΑ͏ʹܭը͢Δ
    ▸ ٕज़తෛ࠴ͷฦࡁͳͲɺΤϯδχΞ͕ࣗओతʹऔΓ૊ΊΔ׆
    ಈͷ༨஍Λ࢒͓ͯ͘͠
    ▸ ༨ྗͰ͜ͳͨ͠খ͞ͳλεΫ͕ɺຖिࠂ஌ͷ༗༻ͳωλʹͳΔ
    ͱ͖΋͋Δ
    ։ൃܭըͷϙΠϯτ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  35. ▸ ϚΠΫϩϚωδϝϯτ͸ઈରͩΊ
    ▸ ΨνΨνʹܭըͯ͠͠·͏ͱɺ͔͑ͬͯ਎ಈ͖͕औΕͳ͘ͳΔ
    ▸ ࣗ཯ͨ͠νʔϜΛ࡞ΔͨΊʹ͸ԿΑΓ΋༨ྗ͕ඞཁ
    ։ൃܭըͷϙΠϯτ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  36. ▸ ௕͘։ൃ͍ͯ͠Δͱɺҟಈɾୀ৬ͳͲͰϝϯόʔ͸͚ͬ͜͏ೖ
    ΕସΘΔ
    ▸ ि୯ҐͰϦϦʔεΛܧଓ͍ͯ͠ΔͱɺϝϯόʔೖΕସ͑ʹΑΔ
    ҡ࣋తͳઓྗͷ௿Լ΋͚ͬ͜͏ӨڹΛड͚Δ
    ▸ ޮ཰Α͘։ൃ͢ΔͨΊʹɺϝϯόʔͷಘखɾෆಘखΛ೺Ѳͯ͠
    ͓͘ͷ͸ॏཁ
    ϝϯόʔͷೖΕସΘΓ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  37. εΩϧϚοϓ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  38. ▸ νʔϜ͕ҡ࣋͢΂͖εΩϧͷՄࢹԽ
    ▸ ҟಈ΍ୀ৬ʹΑͬͯಛఆͷεΩϧ͕஌ΒͣʹࣦΘΕΔͱ͍͏͜
    ͱ͕ͳ͍
    ▸ νʔϜͷεΩϧόϥϯεΛ೺Ѳ͢Δ͜ͱͰɺޮ཰తͳ։ൃΛܭ
    ը͢Δ͜ͱ͕Ͱ͖Δ
    εΩϧϚοϓ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  39. ▸ ຖिࠂ஌ΛνʔϜͷ࠷ॏཁίϛοτϝϯτͱҐஔ͚ͮɺνʔϜશһ͕ͦ
    ΕΛ໨ࢦͯ͠ຖ೔࢓ࣄΛ͢Δ
    ▸ ͍͟ͱ͍͏ͱ͖ʹඋ͑ͯɺ1೔, 2೔͘Β͍Ͱ࣮૷Ͱ͖ͦ͏ͳ༏ઌ౓͕ͦ
    Ε΄Ͳߴ͘ͳ͍λεΫΛ͍͔ͭ͘ετοΫ͓ͯ͘͠
    ▸ ίϛϡχςΟͷखॿ͚ΊͪΌͪ͘Ό͋Γ͕͍ͨͰ͢… (OSS΁ͷίϯτ
    ϦϏϡʔτ)
    ▸ ͚ͩ͜͜ͷ࿩ɺ࣮૷͸ऴΘ͍ͬͯΔ͚Ͳདྷिͷωλ͕ͳ͍͔Β·ͩϦϦʔ
    ε͠ͳ͍Ͱ͓͜͏ɺͱ͍͏͜ͱ΋ͯ͠·ͨ͠ʢ࡞Γஔ͖ͱݺΜͰ͍ͨ
    ຖिϦϦʔεΛܧଓ͢Δίπ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  40. 200िΛ۠੾Γʹ
    ࿈ଓϦϦʔεΛ΍Ί·͢
    #devsumiC C-1

    View Slide

  41. ▸ ϓϩμΫτͱͯ͠ɺओཁͳػೳ͕ग़ἧͬͨ
    ▸ ॳ୅ϓϩμΫτΦʔφʔͷߏ૝ͨ͠ػೳΛ͋Β͔࣮ͨ૷͠ऴ
    ͑ͨ
    ▸ εϐʔυײ΋େ੾͕ͩɺࠊΛਾ͑ͨػೳ։ൃͷํ͕ސ٬ʹͱͬ
    ͯେ͖ͳՁ஋ʹͳΔϑΣʔζʹདྷͨͱ൑அ
    ▸ ελʔτΞοϓظͷऴྃ
    ͳͥຖिϦϦʔεΛࢭΊͨͷʁ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  42. ▸ ଍ճΓͷվળ͕΍Γ΍͘͢ͳͬͨ
    ▸ Playframework, Scala, sbtͷόʔδϣϯ͕Ұؾʹ৽͘͠ͳͬ
    ͨ
    ▸ νʔϜʹ·ͩຖिϦϦʔεͷهԱ͕࢒͍ͬͯΔͷͰɺεϐʔυ
    ײΛҡ࣋ͭͭ͠ࠊΛਾ͑ͨ։ൃ͕Ͱ͖Δ
    ▸ 1८ͯ͠ʮຖिϦϦʔεΛ΍Βͳ͍ͷ͕౰ͨΓલʯʹͳͬͨͱ
    ͖ʹͲ͏ͳΔ͔ͳʁ
    ຖिϦϦʔεΛऴ͑ͯΈͯ
    Mackerelͷ200ि࿈ଓϦϦʔεͷ෣୆ཪͱ͜Ε͔Β

    View Slide

  43. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    #devsumiC C-1

    View Slide