https://event.shoeisha.jp/devboost/20190615
αʔϏε։ൃͱ݈શͳϓϩμΫτϝϯςφϯεΛ։ൃνʔϜͰ࣋ଓతʹऔΓΉ2019/06/15 Developers Boost KANSAIAsato WAKISAKA (astj)
View Slide
id:astjʢ͋͞ͱ͐͡ʔʣͯͳ ΞϓϦέʔγϣϯΤϯδχΞ৽ଔ (2014/04)Mackerel ։ൃνʔϜ (2016/08~)Mackerel ςοΫϦʔυ (2018/05~)มભ: ͯͳϒοΫϚʔΫͯͳϒϩά➡डୗϓϩδΣΫτ➡Mackerel
Mackerel
• 20149݄ਖ਼ࣜϦϦʔε• ͔ͦ͜ΒຖिʢຖӦۀिʣͷ৽ػೳϦϦʔε• 200+िଓ͚·ͨ͠• Ҏ߱ΞΫςΟϒʹػೳ։ൃΛܧଓhttps://mackerel.io/ja/blog/entry/announcement/20180705
• αʔόʔαΠυ: Scala / Go• ϑϩϯτΤϯυ: TypeScript + AngularJS• ػցֶशαϒγεςϜ: Python• AWS Lambda : NodeJS ࢁ
ຊͷத• ࠓ͢ϓϩμΫτϝϯςφϯεͷఆٛ• Mackerel ։ൃνʔϜͰͷՁ؍• Mackerel ։ൃνʔϜͷऔΓΈ
ϓϩμΫτϝϯςφϯε
• ʢΤϯδχΞͷΔ͜ͱͷ͏ͪʣ• ϦϑΝΫλϦϯά• ґଘιϑτΣΞͷߋ৽• ΠϯϑϥɺϛυϧΣΞͷߋ৽ʮػೳ։ൃҎ֎͍͍ͩͨશ෦ʯ
ٕज़తෛ࠴ͷ͜ͱʁ
์ஔͯ͠ΒͤΔͱٕज़తෛ࠴ੵۃతʹऔΓΉͱརӹ͕͋Δ
Ձ؍
৽͍͠ྑ͍
ιϑτΣΞ৽͘͢͠Δͱྑ͘ͳ͍ͬͯ͘ͱࢥ͍ͨ͘ͳ͍Ͱ͔͢ʁɹ࣮ͦͯ͠ࡍଟ͘ͷ߹Γཱͭͣ
৽͍͠ྑ͍• ػೳͷՃ• ෆ۩߹ͷमਖ਼ • ੑೳͷ্ • etc…
όʔδϣϯΞοϓ͕ۜͷؙ……ʹͳΔ͜ͱ͋Δ
• Scala ͷίϯύΠϧ͍ͱݴΘΕΔ• ࣮ࡍ Mackerel Ͱ·͞Ε͖ͯͨ
• Scala 2.11.12 ➡ 2.12.6• ϑϧίϯύΠϧ 30 ➡ 5• CI 40~50 ➡ 16• push ͢Δͨͼʹ͜Ε͚ͩͬͯͨ…• ࠓࢥ͏ͱੲͷॴཁ࣌ؒϠό͍
৽͘͢͠Δඞཁ͋ΔΜͰ͢ʁʮࠓͷ··Ͱͳ͘ಈ͍ͯΔ͡ΌΜʁʯʮมߋରԠ͢Δͷखؒͩ͠…ʯʮ͏ͪͷίϯύΠϧ30͔͔Βͳ͍ΜͰ…ʯʮಈ࡞֬ೝ͢Δͷେมʂʯ
ͦΕΘ͔Δ
͕
ྑ͠ѱ͠Ͳ͜Ζ͡Όͳ͍ྫ• όά• ηΩϡϦςΟ• αϙʔτऴྃ
ಀ͛ΕΔ͔Ͳ͏͔• ख͕ΕΔ·Ͱಀ͛ΕͨΒউͪ• ʮೲͯྃ͠ʯʮӡ༻ظ͕ؒݶఆʯ༗ར• ʮಀ͛ΕΔํʹṌ͚·͔͢ʁʯ• ಀ͛Δલʹߋ৽͕ආ͚ΒΕͳ͘ͳͬͨΒʁ
ߋ৽ͷखؒ• ಥવͷେ͖ͳมߋඇৗʹ͠ΜͲ͍ʂʂ• ܭըతʹ৽͍ͯ͘͘͠͠ͱେδϟϯϓճආ• ʢܭըతʹͬͯ݁ہେδϟϯϓͷ͜ͱ…ʣ
=> ϦεΫϔοδͱͯ͠ͷܭըతͳߋ৽ʢͱ͍͏໘͋Δʣ
• ීஈͷ։ൃʹ͓͚ΔՁ؍Λ౿ऻ͢Δ• খཻ͍͞ͰͷϦϦʔεΛੵΈॏͶ͍ͯ͘• ڊେͳϓϧϦΫΤετ࡞Βׂ͍ͣͯ͘͠• ཁมʹಛผѻ͍͢Δ͜ͱͳ͍Ͷͱ͍͏
ͳ͍• ػೳ։ൃ༏ઌ͞Εͯ͠·͏ɺͳͲ• ։ൃܭըଆͱՁ؍Λڞ༗Ͱ͖Εྑ͍• Mackerel ͷ߹ΤϯδχΞ͕ଟ͍• ͜ͷղ͋·Γ࣋ͬͯͳ͍Ͱ͢……
࣮ࡍͷऔΓΈ
•৽ͨʹߟ͑Δ͜ͱ / அ͢Δ͜ͱ͕ग़ݱ•վΊͯνʔϜঢ়گΛ࠶֬ೝςοΫϦʔυʹͳͬͨ (2018/05)
લఏ• εΫϥϜ• 2िؒεϓϦϯτ• εϓϦϯτͷʹόοΫϩάΛؔऀͰཧ• ظతʹ̏ϲϩʔυϚοϓ• ̏ϲ݄͝ͱʹݟ͠
• খ͍͞λεΫʢ1εϓϦϯτ͘Β͍ʣ• XXX ͷίʔυϦϑΝΫλϦϯά͍ͨ͠• ͋ͷαʔόʔΛೖΕସ͑ͳ͍ͱ͍͚ͳ͍• ͓͓͖ͳ• Play Framework ͷόʔδϣϯΞοϓ• Redis Λ ElastiCache ʹҠߦ͢Δ৭ʑͳϓϩμΫτϝϯςφϯε
ݩʑ (astj TL बޙ)
Α͍͜ͱ• Δ͖͜ͱΈΜͳͷཪʹ֓Ͷ͋Δ• ϝϯςφϯεʹϦιʔεΛׂ͖͍ͨҙࣝ͋Δ• ʮ৽͍͠ྑ͍ʯ• ΤϯδχΞʹݶΒͣνʔϜϨϕϧͰ࣋ͬͯΔ• ҙࣝͷߴ͞ͱؾ߹ͰͦΕͳΓʹਐΜͰΔ
͓ࠔΓ• λεΫʹ৫తʹऔΓΉྲྀΕ͕ະඋ• ݸਓͷؤுΓۦಈ͕ଟ͍• ҙࣝͷߴ͞ͱؾ߹པΈ• ࣋ଓੑ͕ͳ͍ʢؾ߹͕࣋ͯ࣋ଓ͢Δ…ʣ
• ΞϓϦ TL, SM, PO ͰόοΫϩάͱͯ͠ཧ• ىථ issue Ͱ୭ͰͰ͖Δ• ཧ͢ΔձͰ͓ΓΌͬͱܾΊͯͨ• Πϯϑϥ SRE ʹλεΫཧ͓ͤখ
• ϩʔυϚοϓʹج൫ܥλεΫͱͯ͠Ճ͑Δ• SM ͱ PO ͕ issue ͔ΒงғؾͰर͍ͬͯͨେ
• ΤϯδχΞ͕༨ྗͱؾɾؾ߹Ͱߋ৽͢Δ• ґଘϥΠϒϥϦͷߋ৽ͱ͔ແ
astj TL ब(2018/05)
͜ΕܾΊΒΕͳ͘ͳ͍ʁ
• όοΫϩάཧͷͦͷͰஅͰ͖ͳ͍• ʮͬͨ΄͏͕͍͍Ͱ͢Ͷʯݴ͑Δ• ʮ༏ઌͲ͏Ͱ͔͢ʯʹ͕͑ग़ͳ͍• ຊདྷΤϯδχΞͷ૯ҙʢʁʣͷஅͰ• ΤϯδχΞΛදͯ͠ཧͷʹग़ͯΔ
• ;Θͬͱͯ͠Δʂʂʂʂʂʂʂʂʂ• ΤϯδχΞ͕ͪΌΜͱؔ༩͍ͨ͠• ϩʔυϚοϓͳͷͰަবௐ͢Δɹ
ܾΊΔͨΊʹԿ͕ඞཁʁ
ϓϩμΫτϝϯςφϯεͷλεΫཧ
• ΤϯδχΞϦϯάλεΫͷ༏ઌΛཧ͍ͨ͠• ͦͯ͠ΤϯδχΞͰ͍ٞͨ͠• ࠷ऴతͳλεΫཧνʔϜશମ• খͳΒόοΫϩά / େͷޙड़ʂ• λεΫΛೋॏཧͨ͘͠ͳ͍ʢϜμʣ➡όοΫϩά / ϩʔυϚοϓͷલஈ֊Λཧ
• GitHub Project ʹ issue ΛूΊΔ• ʮػೳ։ൃλεΫೖΕͳ͍ʯ͕ϧʔϧ• νʔϜશମͷλεΫཧͱผͷϘʔυ• ఆظతʹΤϯδχΞͰ༏ઌΛ͚ͭΔ• ༏ઌ͍ͱ์ྲྀʢؾ͕͍ͨΒͬͯʂʣ
• খʢεΫϥϜͷόοΫϩάʹՃ͑Δʣ• νʔϜͷόοΫϩάཧͰϘʔυΛݩʹ͢• େʢϩʔυϚοϓʹΈࠐΉʣ• ϩʔυϚοϓΛࡦఆ͢Δձٞʹ TL ग़Δ
͜ΕܾΊΒΕͳ͘ͳ͍ʁղܾ
ͱ͜ΖͰ
• SRE ΤϯδχΞձʹࢀՃͯ͠૭ޱ౷Ұ• ΤϯδχΞΈΜͳͰ՝ʹऔΓΉ• αʔόʔͷߋ৽ιϑτΣΞͷߋ৽ಉྻҰॹʹΖ͏͡ΌΜ
ͱ͜ΖͰ̎
=> ϦεΫϔοδͱͯ͠ͷܭըతͳߋ৽ʢͱ͍͏໘͋Δʣ࠶ܝ
• αʔόʔαΠυ: Scala / Go• ϑϩϯτΤϯυ: TypeScript + AngularJS• ػցֶशαϒγεςϜ: Python• AWS Lambda : NodeJS ࢁ࠶ܝ
• ϝϯόʔʹΑΓಘखෆಘख͕͋Δ• Γͩ͘͞Μ• ܭըతʹফԽ͢Δͱେྔͷ issue ͕ग़ݱ
ʢݸਓʣؾ߹େ͖ʂʂʂʂʂ
ʢTLʣؾ߹Ί͍ͨʂʂʂʂ
×TL͕ҟৗʹ͕ΜΔ×ಛఆͷ୭͔͕ҟৗʹ͕ΜΔʓνʔϜͰ࣋ଓతʹ͕ΜΔ
• ҆ఆతʹϥΠϒϥϦΛߋ৽͍ͨ͠• νʔϜͰऔΓΜͰ͍͖͍ͨ• ຖि issue ݐͯΔͷେมͰ• ʢਐḿཧγϏΞ͡Όͳ͍ʣ
➡ ΤϯδχΞձͰٞ
➡൪੍
• ͱͱΤϯδχΞͰिସΘΓͷ൪੍• ϦϦʔε୲ɺΤεΧϨʔγϣϯ͚ etc• ൪ͷҰͭͱͯ͠Ճ
• େྔʹ͋ΔͷͰ͍͔ͭ͘ળҙͰબΜͰߋ৽• ͬ͞ͱ্͛ΒΕͳ͍߹దٓઌૹΓ• ➡λεΫͱͯ͠ܭըతʹ͖߹͏
• ߋ৽߹͍εϓϨουγʔτʹه• ͠Βͬͯ͘Δͱ͘ͳΔ• పఈ͍ͨ͠ͱ͍͏ΑΓՄࢹԽ͍ͨ͠
;ΓฦΓ
ΤϯδχΞձ / GitHub Project
• ॠൃతͳஅྗʹཔΒͣ༏ઌܾఆͰ͖Δ• ٕज़తཁ݅ͳͲ֬ೝ͘͢͠ͳͬͨ• গ͠Πϯϑϥߋ৽ʹภͬͯΔؾͯ͠Δ• SRE ۀTL ͕͔ͬͯͨΒʁؔͳ͍ʁ• ➡࠷ۙ SRE ૿һ͕͋ͬͨͷͰௐ͍ͯ͘͠
Ξοϓσʔτ൪
• ґଘ͕ݹͷ··์ஔ͞ΕΔ͜ͱ͕ͳ͘ͳͬͨ• ༷ࢠ͕ՄࢹԽͰ͖ͨ• τϥϒϧͷࣄલճආޭ• Amazon S3: AWS ॺ໊όʔδϣϯ2ഇࢭ• aws-sdk-go Λߋ৽ͨ࣌͠ʹࣗવͱҠߦ
• Ұͷߋ৽ʹඞཁͳؾ߹ήʔδݮͬͨ• ؾ߹θϩͰߋ৽Ͱ͖ͳ͍ͷࣄ࣮• Ͳ͏ͯۤ͠खͷͷख͕͖ͭͮΒ͍• ➡νʔϜͰͲ͏ٕज़Λ͛Δ͔• εΩϧϚοϓͳͲͷऔΓΈMackerel։ൃνʔϜΧΠθϯͷཱྀʢৼΓฦΓɾϞϒϓϩɾεΩϧϚοϓͳͲʣhttps://developer.hatenastaff.com/entry/2018/04/04/111410
·ͱΊ
• ʮ৽͍͠ྑ͍ʯͰͬͯ·͢• ϓϩμΫτΛ݈શʹ৽͍ͯ͘͘͠͠• νʔϜͰ͖߹͏औΓΈΛ͍ͯ͠·͢• ։ൃϩʔυϚοϓͷΈࠐΈ• ΤϯδχΞͰͷλεΫ༏ઌ͚• Ξοϓσʔτ൪
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂͳʹ͔͋Ε࠙ձ or Twitter @astj ·Ͱʂ