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

MSP における SRE の実践 / The practice of SRE in MSP

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
Tweet

More Decks by Narimichi Takamura

Other Decks in Technology

Transcript

  1. MSP ʹ͓͚Δ Site Reliability Engineering ͷ࣮ફ גࣜձࣾϋʔτϏʔπ MSPࣄۀ෦ ߴଜ ੒ಓʢ@nari_exʣ

    2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 1
  2. ࣗݾ঺հ • Takamura Narimchi / ߴଜ ੒ಓ • @nari_ex •

    גࣜձࣾϋʔτϏʔπ • औక໾ VP of Engineering • MSPࣄۀ෦ΤϯδχΞϦϯάάϧʔ ϓγχΞϚωʔδϟʔ • MSPࣄۀ෦ӡ༻άϧʔϓγχΞϚ ωʔδϟʔ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 2
  3. גࣜձࣾϋʔτϏʔπ • 2005೥૑ۀ • ࣄۀ಺༰ • MSP ࣄۀ • Πϯϑϥӡ༻ͷΞ΢τιʔαʔ

    • ؂ࢹɺઃܭɺߏஙɺΫϥ΢υಋೖࢧ ԉɺίϯαϧςΟϯά • ։ൃࣄۀ • ࣾһ਺: 76໊ʢΤϯδχΞ: 60໊ʣ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 3
  4. ͝஫ҙ • SRE ͷઆ໌͸Ͱ͖Δ͚ͩ SRE ຊʹج͍͍ͯ·͕͢ݸਓతͳղऍ ΛؚΉ෦෼͕͋Γ·͢ • ݫີͳఆٛΛ֬ೝ͍ͨ͠৔߹͸ɺGoogle ͷॻ੶΍υΩϡϝϯτ

    Λࢀর͍ͩ͘͞ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 8
  5. SRE ͱ͸ • 2ͭͷݴ༿ͷུޠ • Site Reliability EngineeringʢSREʣ • ద੾ͳαΠτ৴པੑΛ࣮ݱ͢ΔͨΊͷٕज़ख๏ɾٕज़ྖҬ

    • ఻౷తͳ ops ͱ͸ҰઢΛը͢ • Site Reliability EngineerʢSREsʣ • ্هख๏Λ࣮ݱ͢Δ৬छ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 9
  6. SRE ͕ੜ·Εͨഎܠ • Motivation • େن໛ͷෳࡶͳίϯϐϡʔλγεςϜΛӡ༻͢Δͱ͖ɺγεςϜͷ੒௕ɾ֦େʹൺྫͯ͠ӡ༻ܥΤϯδχΞ ͷਓ਺͕όϯόϯ૿͑ΔͷΛ΍Ί͍ͨ • ։ൃνʔϜʢDevʣͱӡ༻νʔϜʢOpsʣͷରཱΛղܾ͍ͨ͠ •

    Basic Concepts • γεςϜɾମ੍Λιϑτ΢ΣΞΤϯδχΞϦϯάͱͯ͋͠Δ΂͖࢟ʹ͢Δ • ૊৫ߏ଄తͳରཱΛͳ͘͢ • Core Practices • ιϑτ΢ΣΞΤϯδχΞʹΑΔ఻౷త ops ͷ࠶ఆٛɾஔ׵ • ্هͷཤߦɾਪਐɾҡ࣋ʹ͓͍ͯձ͕ࣾ SRE Λࢧ࣋ɾࢧԉ͢Δ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 11
  7. 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
  8. ิ଍: 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
  9. ҙ༁ DevOps SRE ૊৫ͷαΠϩΛݮΒ͢ ʢ૊৫ؒͰʣॴ༗ݖΛڞ༗͢Δ ΤϥʔͷൃੜΛલఏͱ͢Δ SLO Λఆٛ͠ɺඇ೉Λ൐Θͳ͍ϙετϞ ʔςϜΛߦ͏ ஈ֊తʹมߋ͢Δ

    ࣦഊ࣌ͷίετΛݮΒ͢ πʔϧͱࣗಈԽΛ׆༻͢Δ ໨ͷલͷ࢓ࣄͷࣗಈԽΛߦ͏ શͯΛܭଌ͢Δ τΠϧͱ৴པੑͷܭଌΛߦ͏ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 16
  10. Before... • ؂ࢹɾϞχλϦϯάͷઃఆ࡞ۀ • ؂ࢹΤʔδΣϯτઃఆ: ֤αʔό΁ϩάΠϯͯ͠ख࡞ۀͰઃఆهड़ • ؂ࢹ߲໨ݕ౼: ىಈϓϩηεΛ֬ೝͯ͠؂ࢹ߲໨ΛϦετΞοϓ •

    ؂ࢹαʔόઃఆ: ؂ࢹαʔόʹϩάΠϯͯ͠3ͭҎ্ͷઃఆϑΝΠϧΛߋ৽ • ઃఆ൓ө: ੠ֻ͚Λ͠ͳ͕ΒԹ͔Έͷ͋Δ൓ө࡞ۀ • ࢓༷ॻ࡞੒ • ϑΥʔϚοτ: Word • ૢ࡞: ͢΂ͯख࡞ۀ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 19
  11. 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
  12. kinjiro • ςϯϓϨͱϢʔβࢦఆͷύϥϝʔλʹ ج͍ͮͯ؂ࢹ࢓༷ॻͷࣗಈੜ੒Λߦ͏ • Markdown ϕʔεͰهड़ • Git Ͱ؅ཧ

    • ίϛοτϑοΫͰࣗಈతʹ PDF ʹม׵ => Google Drive ΁อଘ • ߋ৽͸ Gitlab ্ʹͯϓϧϦΫΤετ ϕʔεͰߦΘΕΔ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 21
  13. kinjiro ೖྗ߲໨ • ֤छҊ݅৘ใ • ར༻ج൫ʢAWS, Azure, GCP...ʣ • OS

    • Autoscaling ༗ແ • ϛυϧ΢ΣΞ • ... 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 22
  14. ܶతϏϑΥʔΞϑλʔ Before After ؂ࢹΤʔδΣϯτઃఆ ֤αʔό΁ϩάΠϯͯ͠ख࡞ۀͰઃఆه ड़ தԝ؅ཧͷͨΊෆཁ ؂ࢹ߲໨ݕ౼ ىಈϓϩηεΛ֬ೝͯ͠؂ࢹ߲໨ΛϦε τΞοϓ

    େ൒Λࣗಈੜ੒ ؂ࢹαʔόઃఆ ෳ਺ͷ؂ࢹαʔόͰෳ਺ͷઃఆϑΝΠϧ Λ࡞੒ େ൒Λࣗಈੜ੒ ઃఆ൓ө ੠ֻ͚Λ͠ͳ͕ΒԹ͔Έͷ͋Δखॱʹ ج͍ͯ൓ө ίϚϯυҰൃͰ൓ө ࢓༷ॻϑΥʔϚοτ Word Markdown ࢓༷ॻߋ৽ૢ࡞ ͢΂ͯख࡞ۀ େ൒Λࣗಈੜ੒ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 23
  15. ϦϦʔεΤϯδχΞϦϯάͷࢧԉ • Aࣾ͞·: HBͷϚωʔδυαʔϏε͝ར༻લͷঢ়گ • ϓϥΠϕʔτΫϥ΢υ؀ڥ • rsync ʹΑΔ׬શखಈͷσϓϩΠ •

    සൃ͢ΔσϓϩΠىҼͷো֐ • ϩʔϧόοΫ͢Δʹ΋Ұۤ࿑ • ίϯςϯπߋ৽ͷͨΊʹຖ೔ 2 ࣌ؒఀࢭ • ॎׂΓͳ Dev ͱ Opsʢଞࣾʣ ͱͦΕΒΛݟकΔ͔͠ͳ͍ BizʢAࣾ͞·ʣ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 27
  16. ϦϦʔεΤϯδχΞϦϯάͷࢧԉ • ϋʔτϏʔπͷ׆ಈ • BizɺDevɺOps ͷ3ऀʢ3ࣾʣ߹ಉͷϛʔςΟϯάΛઃఆ • ֤ʑͷࢹ఺͔Β՝୊Λચ͍ग़͠ • ༏ઌॱҐ෇͚ɺ߹ҙܗ੒Λͯ͠ํ޲ੑΛܾఆ

    • Dev ͱڠྗ͠ͳ͕ΒҎԼΛಋೖɾӡ༻ • AWSɺCI/CDπʔϧɺBlue-Green σϓϩΠϝϯτɺηΩϡϦςΟιϦϡʔγϣϯ • σϓϩΠʹؔΘΔιϑτ΢ΣΞΛϋʔτϏʔπʹͯ։ൃ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 28
  17. ϦϦʔεΤϯδχΞϦϯάࢧԉͷ݁Ռ Before After ఀࢭϝϯςφϯε࣌ؒ ຖ೔໷ؒ 2 ࣌ؒ ͳ͠ σϓϩΠͷ৚݅ ఀࢭϝϯςඞਢ

    ΦϯϥΠϯͰ࣮ࢪՄೳ σϓϩΠαΠΫϧ ࠷େͰ΋1೔1ճ 1೔2ʙ3ճҎ্ ఀࢭϝϯς͕ෆཁʹɻσϓϩΠαΠΫϧ΋ߴ଎Խʂ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 29
  18. ϩά෼ੳج൫ͷઃܭɾߏங • Bࣾ͞·: HBͷϚωʔδυαʔϏε͝ར༻લͷঢ়گ • ๲େͳϩάΛඇಉظͰ෼ੳج൫΁సૹ • ඇಉظͳͷͰ͙͢ʹϢʔβಈ޲Λ֬ೝͰ͖ͳ͍ • సૹ͸ࣗಈ͕ͩɺ࠶ૹ͸खಈͰߦ͏ඞཁ͋Γ

    • ϩάྔ૿Ճʹ൐͍సૹ࣌ͷύϑΥʔϚϯε΋՝୊ʹ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 31
  19. ϩά෼ੳج൫ͷઃܭɾߏங • ϋʔτϏʔπͷ׆ಈ • ސ٬ͷ SREs ͱ։ൃνʔϜ͔ΒώΞϦϯάΛߦ͍՝୊Λநग़ • ϩάϑΥʔϚοτɺจࣈίʔυ΍సૹʹ࢖͍ͬͯΔಠࣗϓϥάΠϯͳͲΛ ΨοπϦௐࠪ

    • αʔϏεαΠυͷطଘͷϫʔΫϑϩʔΛ֬ೝ • ৽ϩά෼ੳج൫ͷఏҊɾߏஙɾӡ༻ • ؊ͱͳΔϩάసૹʹ͸HBʹͯ։ൃͨ͠ fluentd ϓϥάΠϯΛར༻ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 32
  20. ϩά෼ੳج൫վળͷ݁Ռ Before After ࠶ૹॲཧ ΤϯδχΞʹΑΔखಈ࡞ۀ ࣗಈ αʔό୆਺ 9୆ 5୆ ϩάग़ྗ͔Βσʔλج൫౤

    ೖͷॴཁ࣌ؒ 1࣌ؒ ϦΞϧλΠϜ ݁Ռͱͯ͠ɺ௿ίετԽ͕࣮ݱ͞Εͨͱಉ࣌ʹɺ ΧελϚʔαϙʔτ୲౰ऀ༷͕ 1 ࣌ؒ଴ػ͢Δ͜ͱͳ͘ଈ໰͍߹Θͤ΁ճ౴Մೳʹ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 33
  21. DevOps / SRE ࣮ફͷϙΠϯτ • ιϑτ΢ΣΞΤϯδχΞϦϯά • ར༻πʔϧ • ΧϧνϟʔʢϚΠϯυηοτʣ

    • MSP ͳΒͰ͸ͷಛ௃͋Γ 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 35
  22. MSP ʹඞཁͳΧϧνϟʔͱ SRE ࣮ફͷ伴 • MSP ͱ௚઀΍ΓͱΓ͢Δސ٬͸ Dev Ҏ֎ʹ΋ BizɺOps

    ΍ SREs ͷ৔߹΋͋Δ • ʮΠϯϑϥҎ֎ݟ·ͤΜʂʯͰ͸ͳ͘ɺঢ়گʹԠͯ͡ΞϓϦ΍αΠτͦͷ ΋ͷʹ౿ΈࠐΉ • Ωʔϫʔυ͸ ʮઌճΓʯʮओମੑʯʮೳಈੑʯ • MSPͷจ຺Ͱ͸͋ΒΏΔγʔϯͰ SRE ͸༗ޮ • ཱ৔໰ΘͣɺαʔϏεͷ৴པੑΛߴΊΔ͜ͱʹয఺Λ౰ͯͯɺओମతʹਂ͘ί ϛοτ͍ͯ͘͜͠ͱ͕࣮ફͷ伴 2019/05/21ʢਆށ։࠵ʣ, 2019/05/27ʢ౦ژ։࠵ʣ αΠόʔ߈ܸʹඋ͑ΔʮDevOpsʯͱ͍͏બ୒ | @nari_ex 36