Datadog APMの活用で爆速改善の巻
これはCAMPFIRE Advent Calendar 2020の6日目の記事です。
はじめまして。SREチームの加我です。
CAMPFIREのモニタリング周りを12月に刷新しました。
刷新に至った経緯や感じていた課題、導入して良かった事を書きます。
これまでのCAMPFIRE
CAMPFIREは Mackerel というモニタリングサービスを利用していました。
(余談ですが別のサービスでは今でもMackerelをバリバリ使っています)
Mackerelは導入のハードルの低さやプラグインによるカスタマイズ性の高さ、直感的なUIが好評であることから当時導入に至ったとのことです。
私も以前Mackerelを導入してサービスのモニタリングをしていた事があり、導入後の運用のしやすさは大きなアドバンテージだと感じます。
CAMPFIREの課題
おかげ様でCAMPFIREは多くの方に利用して頂けるクラウドファンディングサービスへと成長することができました。先日のコロナサポートプログラムの反響もあり、平均リクエスト数が今年の3月頃に比べて3〜4倍程度まで増えています。
アクセスが増える一方、コードベースの肥大化やデータ量の増加等によるエラーや速度低下も徐々に発生してきており、サーバーのリソースモニタリングに加えてアプリケーション側からもサービス品質の向上や最適化を行っていきたいという話を社内で進めて来ました。
私達には「実際どの処理でどれだけ時間がかかっているのか」「エラーの原因と傾向は何なのか」を可視化したいというモチベーションがあり、それを実現するためのAPM (Application Performance Monitoring) が利用できるモニタリングサービスを検討した結果、Terraformとの相性の良さ、過去に利用していた開発者が若干名いるという点を考慮して Datadog の導入検証を進める事にしました。
↓過去に利用していた開発者Aさん
Datadog導入で心がけたこと
こんな感じで少しずつ情報共有・展開していきました。
・Datadogを導入する背景と入れるメリットの共有
・ドキュメント作成とAPMのレクチャー会の実施
・自分がDatadog相談窓口になる
先述の通りDatadog導入のモチベーションはAPMの導入による様々な事象の可視化です。なので、まずはAPM導入を1つのゴールに設定して検証を進めていきました。
Datadogは統合監視を謳っており、利用できる機能が外形監視〜サーバー監視〜アプリケーション監視〜ログ監視と多岐にわたります。その中で恐らく最も多く活用されるであろうAPMのドキュメントを作成し、オンラインでのDatadog APM 社内レクチャー会を行うことでみんなにも使って貰えるよう心がけてきました。
導入して得られるメリットが具体的にわからないと使ってくれないという過去の経験から、ドキュメントやレクチャー会の中で「APM導入により具体的にこういう情報が見れるようになります、結果としてこういう使い方をしたらサービス品質の向上に繋げられそうです」という点を伝えてみました。
また、自分が相談窓口となりどんな些細なことでも相談に乗るから気軽に使ってね!というスタンスで、少しずつみんなに慣れて貰うことを心がけました。新しいツール、しかも海外製で多機能となれば戸惑うことは必至です。なので、気軽に質問できる窓口役というのはいたほうが安心かなというのが自分の考えです。
ちなみにDatadogを長く使ってきた自分でもわからない事は未だに多いです・・・。
Datadog導入後
ある程度Datadogの導入とレクチャーが落ち着き、日々の運用においていくつかの変化を感じることができました。
エラーの対応が爆速になった🙌
ある日5XXエラー数のしきい値を超えた旨の通知があり、みんなで状況を確認しましょうって感じでやり取りが進んでいきます。
(見せられる範囲で雰囲気を感じて下さい)
こんな感じでDatadogのAPMとLogsベースで調査が進んでいきます。
自分はデプロイ作業があったのでそこまで張り付いていられなかったのですが、気づいたら原因の特定と修正PRとリリースまで終わってました。
この直後、本当に5XXエラーが消えていました。
これはトントン拍子で問題解決ができた貴重な例ではありますが、APMとLogsによりエラーの原因調査がしやすくなった事、それにより対応の速度が向上したというのは間違いないです。サイトの信頼性向上のためにDatadogが大活躍といったところでしょうか。
APMを導入してからみんながいい感じにエラー修正を行ってくれており、そのおかげで頻発していた500エラーの数がものすごい勢いで無くなりました。
ついでにDatadogのMonitor(アラート通知)のメッセージにAPMの情報を入れてみました。これによりエラー調査の初動が改善できそうだと考えています。(単純に毎回APMを開いて条件を入れて絞り込むのが面倒なだけです...)
サイトの改善が定量的にできるようになった🙌
以前からサイトの応答速度を改善したいというプロジェクトがあり、今回のDatadog導入をきっかけにDatadogをもっと活用して応答速度の改善をやっていこう!という流れになりました。
これまでは外形監視やコードリーディングでの改善を行っていたのですが、APMを活用することで「どの処理にどれくらい時間がかかっているのか」をエンドポイント単位・SQL単位で詳細に調べることができるようになりました。これにより、改善施策が具体的にどれだけの影響を与えることが出来たのかを定量的に判断することができるようになりました。
ちなみに最近リリースした2つの改善施策により、90パーセンタイルでの応答速度が5%程度改善できたという具体的なデータを出してもらいました。
(自分はAPMの使い方をレクチャーしただけです...)
サイトの改善が定量的にできるようになった結果、改善の指標や成果をどこに置くかという議論や、将来的にはパフォーマンスのバジェットをベースに開発していきたいという話も出てきており、すでに大きな期待と可能性を感じています。
これからのCAMPFIRE
今回はサービスの改善のための土台作りとして、Datadog APMの導入をゴールとして諸々を進めてきました。予定通り年内である程度完了したので安心しています。導入にあたり、Datadogの田端さん・清水さんには運用設計からコスト周りまで多大なるサポートを頂き本当に助かりました。
Datadogにはまだまだ便利な機能がありそうです。興味はあるけど導入できていないReal User Monitoring(RUM)、セキュリティ関係のログ活用サービス、異常値を検出してくれるWatchdogなどなど。今後のアップデートをチェックしつつサービスの課題解決に効きそうな機能を適切に使っていこうと思っています。
Datadogの導入はあくまでスタートライン、ここから地道に改善を繰り返してユーザーの皆様が快適に利用できるサービスを目指していく所存です。
俺たちの戦いはこれからだ!
【PR】
開発エンジニアを絶賛募集中です!
Datadogを活用して一緒にサービス開発していきましょう💪
この記事が気に入ったらサポートをしてみませんか?