Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Who are you? ஶॻ

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

࿈ଓϦϦʔε #devsumiC C-1

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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