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
Enabling Client-side SLO
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
gr1m0h
August 04, 2024
Technology
5.6k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Enabling Client-side SLO
gr1m0h
August 04, 2024
More Decks by gr1m0h
See All by gr1m0h
サービス影響を出さずにWafCharmを導入する
grimoh
0
120
インシデント対応入門
grimoh
8
6.6k
フルリモートを支える技術
grimoh
0
110
マイクロモビリティシェアサービスを支える プラットフォームアーキテクチャ
grimoh
1
680
"君は見ているが観察していない"で考えるインシデントマネジメント
grimoh
4
3.9k
Luupの開発組織におけるインシデントマネジメントの変遷 ver.RoadtoSRENEXT2024
grimoh
2
1.2k
Luupの開発組織におけるインシデントマネジメントの変遷
grimoh
2
2k
IoTサービスにおけるSLI設計とLUUPでの実践
grimoh
1
2.4k
Luupの開発組織におけるインシデントマネジメントのこれから
grimoh
2
1.5k
Other Decks in Technology
See All in Technology
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
260
AIAU_UMEMOGU_ninomiya_slide
ninomiya_ii
0
260
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
160
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
1
390
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
610
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
290
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
300
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
320
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
1
1.7k
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
160
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
200
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
460
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Code Review Best Practice
trishagee
74
20k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
GitHub's CSS Performance
jonrohan
1033
470k
The untapped power of vector embeddings
frankvandijk
2
1.8k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Being A Developer After 40
akosma
91
590k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
220
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
How STYLIGHT went responsive
nonsquared
100
6.2k
Transcript
機密・専有情報 株式会社Luupによる個別の明示的な承諾を得ることなく、この資料を使用することを固く禁じます。 Wataru Tsuda / gr1m0h 2024.8.04 SRE NEXT 2024
Track B Enabling Client-side SLO
Luup, Inc. - Confidential and Proprietary 2 whoami Wataru Tsuda
/ gr1m0h Reliability Engineer @Luup,inc. SRE Lounge / SRE NEXT Organizar Platform Engineering Meetup Organizar
Luup, Inc. - Confidential and Proprietary 3 #srenext #srenext_b
Luup, Inc. - Confidential and Proprietary 4
Luup, Inc. - Confidential and Proprietary 5 https://sre-next.dev/2023/schedule/#jp027 Enabling SLO
Luup, Inc. - Confidential and Proprietary 6 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 7 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 8 LUUPとは 街じゅうの電動マイクロモビリティに、 どこからでも乗れて好きな場所に返せる
シェアリングサービス LUUPは電動キックボードと電動アシスト自転車のシェアリングサービス です。 LUUPのポートは街じゅうに広がっています。駅前や繁華街、住宅街や コンビニなど、近くのポートから好きなタイミングで借りて、好きな場所に 返すことができます。 毎日の最寄り駅までの移動や、「歩くには少し遠いな」と感じる場所へ向 かうこと、できれば避けたい坂道をのぼることも、 “早く・ラクに・気持ちの よい“ライドに変えることができます。 現在は、東京・大阪・横浜・京都・神戸・名古屋などで展開しており、さら に拡大を目指しています。
Luup, Inc. - Confidential and Proprietary 9 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 10 なぜClient-side SLOの話が少ないのか? 多分こんな感じ?
- コストの問題 - ユーザー側の都合に左右される問題 - ネットワーク問題 - 端末問題 - ユーザーの途中キャンセル問題 - “SRE” というロールのバックグラウンド/ケイパビリティの問題 - バックエンド/インフラ出身者が多く、慣れていないクライアントの信頼性に手を回すのが 遅れがち? - クライアントサイドでSLOを設定する必要がない場合がある - サービス自体の処理がAPIでほぼ完結する場合は計測する価値はあまりない https://www.usenix.org/conference/srecon17americas/program/presentation/chen
Luup, Inc. - Confidential and Proprietary 11 なぜLUUPでClient-side SLOを設定するのか? 以下の動機があった
- よりユーザーに近い部分で計測できる方が望ましい - クライアント側でAPIを介さずにFirestoreを叩いているケースがある - APIのみの計測だとここが漏れてしまう - APIを介さない処理を含めてユーザーに体験を提供できているかを計測したい - BLEでのアクションなど
Luup, Inc. - Confidential and Proprietary 12 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 13 LUUPでClient-side SLOを設定するためにやったこと CUJの再設定
PdM、SWEを巻き込んでCUJを再設定 SLIの設定 SLIの基となるメトリクスをDatadogにアップロード Latency SLIの閾値を決める 文化醸成 SLIを計測するDashboardの作成 SLI/SLOをWeeklyで確認する SLOの設定 Datadog Time Slice SLOの利用 SLOを複数作成 1 2 3 4
Luup, Inc. - Confidential and Proprietary 14 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み - CUJの再設定 - SLIの設定 - 文化醸成 - SLOの設定 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 15 CUJの再設定 なぜCUJを再設定する必要があったのか? -
これまでSLOを運用してきたが、これもCUJを基に設定はしていた - サービス的に自明であるCUJを基にしていた - 施錠・解錠・ライド開始、ライド終了周り クライアントのSLOを設定するにあたって、サービスの全体観から考え直す サービスのユーザージャーニーを洗い出して、そこから議論しCUJを決める - ユーザージャーニー一覧を基に議論 - ユーザージャーニーマトリクスに結果をまとめた
Luup, Inc. - Confidential and Proprietary 16 CUJの再設定 ユーザージャーニー一覧 -
FigmaでPdMにユーザージャーニー一覧を作成してもらった - これを基にPdM、SWE、SREで議論する
Luup, Inc. - Confidential and Proprietary 17 CUJの再設定 ユーザージャーニーマトリクス -
PdM、SWE、SREで議論した結果を整理 - Enabling SLOではこれを更新していく
Luup, Inc. - Confidential and Proprietary 18 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み - CUJの再設定 - SLIの設定 - 文化醸成 - SLOの設定 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 19 SLIの設定 SLOを考えるうえで以下を設定することを検討 -
Availability SLO - Latency SLO SLIは何にする? - iOS, Andoridで同様の目的で見ていた指標があるので、一旦これを活用する - Availability: Firebase Crashlytics - Latency: Firebase Performance Custom Trace
Luup, Inc. - Confidential and Proprietary 20 SLIの設定 SLOを考えるうえで以下を設定することを検討 -
Availability SLO - Latency SLO SLIは何にする? - iOS, Andoridで同様の目的で見ていた指標があるので、一旦これを活用する - Availability: Firebase Crashlytics → Datadog RUM - Latency: Firebase Performance Custom Trace → Datadog APM FirebaseではSLIを計測/SLOを設定できないので、Datadogにメトリクスをアップロードする - Datadog RUMはコスト等の観点から断念 - 上記の通り値を見ていないわけではないので、Latency SLOから進める(運用実績を作る)
Luup, Inc. - Confidential and Proprietary 21 メトリクスをDatadogにアップロード Datadog SDKを使ってTraceをDatadogにアップロードする
トライアルの実施はSREがメインで動いた - iOS, Androidチームサポートのもと、SREがSDKの導入・Traceの設定部分をコーディング
Luup, Inc. - Confidential and Proprietary 22 SLI設計 Latency SLI
Metricsを具体的に何にするか? - 本番環境のAPM Metrics(CUJの実行時間)の75%ile - Query; "p75:trace.<TRACE_NAME>{service:<SERVICE_NAME>, env:production}" “ユーザー側の都合に左右される問題” を除外したい そこにダイレクトに関連する変数である “Latency SLI Metrics の %ile値” の設定に悩んだ
Luup, Inc. - Confidential and Proprietary 23 SLI設計 Latency SLI
Metricsを具体的に何にするか? - 本番環境のAPM Metrics(CUJの実行時間)の75%ile - Query; "p75:trace.<TRACE_NAME>{service:<SERVICE_NAME>, env:production}" “ユーザー側の都合に左右される問題” を除外したい そこにダイレクトに関連する変数である “Latency SLI Metrics の %ile値” の設定に悩んだ なぜ 75%ile にしたのか?
Luup, Inc. - Confidential and Proprietary 24 “Latency SLI Metrics
の %ile値” の設定 同じような問題を抱えているWeb周りではどのように設定しているだろう?? Core Web Vitals の Good LCP Score で 75%ile を使っている! Core Web Vitals;Googleが提唱するユーザー体験の品質を測定するための主要な指標群 LCP;ページの主要なコンテンツ(通常は最大の画像やテキストブロック)が読み込まれて表示され るまでの時間 https://web.dev/articles/lcp#what-is-a-good-lcp-score
Luup, Inc. - Confidential and Proprietary 25 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み - CUJの再設定 - SLIの設定 - 文化醸成 - SLOの設定 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 26 文化醸成 Enablingしていく中で文化醸成や運用を軌道に乗せる部分が一番重要 これらを進めるために以下の活動を実施した
1. SLIを見るためのダッシュボードを作成 SLOを設定するための情報を集めたい、SLI(値自体)を馴染みがあるものにしたい 2. SLI/SLOをWeeklyで確認 SLO(文化・考え方)/SLI(値自体)を馴染みがあるものにしたい
Luup, Inc. - Confidential and Proprietary 27 SLIを見るためのダッシュボードを作成 SLIの詳細を確認するためにダッシュボードを作成 -
PdM/SWEがイメージしやすいようCUJごとにグルーピング - iOSとAndroidのパフォーマンスを比較しやすいようにグラフを横に並べる
Luup, Inc. - Confidential and Proprietary 28 SLI/SLOをWeeklyで確認 SLI/SLOを意識するためにWeeklyでダッシュボードを確認 -
SREがファシリテーションし、サマリーを共有 - CUJ、SLI、SLOの妥当性、パフォーマンスについて議論
Luup, Inc. - Confidential and Proprietary 29 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み - CUJの再設定 - SLIの設定 - 文化醸成 - SLOの設定 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 30 SLOの設定 SLOを実際に設定、作成していく中で運用を考慮して作成方法を考える必要がある これを進めるために以下の活動を実施した
1. DatadogでのSLOの作成 Time Slice SLOの選択 2. Multi-tiered SLOs SLOを決める際にSLOの値の意味・決める基準について熟考 1つのSLIに対して複数のSLOを作成
Luup, Inc. - Confidential and Proprietary 31 DatadogでのSLOの作成 APIのLatency SLOではMonitor-based
SLOを使用していたが、今回Time Slice SLOを検討した - Monitor-based SLOを使用していた段階ではTime Slice SLOはGAしていない - Time Slice SLOは2024年5月2日にGA https://app.datadoghq.com/release-notes/time-slice-slos-are-now-generally-available https://docs.datadoghq.com/service_management/service_level_objectives/guide/slo_types_comparison/ Monitor-based SLO Time Slice SLO SLI を時間ベースで計算したい場合に使用でき、 SLI はモニターのアップタイムを基にしています 。モニ ターベースの SLO は新規または既存の Datadog モ ニターに基づく必要があり、調整はそのモニターに対 して行う必要があります (SLO の作成時にはできま せん)。 SLI を時間ベースで計算したい場合に使用でき、 SLI はカスタムアップタイム定義 (システムが正常な動 作を示した時間を合計時間で割ったもの ) に基づき ます。タイムスライス SLO は、Datadog モニターを 必要とせず、さまざまなメトリクスフィルターとしきい 値を試して、SLO 作成中にダウンタイムを即座に調 査することができます。
Luup, Inc. - Confidential and Proprietary 32 Datadog Time Slice
SLOの採用 Time Slice SLOを採用した - Datadog SLOの利用できる機能の多さ - Datadog SLOの多くの機能を利用できる - Graph historical SLO data, SLO calendar view等 - データポイントの評価方法 - 最小1分単位の時間スライスを評価するので詳細にパフォーマンスを評価できる - 短期的なパフォーマンス変動が重要なアプリケーションではないので、割合によって値が 丸められることを許容する https://docs.datadoghq.com/service_management/service_level_objectives/#slo-calendar-view
Luup, Inc. - Confidential and Proprietary 33 Multi-tiered SLOs PdMがイメージしやすいように1つのSLIに複数のSLOを作成
- Upside, Downside, Actual の3つのSLOを作成した - 基本的にはDownside SLOを見ていくことになる Upside SLO Downside SLO Actual SLO 将来的に目指す水準 理想値であり、現実との乖離 を確認するためにSLOを計測 する (e.g., 99%, 1sec) 現実的に割りたくない水準 現状はこのSLOを注視、運用 していくことになる (e.g., 99%, 3sec) 実測値を基にSLOを設定 Downsideを割ってしまってい る一部SLOのみ作成 (e.g., 99% 5sec) https://blog.alexewerlof.com/p/multi-tiered-slos
Luup, Inc. - Confidential and Proprietary 34 SLOの運用 Phase Now
Near Future Actual is gone Future Downside is gone SLO Type / Role PdM SWE PdM SWE PdM SWE Upside ◎ ◯ ◎ ◯ ◎ ◎ Downside ◯ ◎ ◯ ◎ - - Actual ◯ ◎ - - - - フェーズごとにそれぞれのロールで意識するSLOが変わってくる - ◎:強く意識する、◯:意識する
Luup, Inc. - Confidential and Proprietary 35 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 36 今後の展望 アラート設定 -
Burn Rate Alertの調整 - SLOの補助アラートの追加 運用 - Actual廃止 - Downsideだけ見る状態にする - APIのSLOとの接続 SLOの追加 - Client-side Availability SLOの追加
Luup, Inc. - Confidential and Proprietary 37 0. 事業説明 1.
LUUPでクライアントのSLOを設定する理由 2. LUUPでクライアントのSLOを設定するために行った取り組み 3. 今後の展望 4. まとめ
Luup, Inc. - Confidential and Proprietary 38 まとめ - クライアントのSLOを導入するときにやったことについて紹介しました
- CUJの再設定、SLIの設定、文化醸成、SLOの設定 - 一緒に進めるPdMやSWEの立場に立つことが重要 - SLI/SLOはあくまでもツールなので、振り回されないこと - 最適な方法は探っていく必要がある - SLOの課題やプラクティスについて語りましょう! - クライアントのSLOの話をしましたが、IoTのSREの話も歓迎です! - #srenext, #srenext_b, @gr1m0h, Ask the Speaker 等で!
Luup, Inc. - Confidential and Proprietary 39 Ref. - SRE
NEXT 2023 - https://sre-next.dev/2023/ - Engineering Reliable Mobile Applications - SREcon17 Americas / USENIX - https://www.usenix.org/conference/srecon17americas/program/presentation/chen - Largest Contentful Paint(LCP)- web.dev - https://web.dev/articles/lcp#what-is-a-good-lcp-score - Datadog - https://app.datadoghq.com/release-notes/time-slice-slos-are-now-generally-availa ble - https://docs.datadoghq.com/service_management/service_level_objectives/guide/s lo_types_comparison/ - https://docs.datadoghq.com/service_management/service_level_objectives/ - Multi-tiered SLOs - Alex Ewerlöf Notes - https://blog.alexewerlof.com/p/multi-tiered-slos
一緒に、街じゅうを「駅前化」する インフラをつくりませんか? 詳細は採用ページをご覧ください https://recruit.luup.sc/
None