Misocaのパフォーマンス計測とSLOを設定した話
mizukmb.icon 水尻裕人 ( id:mizukmb )
mizukmb.icon 自己紹介
Mastodon.icon Mastodon ( mstdn.nere9.help/@mizukmb ) Misoca.icon 株式会社Misoca Web アプリケーションエンジニア (2018/02~ ) 今回のお話は
読んでなくても今回の話には差し支えありません
https://gyazo.com/326e34b6a00b0981e8702339e6381302
(前提) パフォーマンス計測
サービスの可用性などの計測
レスポンスタイムとかリクエスト成功率とか
SLI (Service Level Indicators) と呼ぶ方がいいかも…
Misocaはどの項目を計測したかという話は後でします
(前提) SLO
サービスレベル目標
信頼性や可用性の指標に対してサービスが達成するべき目標値のこと
サービスの特性によって目標値は変わってくる
計測~SLO設定までの流れ
1. 指標を洗い出す
2. グラフに出す指標を洗い出す
3. グラフに出す
4. SLOを設定
計測をはじめる前に: SRE本読書会の実施
計測をはじめる前に、どこを計測しSLOを定めるべきかを知る目的
全部読んでると時間がかかりすぎるので、特に関連のありそうな1~9章を範囲としました
https://i.gyazo.com/thumb/1000/d477f61c1be48fa980fb0fb1186f29f7-png.png
SRE本読書会の様子
https://gyazo.com/3144c1b9b9dc021a25e0337eeccc1642
指標を洗い出す
観点ごとにどういった指標があるか、SREチームで洗い出しました
応答性能
サーバレスポンスタイム
リクエスト数
ページロード時間
可用性
リクエスト成功率
運用
AWSコスト
etc...
グラフに出す指標を洗い出す
全部グラフにしてると時間かかりすぎるので、まずはSLOに関わるところだけ着手
レスポンスタイム
50/95/99パーセンタイルに分割
リクエスト成功率
それぞれWeb・モバイルAPI・WebAPIを対象
グラフに出す
実際のグラフ (雰囲気だけ)
https://gyazo.com/747b730a33c1dc6ed5e87ae67e7b800d
SLOの設定
SREチーム内で相談して、社内開発チーム向けのSLOを設定
レスポンスタイム・リクエスト成功率のSLO
はじめての設定だったので、厳しすぎず甘すぎずな値を定めました
MisocaにSLOが設定された!
https://media.giphy.com/media/UTRSC9VGMMG8tHRxcr/giphy.gif
SLO設定後のSREチームの変化
SLOベースでタスクの優先順位が決められるようになりました
性能改善系のプロジェクトをはじめる際に、どの程度改善されるかの見積りがとれるようになりました
プロジェクトの状況や結果の共有の際にグラフを使ってプロジェクト前後の変化を可視化できるようになりました
他メンバーに共有するとき便利
SLOの見直し
四半期に一度、プロダクトマネージャと一緒にSLOの定期的な見直しをする会を実施
サービスは変化し続けるので、それに合わせてSLOも定期的に見直していく
次の四半期のSLOの設定(変える?このまま?)
他に見るべきSLOはあるか?
SLIの収集方法は妥当だったか?
まとめ
パフォーマンス計測・SLOの設定をしました
タスクの洗い出しや他メンバーへの共有などの場面で数値ベースで話せるようになりました
定期的にSLOを見直して、Misocaの品質を保ちつつユーザに価値を継続して提供できるようSREチームが改善を加えているところです