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

Avatar for Narimichi Takamura

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