Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
よりUXに近いSLI・SLOの運用による可用性の再設計
Search
nade
May 15, 2022
Programming
8.9k
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
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
360
Server-Driven UI入門: 画面のStateを直接受け取るアプローチ
kazumanagano
5
4.7k
タップルのサービス特性に合わせた設計方針を考える
kazumanagano
0
280
iOS開発におけるGitHub Actions self-hosted runnerを利用したオンプレ CI/CD のすゝめ
kazumanagano
0
180
Github Actions self-hosted runners のすゝめ
kazumanagano
0
590
モバイルアプリのオブザーバビリティを向上させるプラクティス
kazumanagano
8
5.3k
タップル モバイルアプリにE2Eテストが導入されるまでの軌跡
kazumanagano
0
140
App Size Optimization への挑戦
kazumanagano
1
1.5k
無料トライアル施策のしくじりから学ぶサブスクリプション構成 ベストプラクティス
kazumanagano
2
2.5k
Other Decks in Programming
See All in Programming
Are APIs Still Relevant in the AI Era?
soyuka
0
280
What We Talk About When We Talk About XP
m_seki
2
660
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
330
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.8k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.3k
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
710
JRuby: Past, Present, and Future
headius
0
160
Jetpack Compose メカニズム
skydoves
0
450
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
180
一人だけ、Kiroが静止する日
hideg
0
120
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The Pragmatic Product Professional
lauravandoore
37
7.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Designing Experiences People Love
moore
143
24k
For a Future-Friendly Web
brad_frost
183
10k
Building an army of robots
kneath
307
46k
Un-Boring Meetings
codingconduct
0
420
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Scaling GitHub
holman
464
140k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
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ͷਁಁ ◦ ݱঢ়·ͩ·ͩΤϯδχΞҎ֎ʹਁಁͰ͖ͯͳ͍
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠