Share
Embed
MSP における SRE の実践 / The practice of SRE in MSP
企業セミナー「サイバー攻撃に備える「DevOps」という選択」での発表資料です。
https://www.kdl.co.jp/event_info/seminar/2019/04/devops.html
https://appsecbriefing.doorkeeper.jp/events/91423
Narimichi Takamura
May 27, 2019
Transcript
37 slides
-
MSP ʹ͓͚Δ Site Reliability Engineering ͷ࣮ફ גࣜձࣾϋʔτϏʔπ MSPࣄۀ෦ ߴଜ ಓʢ@nari_exʣ
2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 1 -
ࣗݾհ • Takamura Narimchi / ߴଜ ಓ • @nari_ex •
גࣜձࣾϋʔτϏʔπ • औక VP of Engineering • MSPࣄۀ෦ΤϯδχΞϦϯάάϧʔ ϓγχΞϚωʔδϟʔ • MSPࣄۀ෦ӡ༻άϧʔϓγχΞϚ ωʔδϟʔ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 2 -
גࣜձࣾϋʔτϏʔπ • 2005ۀ • ࣄۀ༰ • MSP ࣄۀ • Πϯϑϥӡ༻ͷΞτιʔαʔ
• ࢹɺઃܭɺߏஙɺΫϥυಋೖࢧ ԉɺίϯαϧςΟϯά • ։ൃࣄۀ • ࣾһ: 76໊ʢΤϯδχΞ: 60໊ʣ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 3 -
͝ҙ • SRE ͷઆ໌Ͱ͖Δ͚ͩ SRE ຊʹج͍͍ͯ·͕͢ݸਓతͳղऍ ΛؚΉ෦͕͋Γ·͢ • ݫີͳఆٛΛ֬ೝ͍ͨ͠߹ɺGoogle ͷॻ੶υΩϡϝϯτ
Λࢀর͍ͩ͘͞ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 8 -
SRE ͱ • 2ͭͷݴ༿ͷུޠ • Site Reliability EngineeringʢSREʣ • దͳαΠτ৴པੑΛ࣮ݱ͢ΔͨΊͷٕज़ख๏ɾٕज़ྖҬ
• ౷తͳ ops ͱҰઢΛը͢ • Site Reliability EngineerʢSREsʣ • ্هख๏Λ࣮ݱ͢Δ৬छ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 9 -
౷తͳ ops • جຊతʹख࡞ۀʹཔΔ • γεςϜվળͷͨͼʹखॱॻʹखॱ͕Ճ͞ΕɺͲΜͲΜ ͕૿͍͑ͯ͘ • ҆ఆՔಇΛॏࢹ͠ա͗Δ͋·ΓɺੵۃతͳػೳվળΛߦ͓͏ͱ ͢Δ
Dev ͱରཱ͕ͪ͠ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 10 -
SRE ͕ੜ·Εͨഎܠ • Motivation • େنͷෳࡶͳίϯϐϡʔλγεςϜΛӡ༻͢Δͱ͖ɺγεςϜͷɾ֦େʹൺྫͯ͠ӡ༻ܥΤϯδχΞ ͷਓ͕όϯόϯ૿͑ΔͷΛΊ͍ͨ • ։ൃνʔϜʢDevʣͱӡ༻νʔϜʢOpsʣͷରཱΛղܾ͍ͨ͠ •
Basic Concepts • γεςϜɾମ੍ΛιϑτΣΞΤϯδχΞϦϯάͱͯ͋͠Δ͖࢟ʹ͢Δ • ৫ߏతͳରཱΛͳ͘͢ • Core Practices • ιϑτΣΞΤϯδχΞʹΑΔ౷త ops ͷ࠶ఆٛɾஔ • ্هͷཤߦɾਪਐɾҡ࣋ʹ͓͍ͯձ͕ࣾ SRE Λࢧ࣋ɾࢧԉ͢Δ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 11 -
class SRE implements DevOps1 • DevOps ͱؔͳ͘ SRE ੜ·Ε͚ͨͲɺ݁Ռతʹ DevOps
ͷֶ Λମݱ͍ͯͨ͠ͱ͍͏ྲྀΕ • SRE ͷϓϥΫςΟε DevOps ͷൣғ֎ͷͷؚΜͰ͍Δ͕ɺൣғ ͷͷʹ͍ͭͯ۩ମతͳख๏͕ఏҊ͞Ε͍ͯΔͱ͍͏ • ͜ͷؔੑΛҰݴͰද͢ͱ class SRE implements DevOps • DevOps ͱ SRE ڝ߹͢Δख๏Ͱͳ͍͘͠༑ͩͪ 1 SRE vs. DevOps: competing standards or close friends? 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 14 -
ิ: DevOps ͱ SRE ͷؔੑ1 ͨͱ͑ DevOps ͷ 5 ͭͷப
SRE ͷϓϥΫςΟεͱରԠͤ͞Δ͜ͱ͕Ͱ͖Δ DevOps SRE Reduce Organization Silos Share ownership Accept Failure as Normal SLOs & Blameless PMs Implement Gradual Change Reduce costs of failure Leverage Tooling & Automation Automate this year's job away Measure Everything Measure toil and reliablity 1 SRE vs. DevOps: competing standards or close friends? 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 15 -
ҙ༁ DevOps SRE ৫ͷαΠϩΛݮΒ͢ ʢ৫ؒͰʣॴ༗ݖΛڞ༗͢Δ ΤϥʔͷൃੜΛલఏͱ͢Δ SLO Λఆٛ͠ɺඇΛΘͳ͍ϙετϞ ʔςϜΛߦ͏ ஈ֊తʹมߋ͢Δ
ࣦഊ࣌ͷίετΛݮΒ͢ πʔϧͱࣗಈԽΛ׆༻͢Δ ͷલͷࣄͷࣗಈԽΛߦ͏ શͯΛܭଌ͢Δ τΠϧͱ৴པੑͷܭଌΛߦ͏ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 16 -
Before... • ࢹɾϞχλϦϯάͷઃఆ࡞ۀ • ࢹΤʔδΣϯτઃఆ: ֤αʔόϩάΠϯͯ͠ख࡞ۀͰઃఆهड़ • ࢹ߲ݕ౼: ىಈϓϩηεΛ֬ೝͯ͠ࢹ߲ΛϦετΞοϓ •
ࢹαʔόઃఆ: ࢹαʔόʹϩάΠϯͯ͠3ͭҎ্ͷઃఆϑΝΠϧΛߋ৽ • ઃఆө: ֻ͚Λ͠ͳ͕ΒԹ͔Έͷ͋Δө࡞ۀ • ༷ॻ࡞ • ϑΥʔϚοτ: Word • ૢ࡞: ͯ͢ख࡞ۀ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 19 -
happo • ࢹɾϝτϦΫεઃఆΛதԝཧɾҰ੍ׅޚ͢ΔΞʔΩςΫνϟ • ઃఆϑΝΠϧΛࣗಈੜɺYAMLʹͯཧ • ࢮ׆ࢹ͚ͩͰͳ͘ϝτϦΫεऩूߦ͏ΤʔδΣϯτϓϩάϥϜΛ2 • Golang ͳͷͰόΠφϦΛஔ͚ͩ͘Ͱ࣮ߦՄೳ
• ࢮ׆ࢹ Nagios ޓ • ΦʔτεέʔϦϯάʹରԠ • ϝτϦΫεऩू sensu-plugin ޓ => mackerel-agent-plugins ޓ 2 https://github.com/heartbeatsjp/happo-agent 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 20 -
kinjiro • ςϯϓϨͱϢʔβࢦఆͷύϥϝʔλʹ ج͍ͮͯࢹ༷ॻͷࣗಈੜΛߦ͏ • Markdown ϕʔεͰهड़ • Git Ͱཧ
• ίϛοτϑοΫͰࣗಈతʹ PDF ʹม => Google Drive อଘ • ߋ৽ Gitlab ্ʹͯϓϧϦΫΤετ ϕʔεͰߦΘΕΔ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 21 -
kinjiro ೖྗ߲ • ֤छҊ݅ใ • ར༻ج൫ʢAWS, Azure, GCP...ʣ • OS
• Autoscaling ༗ແ • ϛυϧΣΞ • ... 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 22 -
ܶతϏϑΥʔΞϑλʔ Before After ࢹΤʔδΣϯτઃఆ ֤αʔόϩάΠϯͯ͠ख࡞ۀͰઃఆه ड़ தԝཧͷͨΊෆཁ ࢹ߲ݕ౼ ىಈϓϩηεΛ֬ೝͯ͠ࢹ߲ΛϦε τΞοϓ
େΛࣗಈੜ ࢹαʔόઃఆ ෳͷࢹαʔόͰෳͷઃఆϑΝΠϧ Λ࡞ େΛࣗಈੜ ઃఆө ֻ͚Λ͠ͳ͕ΒԹ͔Έͷ͋Δखॱʹ ج͍ͯө ίϚϯυҰൃͰө ༷ॻϑΥʔϚοτ Word Markdown ༷ॻߋ৽ૢ࡞ ͯ͢ख࡞ۀ େΛࣗಈੜ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 23 -
ϦϦʔεΤϯδχΞϦϯάͷࢧԉ • Aࣾ͞·: HBͷϚωʔδυαʔϏε͝ར༻લͷঢ়گ • ϓϥΠϕʔτΫϥυڥ • rsync ʹΑΔશखಈͷσϓϩΠ •
සൃ͢ΔσϓϩΠىҼͷো • ϩʔϧόοΫ͢ΔʹҰۤ࿑ • ίϯςϯπߋ৽ͷͨΊʹຖ 2 ࣌ؒఀࢭ • ॎׂΓͳ Dev ͱ Opsʢଞࣾʣ ͱͦΕΒΛݟकΔ͔͠ͳ͍ BizʢAࣾ͞·ʣ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 27 -
ϦϦʔεΤϯδχΞϦϯάͷࢧԉ • ϋʔτϏʔπͷ׆ಈ • BizɺDevɺOps ͷ3ऀʢ3ࣾʣ߹ಉͷϛʔςΟϯάΛઃఆ • ֤ʑͷࢹ͔Β՝Λચ͍ग़͠ • ༏ઌॱҐ͚ɺ߹ҙܗΛͯ͠ํੑΛܾఆ
• Dev ͱڠྗ͠ͳ͕ΒҎԼΛಋೖɾӡ༻ • AWSɺCI/CDπʔϧɺBlue-Green σϓϩΠϝϯτɺηΩϡϦςΟιϦϡʔγϣϯ • σϓϩΠʹؔΘΔιϑτΣΞΛϋʔτϏʔπʹͯ։ൃ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 28 -
ϦϦʔεΤϯδχΞϦϯάࢧԉͷ݁Ռ Before After ఀࢭϝϯςφϯε࣌ؒ ຖؒ 2 ࣌ؒ ͳ͠ σϓϩΠͷ݅ ఀࢭϝϯςඞਢ
ΦϯϥΠϯͰ࣮ࢪՄೳ σϓϩΠαΠΫϧ ࠷େͰ11ճ 12ʙ3ճҎ্ ఀࢭϝϯς͕ෆཁʹɻσϓϩΠαΠΫϧߴԽʂ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 29 -
ϩάੳج൫ͷઃܭɾߏங • Bࣾ͞·: HBͷϚωʔδυαʔϏε͝ར༻લͷঢ়گ • େͳϩάΛඇಉظͰੳج൫సૹ • ඇಉظͳͷͰ͙͢ʹϢʔβಈΛ֬ೝͰ͖ͳ͍ • సૹࣗಈ͕ͩɺ࠶ૹखಈͰߦ͏ඞཁ͋Γ
• ϩάྔ૿Ճʹ͍సૹ࣌ͷύϑΥʔϚϯε՝ʹ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 31 -
ϩάੳج൫ͷઃܭɾߏங • ϋʔτϏʔπͷ׆ಈ • ސ٬ͷ SREs ͱ։ൃνʔϜ͔ΒώΞϦϯάΛߦ͍՝Λநग़ • ϩάϑΥʔϚοτɺจࣈίʔυసૹʹ͍ͬͯΔಠࣗϓϥάΠϯͳͲΛ ΨοπϦௐࠪ
• αʔϏεαΠυͷطଘͷϫʔΫϑϩʔΛ֬ೝ • ৽ϩάੳج൫ͷఏҊɾߏஙɾӡ༻ • ؊ͱͳΔϩάసૹʹHBʹͯ։ൃͨ͠ fluentd ϓϥάΠϯΛར༻ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 32 -
ϩάੳج൫վળͷ݁Ռ Before After ࠶ૹॲཧ ΤϯδχΞʹΑΔखಈ࡞ۀ ࣗಈ αʔό 9 5 ϩάग़ྗ͔Βσʔλج൫
ೖͷॴཁ࣌ؒ 1࣌ؒ ϦΞϧλΠϜ ݁Ռͱͯ͠ɺίετԽ͕࣮ݱ͞Εͨͱಉ࣌ʹɺ ΧελϚʔαϙʔτ୲ऀ༷͕ 1 ࣌ؒػ͢Δ͜ͱͳ͘ଈ͍߹ΘͤճՄೳʹ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 33 -
DevOps / SRE ࣮ફͷϙΠϯτ • ιϑτΣΞΤϯδχΞϦϯά • ར༻πʔϧ • ΧϧνϟʔʢϚΠϯυηοτʣ
• MSP ͳΒͰͷಛ͋Γ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 35 -
MSP ʹඞཁͳΧϧνϟʔͱ SRE ࣮ફͷ伴 • MSP ͱΓͱΓ͢Δސ٬ Dev Ҏ֎ʹ BizɺOps
SREs ͷ߹͋Δ • ʮΠϯϑϥҎ֎ݟ·ͤΜʂʯͰͳ͘ɺঢ়گʹԠͯ͡ΞϓϦαΠτͦͷ ͷʹ౿ΈࠐΉ • Ωʔϫʔυ ʮઌճΓʯʮओମੑʯʮೳಈੑʯ • MSPͷจ຺Ͱ͋ΒΏΔγʔϯͰ SRE ༗ޮ • ཱΘͣɺαʔϏεͷ৴པੑΛߴΊΔ͜ͱʹযΛͯͯɺओମతʹਂ͘ί ϛοτ͍ͯ͘͜͠ͱ͕࣮ફͷ伴 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ | @nari_ex 36