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.4k
タップルのサービス特性に合わせた設計方針を考える
kazumanagano
0
260
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
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
390
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
200
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.8k
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
15
2.9k
AIエージェントで 変わるAndroid開発環境
takahirom
2
460
霧の中の代数的エフェクト
funnyycat
1
280
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.7k
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
830
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
190
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
180
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
160
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.7k
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
22k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
230
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
New Earth Scene 8
popppiees
3
2.4k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
What's in a price? How to price your products and services
michaelherold
247
13k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
440
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
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ͷਁಁ ◦ ݱঢ়·ͩ·ͩΤϯδχΞҎ֎ʹਁಁͰ͖ͯͳ͍
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠