パフォーマンス定点観測会の取り組み
by
Daichi Harada
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
パフォーマンス定点観測会の取り組み Daichi Harada from eureka, Inc. 2019.10.29 / SRE Lounge #11
Slide 2
Slide 2 text
DAICHI HARADA - @kai_ten_sushi / @dharada1 - SRE at eureka, Inc. - 2018 年新卒入社 - 好き - Terraform / AWS / Datadog / Go - 勉強中 - Kubernetes / Fastly / Go
Slide 3
Slide 3 text
eureka, Inc. - 事業 - Pairs ( 日本 / 台湾 / 韓国 ) - Couples - Pairs エンゲージ ← ❗❗
Slide 4
Slide 4 text
eureka, Inc. - 事業 - Pairs ( 日本 / 台湾 / 韓国 ) - Couples - Pairs エンゲージ ← ❗❗
Slide 5
Slide 5 text
eureka, Inc. - 事業 - Pairs ( 日本 / 台湾 / 韓国 ) - Couples - Pairs エンゲージ ← ❗❗
Slide 6
Slide 6 text
eureka, Inc. - 事業 - Pairs ( 日本 / 台湾 / 韓国 ) - Couples - Pairs エンゲージ ← ❗❗
Slide 7
Slide 7 text
eureka, Inc. - 事業 - Pairs ( 日本 / 台湾 / 韓国 ) - Couples - Pairs エンゲージ ← ❗❗
Slide 8
Slide 8 text
eureka, Inc. - 事業 - Pairs ( 日本 / 台湾 / 韓国 ) - Couples - Pairs エンゲージ ← ❗❗
Slide 9
Slide 9 text
今日お話しすること - エウレカの「パフォ会」の取り組み - どうやっているのか - なにを見ているのか - やってみてわかったこと - まとめ
Slide 10
Slide 10 text
「パフォ会」とは?
Slide 11
Slide 11 text
「パフォ会」とは? - パフォーマンス定点観測会、通称「パ フォ会」 - プロダクトの可用性・パフォーマンス向 上などを目的とした週次 MTG - 2 年ほど継続、ツールや会議設計を 徐々にブラッシュアップしている https://medium.com/eureka-engineering/performance-mee ting-api-and-sre-3c5e07a6d017
Slide 12
Slide 12 text
「パフォ会」とは? - 2 つの MTG を水曜日に連続で実施 - API & SRE パフォーマンス定点観測会 - (15:00 〜 , 30 分 ) - SRE パフォーマンス定点観測会 - (15:30 〜 , 30 分 ) - 参加者 - バックエンドエンジニア、 SRE - 水曜日にやる理由 - サービスの性質から、週末と平日のトラフィックの 傾向が異なる - 水曜なら直近の週末と平日の傾向どちらも確認 できる - 緊急の対応があっても木金で対応可能
Slide 13
Slide 13 text
「パフォ会」とは? - ファシリテーターは交代制 - 職責ごとに異なる観点 / 自分ごと化 - メトリクスを 1 週間分確認 - 基本的に Datadog に集約、パフォ会用のダッシュボードを用意している - 基本上から見ていくだけで終わるような設計 - 一部見れないものは、各サービスの管理画面で確認 - 観測結果からタスク抽出 - 同時に走らせていいのは 3 つまでという制限 - 事業上のタスクとの優先度判断が難しい -> 3 タスク分の工数ラインを確保 - 逆に、どうでもいい枝葉の問題に取り組みすぎることも防げている
Slide 14
Slide 14 text
API & SRE Performance Meeting
Slide 15
Slide 15 text
API & SREパフォ会 - 可用性の SLI / SLO - エラーログ - Response time - DB パフォーマンス - toil の棚卸し
Slide 16
Slide 16 text
SLI / SLO - SLI - ( 総リクエスト数 - 5xx 系で返った数 ) / 総リクエスト数 - ≒ 全リクエストのうち正常に返せた割合を評価 - SLO - 99.95 - 直近 1 年ほどは継続して達成し続けている
Slide 17
Slide 17 text
エラーログ - エラーログ件数の推移およびエラーメッセージの内訳 - エラー時にはほぼ 5xx を返すので、 SLI の悪化に直結する - 見慣れないエラーが出始めていないか、急に増えたものがないか確認
Slide 18
Slide 18 text
エンドポイント毎のResponse Time - 特に検索系 GET の主要エンドポイントのパフォーマンス悪化に注視している - 開発が盛んに行われており、パフォーマンスの変動が大きい - 検索は Pairs の肝なので、ユーザー体験に直結する - 集計方法 - BigQuery に溜めた nginx のアクセスログを Lambda で集計 - Datadog のカスタムメトリクスとして送信、可視化している
Slide 19
Slide 19 text
DBパフォーマンス - SQL クエリの質がコストとパフォーマンスに直結している - 悪化の検知 + 改善によるコスト・パフォーマンス向上どちらもしたい - スロークエリ件数推移 / デッドロック件数推移
Slide 20
Slide 20 text
DBパフォーマンス - Aurora の Performance Insights - クエリをグルーピングしてくれて、どの クエリが計算資源を食っているかひと 目でわかる - ( この結果は Datadog に Integration で きない ...)
Slide 21
Slide 21 text
toil - 背景 - API + SRE で Oncall 対応を受け持っ ていて、若干担当分野が違う - ( これだけやや他のアジェンダと毛色 が違う ) - 目的 - うまく toil を減らせないか会話する場 にしている
Slide 22
Slide 22 text
SRE Performance Meeting
Slide 23
Slide 23 text
SREパフォ会 - バジェットとコスト - インフラメトリクス - アラートのトレンド
Slide 24
Slide 24 text
コスト - 従量課金のコスト把握 - AWS/GCP/Akamai/Fastly/Datadog … - 傾向の変化がないか、あれば先週加 えた変更やサービス成長で説明がつ くか? - クラウドパケ死を防ぐ - バジェット - 予算との Behind/Ahead も今後見てい く ( 予定 .)
Slide 25
Slide 25 text
インフラのメトリクス - 断捨離とキャパシティプランニング - 余っているリソースを断捨離したり、リクエスト傾 向を見て余剰分を積んだり - パフォーマンスの異常検知 - インフラ目線での Deep Dive. - API & SRE で見ている SLI の悪化の原因になるよ うなものはないか? - e.g. DynamoDB の Throttling が起きていたため先程のパフォ 会で出てた特定のエラーの原因になっていた - コストパフォーマンスは悪化してないか? - リソースの使用率や、オートスケールした台数を確認 - e.g. とくにリクエスト数は増えていないがピーク時にオートス ケールしたコンテナ台数が増加している
Slide 26
Slide 26 text
アラートの断捨離 - Datadog Triggered Monitors 確認 - 鳴り続けているアラートはないか? - SSL 証明書の期限切れ監視などもここで - Datadog Monitor Trends 確認 - 鳴ったアラートののトレンド確認できる - どのアラートが何回鳴ったかカウント - 曜日 × 時間帯のヒートマップ - 週毎のアラート件数 - 不要なアラートは断捨離していく https://app.datadoghq.com/monitors/triggered https://app.datadoghq.com/report/monitor
Slide 27
Slide 27 text
わかってきたこと
Slide 28
Slide 28 text
指標化は本当に大切。 - SLI - SLI からブレイクダウン可能な形で、メトリクスが可視化されてること。 - 「そもそもなにを見るか」が会の参加者全員にわかりやすくなければ、伝わらな い / 意識してもらえない . - KPI Tree のようなものを作ってもいいかも - SLO - 合意された目標に対して behind してるのかどうか一発でわかるようにしておかな いと、会話が水掛け論になってしまう
Slide 29
Slide 29 text
とはいえいったん議題に載せてみるのも大事。 - まずは「定期的に見てみる」アクション化 - あえて指標 / 目標を定めてなかったり、発散するための場にするための 議題もある ( 課題感やナレッジ共有の場として使いたい ) - まずは「見てみる」という行動を継続すると、次のアクションが定まること もある - 最初からパーフェクトでなくていい - 注意:会のシンプルさとのトレードオフ - ただ見てるだけだと先述の通り会話が空中分解しがちなので、バランス は大事 - シンプルにしないと全員には伝わりづらい
Slide 30
Slide 30 text
目標・会議体を常に見直していく - 課題感が常に変わっている - エラーログを整理したい , SQL の質を上げたい , アラートの断捨離をした い , コストを最適化したい , etc. - 指標化と目標設定、注力する部分の見直しが必要 - 達成できた指標は観測を続けつつ、観測コスト / 注力度を下げていく - 新たな課題に対しては SLI の設定を都度やる - 見直しをした結果、参加者が置いてけぼりにならないよう注意
Slide 31
Slide 31 text
ツールの集約の大事さ - 準備コストは下げたい - 毎週のルーチンなので、準備コストは極限まで下げたい - 生ログをパースしたり、毎回のクエリ実行 / レポート生成があるとつらい - ルーチン作業より本質的な原因特定の作業に時間を使いたい。 - なるべく一箇所にまとまっていると扱いやすい - ( エウレカでは ) Datadog に集約している - 準備時間ほぼゼロ ( ダッシュボードひらくだけ ) - メトリクスを有機的に組み合わせてシューティング可能 - 例外 - がんばって Lambda を書いてカスタムメトリクス送るしかないもの - 有用だけど Datadog に送る術がないもの -> 柔軟に対応
Slide 32
Slide 32 text
まとめ
Slide 33
Slide 33 text
まとめ - エウレカでは週次の「パフォ会」に取り組んでいる - バックエンドエンジニア / SRE で同じ目標を追う - 指標化と行動目標 - 指標化 ... 合意形成と意思決定のための道具 - 行動目標 ... まずは続けていくことが大切 - 注力すべき点は変わっていく - 指標 / 目標、会議体の見直しを継続する - ツールは集約してラクをする - 本質的な仕事に時間を使う
Slide 34
Slide 34 text
まとめ