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
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / Reliability and...
Search
yoshiyoshifujii
September 29, 2023
Technology
1
1.4k
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / Reliability and Observability from the Perspective of a Product Owner
SRE NEXT 2023
https://sre-next.dev/2023/schedule/#jp039
yoshiyoshifujii
September 29, 2023
Tweet
Share
More Decks by yoshiyoshifujii
See All by yoshiyoshifujii
プロダクトオーナーがFour Keys + 信頼性に思うところ / Product Owners Think of Four Keys + Reliability
yoshiyoshifujii
0
460
Recapping Chatwork Scala Journey - ScalaMatsuri2023
yoshiyoshifujii
0
2.6k
ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka in the past few months
yoshiyoshifujii
1
250
コードをどまんなかに据えたモデリング-Scala版 / Modeling with code in the middle-Scala version
yoshiyoshifujii
0
120
Chatworkのドメインをモデリングした / Modeling Chatwork domain
yoshiyoshifujii
0
800
サマーインターンシップ2019で学生とDDDなScala開発に取り組んだ / Working on DDD and Scala development with students at Summer Internship 2019
yoshiyoshifujii
2
4k
Clean Architecture in Practice @ScalaMatsuri2019
yoshiyoshifujii
9
3.9k
実践 Clean Architecture
yoshiyoshifujii
13
10k
k8sもよく分かってないけどRancherを兎に角さわってみた
yoshiyoshifujii
1
570
Other Decks in Technology
See All in Technology
SSMRunbook作成の勘所_20241120
koichiotomo
2
130
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
210
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
150
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
580
AGIについてChatGPTに聞いてみた
blueb
0
130
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
43
13k
BBQ
matthewcrist
85
9.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
89
Building Adaptive Systems
keathley
38
2.3k
Designing for Performance
lara
604
68k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
KATA
mclloyd
29
14k
Into the Great Unknown - MozCon
thekraken
32
1.5k
For a Future-Friendly Web
brad_frost
175
9.4k
Transcript
FUJII Yoshitaka @yoshiyoshifujii 2023年09月29日 プロダクトオーナーの視座から見た 信頼性とオブザーバビリティ
AGENDA アジェンダ Chatworkとは 問題領域と解決領域 CUJ SLI / SLO / エラーバジェット
オブザーバビリティ Open Telemetry 分散トレーシング まとめ 1 2 3 4 5 6 7 8
Chatwork は デビューして 13年目 • コード規模は、二桁万行規模 • 依存関係を表したグラフは、人間が理解するには難しすぎる複雑さ • 循環的複雑度は、メンテ不可能なレベル
• チャットという特性上、ハイトラフィック • チャットという特性上、障害は致命的 • チャットという特性上、扱っている情報の機密性はかなり高い 3
はやい、やすい、うまい を届けたい • 13年前のアーキテクチャから、これからを担えるアーキテクチャへ • お客様の問題にアプローチ 4
Accelerate State of DevOps 2022 • https://cloud.google.com/blog/ja/products/devops-sre/dora-2022-accelerate-state-of- devops-report-now-out • ソフトウェアデリバリーのパフォーマンス
◦ 4つの主要指標 ◦ デプロイ頻度、変更のリードタイム、変更時の障害率、サービス復旧時間 • 運用パフォーマンス ◦ 5つ目の重要指標 ◦ 信頼性 5
Chatwork リライトの旅路 • 本日の発表は、 Chatwork のリライトをするにあたり… • リライトした先のサブシステムにおいて • 信頼性
をどう築いていくのか • オブザーバビリティ をどう獲得していくのか • プロダクトオーナー としてどう取り組んでいるのか • …をお話しします 6
問題領域 と 解決領域 2
問題領域 • 信頼性を考えるにあたり… • Chatwork が そもそも扱っている問題について考えてみた • 既に解決を提供しているシステム •
いったい、ユーザーは何に満足をして、何が満たされないと苦痛と感じるのか • よし。ホームページを見てみよう。 • https://go.chatwork.com/ja/solutions/ 8
問題領域 9
問題領域 10
問題領域 • コミュニケーションを効率化することで無駄な業務を減らしたい • ということは… • ビジネスコミュニケーションを円滑にできない • という問題を扱っていると言えそうだ 11
具体的な問題-営業職 12
具体的な問題-営業職 13
具体的な問題-介護現場 14
具体的な問題-士業事務所 15
Chatwork以前の問題領域モデル 16
Chatworkが提案する問題領域モデル 17
Chatworkが提供している解決領域モデル 18 • 複数人で同時にコミュニケーションできる 場 を提供する グループチャット • 場 に対して
発信者 は メッセージ を送る • 場 に所属する 受信者 は メッセージ をどこまで読んだか記録する
解決領域モデルでシステムを分割する 19 • リライトプロジェクトでは、これらの解決領域モデルをサブシステムに分割する • サブシステムに対してチームをアサインする • 各サブシステムにおける信頼性を、各チームで担保する
CUJ - クリティカル・ユーザー・ジャーニー 3
解決領域から見るクリティカルユーザージャーニー • 場を通じて、1対多の非同期コミュニケーションをストレスなく実施していくことが重要 • 場に投じたメッセージがメンバーに違和感なく届けられることが必要 • 届ける手法は、様々ある ◦ モバイルプッシュ通知 ◦
デスクトップ通知 ◦ グループチャット一覧でのアイコン表示 • 届ける手法、1つ1つにおいて、求められるユーザー体験は異なる • 1つずつの手法において、CUJとなるストーリーを仮説する ◦ ユーザーがグループチャットにメッセージを投稿すると、メンバーに未読メッセー ジが届いていることをリアルタイムに知らせる ◦ これが満たされないと、ユーザー満足度が低下するという仮説 21
SLI / SLO / エラーバジェット 4
SLI - サービスレベル指標 • CUJ を計測できる指標をサブシステムごとに設定する • サブシステム内も、複数のコンポーネントで構成している • SLIは、コンポーネント毎ではなく、サブシステム毎
23
SLO - サービスレベル目標 • 即決できない • 試行錯誤が必要 • SLOを上回っている場合、ユーザーは満足 •
SLOを下回っている場合、ユーザーは不満 • ユーザーの満足は、誰の関心事か ◦ みんな ◦ だが、POは最も関心が強い • 信頼性は高過ぎてもだめ • 最初は、小さくはじめたい 24
エラーバジェット • エラーバジェットは、ユーザーが許容できるシステム停止の最大量を表す • エラーバジェットが枯渇する前にアラートが必要 • SLO目標が高ければ高いほど、即応が必要 • 99.9%で、43分/month •
これを、どの程度の速度で消費するのか • 傾きに応じて、アラートしていきたい 25
オブザーバビリティ - O11y 5
オブザーバビリティ • 3本柱 ◦ メトリクス、ロギング、トレーシング ではない ◦ 高いカーディナリティ、高いディメンション、探索可能性をサポートするツール • エラーバジェット
→ SLO → SLI から探索できる • 探索可能性をサポートするツールってなんぞや • Honeycomb を試そう • 高いカーディナリティ、高いディメンションもよー分からん • やってみるしかない • 試行錯誤をするバックログを作る 27
Honeycomb はいいぞ • SLI から トレースにつながる • 探索するためのクエリがそれなりに柔軟に書ける ◦ サブクエリが書けたらサイコーなんだけど…書けない…
28
Open Telemetry 6
Open Telemetry は 一日にして成らず • 高いディメンションと高いカーディナリティを計装する • 探索可能性をサポートするツールで探索を試す • オブザーバビリティ駆動開発
• いかに計装をシフトレフトするか • 計装に検証が必要 • Open Telemetry は、仕様から理解する ◦ https://opentelemetry.io/docs/specs/otel/ • Semantic Conventions を熟読する ◦ https://opentelemetry.io/docs/concepts/semantic-conventions/ • Open Telemetry Collector はソースを読む ◦ https://github.com/open-telemetry/opentelemetry-collector 30
高いディメンション、高いカーディナリティ • Spans のところは、何度も読んだ 31
分散トレーシング 7
分散トレーシング • 分散システムにおける、分散トレーシングは、とても難易度が高い • サブシステム間のトレーシングに様々な工夫が必要 • Trace Context の伝搬方式の決定 ◦
https://www.w3.org/TR/trace-context/ • 非同期境界におけるトレーシング • サブシステム内のコンポーネントを横断したレイテンシをSLIとする • Trace先頭のSpan Attributesのディメンションを、後方のSpan Attributesで扱う ◦ Open Telemetry Collector Processor でやっていきたい ◦ 計装のことを極力、実装に混ぜたくない • Span内で時間差を計算し、可視化する 33
まとめ 8
まとめ • 信頼性 と オブザーバビリティ は、プロダクトオーナーの強い関心事 • ユーザー満足度を測る、先行指標 • 一朝一夕で実現できない
• プロダクトオーナーとして、詳細を把握したうえで、バックログを作る • チーム全員で取り組むべし 35
働くをもっと楽しく、創造的に