CREがエンジニアリングで業務効率化をおこなった話 〜Datadogから異常に重いリクエスト数を自動集計〜

こんにちは。CREの山本です。 今回はCREがエンジニアリングで業務効率化をおこなった話について書こうと思います!

私は誰か

今回初めてブログを書きますので簡単に自己紹介させてください!

2022年にアンドパッドへ入社し約1年半の間、ANDPAD施工管理を担当しています。 前職では自社開発のデータベースの監査アプリケーションやデータベース移行補助ツールなどのテクニカルサポートをおこなっていました。 常日頃「プロダクトと顧客」の間に立つものとして、課題に対して技術的に向き合っています。

大工一筋の父親のもとで育ちましたので、私なりに建築・建設業界の役に立ちたいとアンドパッドで充実した日々と共に業務に励んでいます!

前提

アンドパッドのCREは、外形監視として利用しているDatadogを活用して異常に重いリクエストの確認、集計を行なっています。 そして検知回数、遭遇ユーザー数、全体のログ数など様々な指針で各プロダクトへ情報共有を行い、改善を促す活動を行ってきました。

この「異常に重いリクエスト」をCREでは以下のように定義しています。 頻発した場合に顧客影響が大きいため、CREでも監視を行なっています。

  • リクエストを返すまでに異常に時間*1がかかっている
  • ユーザーがタイムアウトに遭遇している可能性がある、そうでなくても画面を開くまで時間がかかりすぎる
  • DBへ負荷を与えてしまっていて頻発するとANDPAD全体に影響がある

この監視は以下に記載するCRE全体の成果目標達成に向けた一つの活動となります。

  1. ユーザーの不安は少しでも早く解決する
  2. 不便な状態が続かないよう開発・プロダクトに働きかける
  3. ユーザーが問合せせずに済む(満足している)状態にする

この異常に重いリクエストの確認はユーザーへのストレスやシステムへの負荷低減に寄与する活動です。それだけでなく、CREが日々のお問合せ対応の中でどのページが重くなりがちかを全体把握し、優先度を判断することにも役立てています。

これらの活動を行う中で後述する課題が見えてきました。

やったこと

GoogleAppScriptsを用いて、DatadogAPI経由でのログ自動取得とGoogleスプレッドシート内での自動集計を行うツールの実装を行いました。

なぜやったのか

手作業で行っていた集計を自動化することで工数削減を期待したためです。

これまではCREのメンバーが朝会前後に以下の作業を数分程度の工数を使って毎日行っていました。

  1. DatadogLogsへWebブラウザ経由でアクセス
  2. 異常に重いリクエストのログを確認
  3. 2で確認したリクエストがスプレッドシートにある既存のログ(過去に検知済みのリクエスト)かどうかチェック
  4. 既存ログの場合、手動で累計件数を集計しスプレッドシートを更新
  5. 新たに検知したログの場合、手作業でスプレッドシートへ検知数などを追記しメンバーへ周知

サービス拡大が進む中でリクエスト数も多くなり、毎日の手作業が地味につらいと感じていました。 こちらの作業を自動化することで、優先すべき業務に集中できることを実現したい、いや実現しよう!と決意しました。

調査したところ、DatadogではAPIが充実しており、リクエスト結果をJSONで取得できることがわかりました。 そこで、これを活用して、まずやってみようという精神で取り組み始めました。

自動化の実装

以下の図のような形で自動化の実装を進めました。

自動集計ツール実装イメージ

つまずいた点は、処理の流れでした。当初は対象のログを一度スプレッドシート内に吐き出してから、既存ログか新たに検知したログか判定する流れを検討していました。 しかし、GoogleAppScriptsの実行時間が6分までと制限がありスプレッドシートへの書き込み時間がボトルネックになりそうだったため、プログラムの配列上で処理する実装へと変更しました。

既存ログか新たに検知したログかを判定する処理の流れ

実際に運用してみた

今では毎日集計を行った旨がSlackメッセージとしてポストされ、CRE はそれを確認するだけ、といった運用になっています。 CREのメンバーからも毎日の手作業が無くなったため、非常にありがたいといった声をもらっています。

Slackへの通知イメージ

最後に

今回は「手動での集計作業を自動化した」というところにフォーカスして記事を書きました。 しかし大切なのは集計を行ったあとどうするか?何のために集計しているのか?だと考えています。 今後も異常に重いリクエストに対してしきい値を適切に定め、優先度判断の精度をより向上させる中で各プロダクトへ改善依頼を行える基盤を構築していきます。

またDatadogのAPIには可能性を感じています。 他にもCREの業務を行う中で活用できそうなアイデアがメンバーからも上がってきています。 今回のような知見を蓄積し、共有できたことも改善活動を通して得られたものとなります。 発端となる課題は「1日数分の手作業」ではありましたが、たかが数分されど数分として改善したいと意志を持って向き合ってみてよかったなと思いました。

こういった何気ない違和感や気づきをポジティブに得られるための活動*2*3をアンドパッドのCREは大切にしています。 少しでもアンドパッドのCREに興味を持っていただけましたら、ぜひカジュアル面談などにいらしてください!

engineer.andpad.co.jp