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

SLO策定とアラート設定までの長い道のり

 SLO策定とアラート設定までの長い道のり

CloudNative Days Spring 2021 ONLINE
でお話したときの資料です
https://event.cloudnativedays.jp/cndo2021/talks/201

C51ed1e43b09bfbbb09eead09f803aea?s=128

Shin'ya Ueoka

March 11, 2021
Tweet

Transcript

  1. SLOࡦఆͱΞϥʔτઃఆ·Ͱͷ ௕͍ಓͷΓ αΠϘ΢ζגࣜձࣾ ্Ԭ ਅ໵ (@ueokande) CloudNative Days Spring 2021

    Online
  2. Me • ্Ԭ ਅ໵ (@ueokande) • αΠϘ΢ζͰDevOpsͯ͠·͢ • kintone.comͷ։ൃɾӡ༻ •

    ٳ೔͸OSSΛ࡞ͬͨΓจॻΛॻ͍ͨΓ 2
  3. kintone • ۀ຿γεςϜΛ؆୯ʹ࡞ΕΔB2B޲͚αʔϏε • ࠃ಺֎18,000+ࣾͰಋೖ • USࢢ৔޲͚ʹ͸ʮkintone.comʯͱ͍͏ ϒϥϯυͰల։ͯ͠AWS্Ͱӡ༻ 3

  4. ࠓ೔࿩͢͜ͱ • US޲͚kintoneͷ SLO ͱ Ξϥʔτ ʹؔ͢ΔऔΓ૊Έ • kintone.comΛAWS্Ͱϩʔϯν͔ͯ͠ΒݱࡏʹࢸΔ·Ͱɺ SLOɾΞϥʔτΛԿ౓͔ݟ௚͖ͯ͠·ͨ͠

    • Ͳ͏͍ͬͨ؍఺Ͱվળͯ͠ɺͦͷ݁ՌͲ͏ͳ͔ͬͨΛ͓࿩͠·͢ 4
  5. ҎલͷSLOͱΞϥʔτ 5

  6. SLO/SLI/SLA͓͞Β͍ 6 ৚݅Λຬͨͤͳ͍ͱ͖ ԿΛ͢Δ͔ͷ߹ҙ αʔϏεͷ৴པੑͷ ໨ࢦ͢΂͖໨ඪ SLO Service Level Objective

    SLI Service Level Indicator SLA Service Level Agreement αʔϏεͷ৴པੑΛ ද͢ࢦඪ ྫ: 30೔ؒͷϦΫΤετ੒ޭ཰99.9% ྫ: 30೔ؒͷϦΫΤετ੒ޭ཰ ྫ: ϦΫΤετ੒ޭ཰99%ΛԼճΕ͹ શֹฦۚ
  7. ҎલͷkintoneͷSLOͱΞϥʔτ • kintone͕ར༻Ͱ͖Δ͔൱͔ʢՔಇ཰ʣʹண໨ͨ͠SLO • ੑೳɾεϧʔϓοτͳͲɺػೳ໘΍Ϣʔβʔࢹ఺ͷࢦඪ͸ͳ͔ͬͨ • ͦΕʹجͮ͘Ξϥʔτ΋ઃఆ͍ͯ͠ͳ͍ 7

  8. ༗༻ͳSLO͕ͳ͍ͱ… • ద੾ͳSLO΍ࢦඪ͕ͳ͘Ξϥʔτ΋࢓ֻ͚ʹ͍͘ • ۓٸରԠ͕ඞཁ͔ɺνϡʔχϯά໨ඪɺλεΫͷ༏ઌ౓͕ܾΊʹ͍͘ 8 ὸʮͳΜ͔LJOUPOFͷද͕ࣔΊͬͪΌ஗͍Μ͚ͩͲʯ

  9. SLOɾΞϥʔτΛݟ௚͖͔͚ͬ͢ • ࠃ಺ͷࣗࣾΠϯϑϥͰఏڙ͍ͯͨ͠US൛kintoneΛAWSʹ͓Ҿӽ͠ • ΞʔΩςΫνϟΛ࡮৽͠ɺSLOɾΞϥʔτγεςϜ΋ݟ௚͢νϟϯε 9

  10. SLOɾΞϥʔτ (v1) 10

  11. SLOɾΞϥʔτ (v1) • AWS൛kintone.comͷϩʔϯνલʹSLOͱΞϥʔτΛઃఆ • ओཁͳػೳʢAPIʣʹର͢Δࣾ಺޲͚ͷSLO • ҎલͷSLOʹج͖ͮɺμ΢ϯλΠϜΛߟྀͨ͠SLOΛઃఆ 11 Ϩίʔυߋ৽ɺΞϓϦ࡞੒ɺ…

  12. • μ΢ϯλΠϜʹجͮ͘SLOΛܾΊΔ SLO (v1) ͷྫ • API͝ͱͷμ΢ϯλΠϜΛఆٛ 12 ͋ΔAPI͕5෼΢Οϯυ΢Ͱ͍ͣΕ͔ͷج४Λ௒͑Ε͹μ΢ϯλΠϜ •

    ΢Οϯυ΢಺ͷΤϥʔ݅਺N݅Ҏ্ɺΤϥʔϨʔτ͕M%Ҏ্ • ΢Οϯυ΢಺ͷԠ౴࣌ؒXύʔηϯλΠϧ͕YඵҎ্ ͋ΔAPIͷ݄ؒՔಇ཰͕99.9%
  13. μ΢ϯλΠϜͱSLO • APIͷ݄ؒՔಇ཰͕99.9% = ݄ؒμ΢ϯλϜ43෼ 13 5min. 30day × ×

    ××× ×× ××××××× ××× × ×× × 200500 ΤϥʔόδΣοτ
  14. Ξϥʔτ (v1) • μ΢ϯλΠϜͷఆٛʹج͍ͮͨΞϥʔτΛͦΕͧΕͷAPIʹઃఆ 14 5෼΢Οϯυ΢Ͱ͍ͣΕ͔ͷᮢ஋ʹୡ͢ΔͱΞϥʔτ • ΢Οϯυ΢಺ͷΤϥʔ݅਺N݅Ҏ্ɺΤϥʔϨʔτ͕M%Ҏ্ • ΢Οϯυ΢಺ͷԠ౴࣌ؒXύʔηϯλΠϧ͕YඵҎ্

  15. ݁Ռ • SLOɾΞϥʔτ (v1) Λ͠͹Β͘ӡ༻ͯ͠՝୊͕͍͔ͭ͘ݟ͔ͭͬͨ • Ξϥʔτ͕աහ͗͢Δ • Ξϥʔτج४ͷఆ͕ٛᐆດʹͳΔ •

    γϯϓϧ͡Όͳ͍ 15
  16. աහ͗͢ΔΞϥʔτʛΞϥʔτ (v1) ͷ݁Ռ • Ξϥʔτͷج४஋͕ඇৗʹաහͩͬͨ • ϦΫΤετ਺ͷগͳ͍ػೳ΍εύΠΫͰݦஶ • աහա͗ΔΞϥʔτ͸νʔϜϝϯόʔͷ݈߁ঢ়ଶʹ΋Өڹ͢Δ 16

  17. Ξϥʔτج४͕ᐆດʹʛΞϥʔτ (v1) ͷ݁Ռ • ʮաහ͗͢ΔΞϥʔτʯͷ࣍ͷΞΫγϣϯ͸ᮢ஋ͷ؇࿨ • ϩʔϯνޙ͠͹Β͘͸ɺΞϥʔτͷௐ੔Λ܁Γฦͨ͠ • ௐ੔Λ܁Γฦ͍ͯ͠Δͱʮ͜ͷᮢ஋͸Ͳ͏͍͏ࠜڌͰܾΊ͚ͨͬʁʯ ͱɺج४஋ͷҙਤ͕Θ͔Βͳ͘ͳΔ͜ͱ΋

    17
  18. γϯϓϧ͡Όͳ͍ʛΞϥʔτ (v1) ͷ݁Ռ • Քಇ཰ܭࢉͷͨΊʹμ΢ϯλΠϜͱ͍͏֓೦Λಋೖ • μ΢ϯλΠϜ͸ɺͲΕ͘Β͍αʔϏεΛར༻Ͱ͖ͳ͘ͳ͔ͬͨͷ ίϛϡχέʔγϣϯʹ͸༗༻ • ҰํͰSLO࣮੷஋ͷूܭ͕ෳࡶͩͬͨΓɺΞϥʔτ͕ෳࡶʹ

    18
  19. SLOͱΞϥʔτͷݟ௚͠ • SLOɾΞϥʔτ͕ਖ਼͘͠ػೳͯ͠ͳ͍͜ͱʹؾ෇͘ • ਖ਼͘͠ͳ͍SLO͸ϢʔβʔʹՁ஋Λಧ͚ΒΕͳ͍ • ਖ਼͘͠ͳ͍Ξϥʔτ͸ϝϯόʔͷϞνϕʔγϣϯʹ΋ؔΘΔ • SLOɾΞϥʔτΛࠜຊతʹݟ௚͢͜ͱʹ (v2)

    19
  20. SLOɾΞϥʔτ (v2) 20

  21. The Site Reliability Workbook • Site Reliability Engineeringͷଓฤ • ΑΓ࣮ફతͳӡ༻ํ๏ʹϑΥʔΧε

    • ͜ͷຊΑΓSLOͱΞϥʔτΛݟ௚͠ 21
  22. ͳͥSLO͕ඞཁ͔ʁ • SLOΛܾΊΔ͜ͱͰσʔλυϦϒϯͳίϛϡχέʔγϣϯ͕Ͱ͖Δ • ͜Ε͸ো֐͔൱͔ • ύϑΥʔϚϯενϡʔχϯάͷج४ • λεΫͷ༏ઌ౓ •

    ৴པੑ͸ػೳͰ͋Γސ٬ʹಧ͚ΒΕΔՁ஋ 22 SLO: ։ൃɺSREɺεςʔΫϗϧμʔͰ߹ҙ͢ΔҰ؏ͨ͠໨ඪ
  23. SLO (v2) • SLO (v1) ͷ൓ল఺Λ΋ͱʹSLO (v2) Λ࠶ઃఆ • ʮkintoneΛշదʹ࢖͑Δ͔ʯ΋ߟ͑ͯج४Λߟ͑Δ

    • ΤϥʔϨʔτɾϨεϙϯελΠϜΛݸʑʹγϯϓϧͳSLOΛઃఆ 23 • ͋ΔAPIͷɺ1ϲ݄ͷϦΫΤετ੒ޭ཰͕M% • ͋ΔAPIͷɺ1ϲ݄ͷϦΫΤετͷX%͕Ԡ౴࣌ؒYඵະຬ
  24. μογϡϘʔυʹΑΔSLOୡ੒཰ͷՄࢹԽ • Ҏલ (v1) ͸݄຤ʹSLOͷ࣮੷Λܭࢉ͢Δ͚ͩͩͬͨ • ݄ͷ్தͰ࢒ΓͷΤϥʔόδΣοτ΋֬ೝͰ͖ͳ͔ͬͨ • ৽͍͠SLO͸ݱࡏͷୡ੒཰ΛμογϡϘʔυ্ʹՄࢹԽ 24

  25. SLOμογϡϘʔυͷڞ༗ • ΈΜͳ͕ݟ͑Δ৔ॴʹݱࡏͷSLO࣮੷Λදࣔ 25

  26. SLOͱΞϥʔτ • ͳͥγεςϜʹΞϥʔτ͕ඞཁ͔ʁ • ো֐Λ͍ͪૣ͘ؾ෇͖͍ͨ = SLOΛҧ൓͢Δલʹम෮͍ͨ͠ • SRE͸߹ҙͨ͠ΤϥʔόδΣοτΛશྗͰकΔ΂͖ •

    ΤϥʔόδΣοτΛ࢖͍੾Δલʹো֐Λݕ஌Ͱ͖ΔΞϥʔτ͕ඞཁ 26
  27. όʔϯϨʔτʹجͮ͘ΞϥʔτʛΞϥʔτ (v2) • όʔϯϨʔτ1 = SLOͷظؒ಺ͰΤϥʔόδΣοτΛ࢖͍੾Δ • ΤϥʔόδΣοτΛ࢖͍੾Δ଎౓ͷো֐Λؾ෇͘ΞϥʔτΛ࢓ֻ͚Δ 27 ͨͱ͑͹30೔

    όʔϯϨʔτ: ΤϥʔόδΣοτͷফඅ଎౓Λද͢ࢦඪ
  28. όʔϯϨʔτͱΤϥʔόδΣοτͷؔ܎ 28 όʔϯϨʔτ2 15೔ͰΤϥʔόδΣοτΛ ࢖͍੾Δ όʔϯϨʔτ10 3೔ͰΤϥʔόδΣοτΛ ࢖͍੾Δ ΤϥʔόδΣοτফඅྔ 0%

    20% 40% 60% 80% 100% ܦա೔਺ 0 5 10 15 20 25 30 όʔϯϨʔτ1 30೔ͰΤϥʔόδΣοτΛ ࢖͍੾Δ
  29. • SRWBʹ͸ҎԼͷ2ͭͷόʔϯϨʔτ͔Βελʔτ͢ΔͱΑ͍ͱ͋Δ • SLO͕1ϲ݄ϦΫΤετ੒ޭ཰99.9%ͷͱ͖ͷΞϥʔτͷྫ όʔϯϨʔτʹجͮ͘Ξϥʔτͷᮢ஋ 29 ΤϥʔόδΣοτ ফඅྔ ΢Οϯυ΢ όʔϯϨʔτ

    2% 1H 14.4 5% 6H 6 APIͷ1࣌ؒͷΤϥʔϨʔτ > (14.4 * 0.001) APIͷ6࣌ؒͷΤϥʔϨʔτ > (6 * 0.001)
  30. SLOɾΞϥʔτ (v2) ͷ݁Ռ • ΤϥʔόδΣοτΛ࢖͍੾Βͣʹ͙͢ʹऩଋ͢Δো֐ʢGCʹΑΔ ஗ԆͳͲʣͰ໷ؒى͜͞ΕΔ͜ͱ͕ݮͬͨ • μογϡϘʔυʹΑΓνʔϜ಺ͰSLO΁ͷҙ͕ࣝߴ·ΓɺΞϥʔτ ͱͷؔ܎ੑ΋Θ͔Γ΍͘͢ͳͬͨ •

    γϯϓϧͳSLOͰෳࡶͳ࣮૷΍ίϛϡχέʔγϣϯίετ͕ݮͬͨ 30
  31. Lesson Learned SLOɾΞϥʔτվળ͔Βͷֶͼ

  32. ୭ͷͨΊͷSLO͔ • SLOΛୡ੒͢Δ͜ͱͰ޾ͤʹͳΔਓʢϢʔβʔʣ͕͍Δ͸ͣ • ӡ༻ͷಓ۩͚ͩͰͳ͘ɺͦͷഎܠʹ͸αʔϏεͷར༻ऀ͕͍Δ • ϢʔβϏϦςΟ΍৴པੑΛߟྀͯ͠SLOΛݟ௚ͦ͏ 32

  33. γϯϓϧͰ͋Ε • ෳࡶͳSLO͸ίϛϡχέʔγϣϯͰ΋ো֐ͱͳΔ • ޱ಄Ͱਓʹઆ໌Ͱ͖Δ͘Β͍ͷγϯϓϧ͕͞େࣄ • ෛ࠴ʹͳΔલʹSLOΛৼΓସ͑ΕΔΑ͏ʹ͠Α͏ 33

  34. ΈΜͳ͕ݟ͑Δ৔ॴʹՄࢹԽ • ݟ͑Δ৔ॴ΍ಋઢ͕ͳ͍ͱ୭΋ҙࣝ͠ͳ͍ • ՄࢹԽʹΑΓɺϝϯόʔશһ͕SLOΛҙࣝ͢Δ͜ͱ͕૿͑ͨ • ݱࡏ͸νʔϜͰμογϡϘʔυΛݟΔձΛ2िؒʹ1ճ։࠵ 34

  35. σʔλʹجͮ͘ίϛϡχέʔγϣϯ • λεΫͷ༏ઌ౓΋SLOʹج͍ܾͮͯΊΒΕΔΑ͏ʹ • ։ൃɺSREɺεςʔΫϗϧμʔؒͰҰ؏ͨ͠໨ඪΛઃఆͰ͖Δ • νϡʔχϯάΛ͢Δͱ͖΋ɺצʹཔΒͣσʔλͰ൑அ͠Α͏ 35

  36. ͜Ε͔ΒͷνϟϨϯδ • kintoneͷ੡඼։ൃνʔϜ಺΁ͷSLOΛ޿ΊΔ׆ಈ • SLOະୡͳͷʹΞʔΩςΫνϟతʹνϡʔχϯά͕೉͍͠έʔε • Ϣʔβʔͷ࢖͍ํ࣍ୈͰ༻ҙʹSLOΛഁΕΔέʔε 36

  37. ·ͱΊ • SLOʹΑͬͯҰ؏ͨ͠σʔλυϦϒϯͳίϛϡχέʔγϣϯ͕Ͱ͖Δ • ఆظతSLOɾΞϥʔτͷվળͰͷֶͼ͕͋ͬͨ • ୭ͷͨΊͷSLO͔ʁ • γϯϓϧͰ͋Ε •

    ΈΜͳ͕ݟ͑Δ৔ॴͰՄࢹԽ • σʔλʹجͮ͘ίϛϡχέʔγϣϯ • ͜Ε͔Β΋SLOΛ΍͍͍ͬͯͧ͘💪 37