Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
よりUXに近いSLI・SLOの運用による可用性の再設計
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
nade
May 15, 2022
Programming
8.8k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
よりUXに近いSLI・SLOの運用による可用性の再設計
SRE NEXT 2022
https://sre-next.dev/2022/schedule/#jp47
nade
May 15, 2022
More Decks by nade
See All by nade
Server-Driven UI入門: 画面のStateを直接受け取るアプローチ
kazumanagano
5
4.3k
タップルのサービス特性に合わせた設計方針を考える
kazumanagano
0
250
iOS開発におけるGitHub Actions self-hosted runnerを利用したオンプレ CI/CD のすゝめ
kazumanagano
0
160
Github Actions self-hosted runners のすゝめ
kazumanagano
0
570
モバイルアプリのオブザーバビリティを向上させるプラクティス
kazumanagano
8
5.1k
タップル モバイルアプリにE2Eテストが導入されるまでの軌跡
kazumanagano
0
130
App Size Optimization への挑戦
kazumanagano
1
1.4k
無料トライアル施策のしくじりから学ぶサブスクリプション構成 ベストプラクティス
kazumanagano
2
2.4k
モノレポで複数アプリを リリースする場合の運用戦略
kazumanagano
0
4.1k
Other Decks in Programming
See All in Programming
3Dシーンの圧縮
fadis
1
770
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
240
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
240
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
110
New "Type" system on PicoRuby
pocke
1
920
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
230
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
130
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
10
4.1k
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
600
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
3
520
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
120
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
3.6M
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
190
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
230
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
Site-Speed That Sticks
csswizardry
13
1.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Fireside Chat
paigeccino
42
3.9k
BBQ
matthewcrist
89
10k
Transcript
ΑΓUXʹ͍ۙSLIɾSLOͷӡ ༻ʹΑΔՄ༻ੑͷ࠶ઃܭ Ӭ Ұഅ
ࣗݾհ • 2019/4ʙ λοϓϧʹiOSΤϯδχΞͱͯ͠ δϣΠϯ • 2021ΑΓSREνʔϜʹϞόΠϧΤϯδχ Ξͱͯ͠ॴଐ • ݱࡏαʔϏεͷ৴པੑΛߴΊΔϛογϣ
ϯʹऔΓΜͰ͍·͢ Ӭ Ұഅ
λοϓϧͷαʔϏεʹ͍ͭͯ https://tapple.me/ 20145݄ʹϦϦʔεͨ͠ࠃ࠷େنͷϚονϯάΞϓϦͰ͢ɻ1,000छҎ্ͷσʔτϓϥϯ͔Β૬ख Λืूͯ͠ϚονϯάͰ͖Δʮ͓Ͱ͔͚ػೳʯΛఏڙ͠ɺऩɾ৬ۀͳͲͷ͚݅ͩͰͳ͘ɺझຯΛ͖ͬ ͔͚ʹࣗΒ͘͠աͤ͝Δύʔτφʔͱग़ձ͑Δͷ͕ಛͰɺ20ͷஉঁΛத৺ʹࢧ࣋Λड͚͍ͯ·͢ɻ
• SREνʔϜʹϞ バ ΠϧΤϯ ジ χΞ(iOSɺAndroid֤1ਓ) が ઐଐ で ॴଐ͢Δܗ
• ΑΓϢʔβʔʹ͍ۙ෦ͰͷܭଌɺBFFͷਪਐͱ͍ͬͨόοΫΤϯυSRE͚ͩͰखΛ৳ͮ͠Β ͍෦ʹΞδϦςΟߴ͘औΓΊΔΑ͏ʹ͢Δత • ΠϯϑϥόοΫΤϯυͷઐੑͷ֫ಘ SREνʔϜͷMobileΤϯδχΞʹ͍ͭͯ
ࠓճͷൃද༰ SLI / SLOΛϞόΠϧΞϓϦέʔγϣϯଆͰܭଌ͞ΕΔࢦඪΛͱʹ࠶ઃܭ͠ɺΑΓUXʹ͍ۙࢦඪΛࢦ ͢औΓΈͷհ • ৴པੑΛճ෮ͤ͞ΔͨΊͷΞΫγϣϯɺΠϯγσϯτͷରॲΛఆྔతʹߦ͑ΔΑ͏ʹ • ৴པੑΛఆྔతʹѲͰ͖Δ͜ͱͰͷ҆৺ײ •
ࣄۀஅ༏ઌͷίϛϡχέʔγϣϯʹ͓͚Δڞ௨ݴޠʹ
ैདྷͷSLI/SLOͷӡ༻
όοΫΤϯυ • APIαʔόʔ, BFFαʔόʔͦΕͧΕͷϨΠςϯγΛSLIͱͯ͠ར༻ • ϞχλϦϯάɺΞϥʔτڞʹDataDogͰཧ • ҧ࣌ɺΤϥʔόδΣοτΛஶ͘͠ফඅ͢Δ߹ଈ࣌োରԠ ैདྷͷSLI/SLOͷӡ༻ —
όοΫΤϯυ — https://developers.cyberagent.co.jp/blog/archives/20354/
ΫϥΠΞϯτ ΫϥΠΞϯτଆͰಠࣗͷSLIΛӡ༻ • ΫϥογϡɺύʔεΤϥʔɺϑϨʔϜϨʔτ ैདྷͷSLI/SLOͷӡ༻ — ΫϥΠΞϯτ —
• Firebase Performance, CrashlyticsͷϩάΛར༻͠ɺϕϩγςΟΞϥʔτΛར༻ • Data PortalͰμογϡϘʔυཧ • ҧ࣌ӨڹͷൣғɺػೳͷॏཁʹԠͯ͡ΞΫγϣϯΛܾఆ
ैདྷͷSLI/SLOͷӡ༻ — ΫϥΠΞϯτ — ΠϯύΫτ ΞΫγϣϯ High ࢪࡦΛͱΊͯͰνʔϜશମͰՄೳͳݶΓϦιʔεΛͭ͗ࠐΈɺ ϗοτϑΟοΫεݕ౼ Middle ୲ͷΤϯδχΞΛΞαΠϯ্ͨ͠Ͱɺ࣍ճϦϦʔεͰඞͣରԠɻ ඞཁͰ͋ΕࢪࡦͷखͱΊΔ Low ୲ͷΤϯδχΞΛΞαΠϯ্ͨ͠Ͱɺ ։ൃϦιʔε͕ۭ͖࣍ୈదٓରԠ͢Δ
SLO͕αʔϏεͷՄ༻ੑͷஅ࣠ʹͳ͍ͬͯͳ͍ 1. emergencyϨϕϧͷΞϥʔτ͕ൃՐ 2. ΤϯδχΞ͕֤ࣗӨڹൣғʢػೳɺϢʔβʔʣௐࠪ 3. ΞΫγϣϯܾఆʢ͓ΒͤɺTwitterࠂɺࠂఀࢭɺϝϯςΠϯʣ
1. emergencyϨϕϧͷΞϥʔτ͕ൃՐ 2. SLI/SLOμογϡϘʔυͰӨڹൣғ֬ೝ 3. ӨڹͷͰ͍ͯΔSLIɺΤϥʔόδΣοτͷফඅ͔Β࣍ͷΞΫγϣϯΛܾఆ ैདྷͷSLI/SLOͷӡ༻ — ՝ᶃ — ຊདྷͷཧ ݱࡏͷӡ༻
όοΫΤϯυɺΫϥΠΞϯτʹดͨ͡ࢦඪͦΕͧΕͷΈͰՄ༻ੑΛอূͰ͖ͳ͍ αʔόʔͷSLO͕ຬͨ͞Ε͍ͯͯɺ • ૬खͷϝοηʔδ͕ݟΕ͍ͯͳ͍ → ΫϥΠΞϯτଆͰͷύʔεΤϥʔ͕ݪҼͰϨεϙϯεΛड৴Ͱ͖ͯͳ͍ •
৽نొͰ͖ͳ͍ → ֎෦SNSଆͰোൃੜɺΦϯϘʔσΟϯάϑϩʔ͕ແݶϧʔϓ • ϝοηʔδը໘Λ։͍ͨϢʔβʔͷ◦%͕ϝοηʔδͷӾཡʹޭ͍ͯ͠Δঢ়ଶ͔Θ͔Δ • ৽نొΛ։࢝ͨ͠Ϣʔβʔͷ◦%͕৽نొʹޭ͍ͯ͠Δ͔Θ͔Δ ैདྷͷSLI/SLOͷӡ༻ — ՝ᶄ — ຊདྷͷཧ ݱࡏͷӡ༻
ࢦ͢ཧঢ়ଶ • Ϣʔβʔͷظ͢ΔUXΛΧόʔ͢Δࢦඪઃఆ • SLI / SLOͷҧʹΑΔϢʔβʔӨڹѲΛ༰қʹ •
ϏδωεɺΫϥΠΞϯτɺαʔόʔؒͰαʔϏεঢ়ଶͷڞ௨ݴޠΛ࣋ͭ
ΑΓUXʹ͍ۙSLIɾSLOͷઃܭ
Ϣʔβʔͷظ͢ΔUXΛΧόʔ͢ΔSLIઃఆ ϝϯόʔ͔ΒʮαʔϏεͷՄ༻ੑʯͷٵ্͍͛ • औΓ͍ͨࢦඪɺఆٛɺܭଌํ๏ɺѱԽͨ͠߹ʹଛͳΘΕΔUXΛώΞϦϯά • ϑΥʔΧε͢ΔࢦඪɺίΞͳମݧΛ࢈ΜͰ͍ΔUXΛܾఆ͢Δ ϚΠΫϩαʔϏεͷυϝΠϯϞσϧͱ߹கͤ͞Δ
ϓϥοτϑΥʔϜͷఏڙ͢Δࢦඪͷ࠾༻ Apple, Google͕σΟϕϩούʔʹఏڙ͢ΔSLI • ϓϥοτϑΥʔϜଆͷߟ͑Δྑ͍ΞϓϦͷఆٛ • ΞϓϦετΞOSϨϕϧͰӨڹ͕͋Δ͜ͱ ◦ ASOʢApp Store
Optimizationʣ ◦ ༏ઌͯ͠ΞϯΠϯετʔϧΛଅ͞ΕΔ ◦ ΞϓϦͷόοΫάϥϯυͰͷੜଘ࣌ؒ • λοϓϧͰԼهͷࢦඪΛSLIͱͯ͠࠾༻ ◦ ΞϓϦαΠζ ◦ શମΫϥογϡʢANRʣ ◦ ىಈ࣌ؒ https://developers.cyberagent.co.jp/blog/archives/20354/
SLIҧΛ࠶ݱͨ͠ΞϓϦΛͬͨSLOܾΊ • աڈͷΠϯγσϯτ࣌ͷࢦඪɺࣄલώΞϦϯά͔Βɺ͖͍͠ʹ͋ͨΓΛ͚ͭΔ • σόοάػೳͰৄࡉͳ͖͍͠ΛௐՄೳͳΞϓϦΛ༻ҙ͠ɺ৮Γͳ͕Βٞ
࠶ఆٛͨ͠SLI όοΫΤϯυʢܧଓʣ • ϨΠςϯγʔ ΫϥΠΞϯτʢʹϓϥοτϑΥʔϜࢦඪʣ • ىಈ࣌ؒɺશମΫϥογϡɺΞϓϦαΠζ ίΞػೳʢʹػೳ͝ͱͷՄ༻ੑʣ
• ϩάΠϯɺ৽نొɺΧʔυϑϦοΫɺ ϝοηʔδɺ͓Ͱ͔͚ɺWish Մ༻ੑΛͱʹͨ͠SLIΛઃఆ ڞ௨ Ϋϥογϡ / ANR ػೳ͝ͱͷΩʔϝτϦΫε ϝοηʔδ: ಡΈࠐΈ ΧʔυϑϦοΫ: ࠶ϑϦοΫՄೳʹͳΔ·Ͱͷ࣌ؒ ɾɾɾ
ΫϥΠΞϯτଆͰͷSLI / SLOͷܭଌ
ΫϥΠΞϯτଆͰͷSLI / SLOͷܭଌ 1. ·ͣFirebase (+BigQuery) ʹ݁ͯ͠ϛχϚϜʹՔಇ • ػೳతʹेͳ͜ͱΛݕূ 2.
Monitoring, DashboardΛDataDogʹҠߦʢ͜Ε͔Βʣ • Ξϥʔτͷࣗ༝Λ্͛Δ • ଞͷϩάͰར༻ͯ͠ΔαʔϏεͱ߹ΘͤΔ
ΫϥΠΞϯτଆͰͷϞχλϦϯάπʔϧͷݕ౼ ͻͱ·ͣྉۚ໘Λߟྀ͠FirebaseΛར༻͠ɺʮӡ༻Λ։࢝ → ՝͕͋ΕϒϥογϡΞοϓʯͷํʹ 1. Firebase Crashlytics / Performance
+ BigQuery • FirebaseࣗମແྉͷͨΊBigQueryͷQuery, Active StorageͷྉۚͷΈ • Crashlytics, PerformanceطଘͰར༻͍ͯ͠ΔͨΊಋೖίετ͕͍ • BigQueryʹੵ͢Δ͜ͱͰൺֱతࣗ༝ߴ͘ར༻Ͱ͖Δ 2. DataDog RUM • طଘͷϞχλϦϯάπʔϧͱͯ͠DataDogΛར༻͍ͯ͠ΔͨΊπʔϧΛ౷ҰͰ͖Δ • ηογϣϯ୯Ґͷ՝ۚମܥͷͨΊɺࠓճྉۚ໘Ͱஅ೦ 3. New Relic One • όοΫΤϯυͰDataDogΛར༻͍ͯ͠Δ͜ͱɺྉۚ໘Λഎܠʹஅ೦
FirebaseͰߏ͢ΔϛχϚϜͳܭଌϑϩʔ Firebase ( Crashlytics + Performance ) ͷΈͰϛχϚϜͳϑϩʔ࣮ݱՄೳ • BigQueryʹExportʢϦΞϧλΠϜՄೳʣ
• BigQuery্ʹμογϡϘʔυදࣔ༻ͷதؒςʔϒϧ࡞ • Data PortalͰμογϡϘʔυදࣔ )LUHEDVH 3HUIRUPDQFH )LUHEDVH &UDVKO\WLFV 8VHU &UDVK .H\0HWULFV *RRJOH'DWD3RUWDO $XWR([SRUW %LJ4XHU\ ,QWHUPHGLDWHWDEOH %LJ4XHU\
Ξϥʔτͷઃఆͷࣗ༝ Firebase Performance • ࡞ͨ͠ࢦඪ͝ͱʹΞϥʔτͷઃఆ͕Մೳ • ͖͍͠Λ50ʙ95ύʔηϯλΠϧͷࢦఆ͕Մೳ Firebase Crashlytics •
ۙ1࣌ؒͷηογϣϯʹର͢ΔΫϥογϡ • ͖͍͠Λ0.1%ʙ1.0%ͰίϯτϩʔϧՄೳ
Ϋϥογϡϩάͷྨ https://firebase.google.com/docs/crashlytics/customize-crash-reports import UIKit import FirebaseCrashlytics final class LoginViewController: UIViewController
{ // ը໘Λදࣔ͢ΔλΠϛϯάͰCrashlyticsʹΧελϜΩʔΛઃఆ override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) Crashlytics.crashlytics().setCustomValue("login", forKey: "domain") } iOSΞϓϦͰͷϩάΠϯը໘ʹର͢Δ࣮ྫ ֤ػೳͷը໘දࣔ࣌ʹCrashlyticsʹΧελϜΩʔΛઃఆ͢Δ • ΧελϜΩʔΛͱʹBigQuery (Data Portal) ্ͰػೳυϝΠϯ͝ͱͷΫϥογϡΛूܭ • ػೳ͝ͱͷΞϥʔτઃఆͰ͖ͳ͍ͨΊɺVelocity Alert → μογϡϘʔυͰػೳӨڹ֬ೝ
ࠓޙʣϞχλϦϯάΛDataDogʹ౷Ұ ҎԼͷ؍͔ΒDataDogʹू͍ͯ͘͠ • ϞχλϦϯάͷू • Ϋϥογϡͷػೳ͝ͱͷΞϥʔτ )LUHEDVH 3HUIRUPDQFH )LUHEDVH &UDVKO\WLFV
$XWR([SRUW %LJ4XHU\ 4XHU\ SXVK IRUZRUGWRGDWDGRJ &ORXG)XQFWLRQV 'DWD'RJ &ORXG 3XE6XE WULJJHU
ӡ༻ʹ͍ͭͯ
ӡ༻ͷมԽ Πϯγσϯτൃੜ࣌ • PMɺόοΫΤϯυɺΫϥΠΞϯτϝϯόʔશһ͕ϢʔβʔӨڹΛஅ͢ΔҰ࣌ใͱͯ͠׆༻ ◦ ΤϯδχΞͷௐࠪΛͨͣͯ͠ωΫετΞΫγϣϯΛಈ͖ग़ͤΔΑ͏ʹ ྫʣશϢʔβʔͷ͓͠ΒͤɺTwitterࠂɺࠂͷఀࢭ • ِཅੑͷԼ
◦ ಛఆͷ݅ԼʢΩϟϯϖʔϯதͷΈʣʹൃੜ͢ΔύʔεΤϥʔΛ༏ઌߴ͘ΞϥʔτΛ͋͛ ΒΕΔΑ͏ʹ
ӡ༻ͷมԽ ϦϦʔεޙͷϝτϦΫε֬ೝ࣌ʹόοΫΤϯυɺΫϥΠΞϯτͷڞ௨ݴޠʹ • όοΫΤϯυɺΫϥΠΞϯτͦΕͧΕ͕શʹ͔Εͯ֬ೝ • ֬ೝՄೳͳϝτϦΫεɺμογϡϘʔυΛҰ௨Γཏతʹ֬ೝ • όοΫΤϯυɺΫϥΠΞϯτڞ௨ͷSLI /
SLO μογϡϘʔυΛ֬ೝ ◦ ௐࠪͷ߹SLIΛڞ௨ݴޠͱͯ͠ίϛϡχέʔγϣϯ • ҧ͕͋ͬͨ߹ʹؔ࿈ͷϝτϦΫεɺμογϡϘʔυΛ֬ೝ ◦ SLI / SLOಉ࣌ʹߦ͏ ݱࡏͷӡ༻ ैདྷͷӡ༻
ࠓޙͷల • ·ͩ·ͩӡ༻࢝ΊͨͯͳͷͰɺࠓޙݟΛஷΊ͍ͯ͘ • ࢦඪͦͷͷͷܧଓతͳϒϥογϡΞοϓ ◦ ࢦඪͷ͖͍͠ɺλʔήοτʢ90% → 50%ʣ ◦
ΤϥʔόδΣοτ ◦ ػೳͷΩʔϝτϦΫεͷର • DataDogͰҰؾ௨؏ͯ͠ϞχλϦϯάɺμογϡϘʔυΛཧͰ͖ΔΑ͏ʹ͢Δ • ৫ͰͷSLI / SLOͷਁಁ ◦ ݱঢ়·ͩ·ͩΤϯδχΞҎ֎ʹਁಁͰ͖ͯͳ͍
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠