- バックエンド / リーダー候補
- PdM
- Webエンジニア(シニア)
- Other occupations (18)
- Development
- Business
こんにちは。ウォンテッドリーの推薦基盤チームでソフトウェアエンジニアをやっているnasaです。
推薦基盤チームではデータサイエンティストの生産性を上げるための仕組みづくりや開発ツールづくりを行っています。
しかし、仕組み・ツールが実際に使われ生産性を上げているかよく分からない状態でした。この問題に対してメトリクスを収集しモニタリングダッシュボードを整備したのでそれを紹介します。
課題感
最初にどのような課題がありモニタリングダッシュボードを作ったのか話していきます。
課題は下記の2つがありました。
- 使われているか分からない
- 効果があったのか分からない
使われているか分からない
開発者と距離が近くいつでも聞ける状態ではありましたが、すべてのツールの利用状況を観測し続けるのは大変です。また、ツールの導入状況も把握できておらず、利用できる状況にあり利用されないのか利用できる状況にないのか分かりませんでした。
効果があったのかわからない
こちらのほうが課題感としては大きかったです。ツールが利用されているとしてもきちんと効果を発揮し続けているのかよく分からない状況でした。
収集したメトリクス
利用状況と効果を取るためにツールごとにログを収集しました。そのうち幾つかをピックアップして紹介します。
デプロイツール
推薦ロジックの改善を実際のアプリケーション上で確認するためのツールが存在します。いわゆるCDツールですね。このツールはデプロイ手順を減らし誰でも爆速でデプロイ出来ることを目的に開発しました。
このツールでは下記の3つを収集しています。ツールの効果検証としても有効ですし、単純にチームのパフォーマンスを測る目的でもこれらを収集しました。
- デプロイ回数
- エラー発生回数
- デプロイ時間
機械学習パイプラインのキャッシュ管理ツール
機械学習ジョブの実行時間は数時間とかなり長いのですが、中間生成物を管理し必要なときに必要なステップを実行するツールが存在していました。詳細はここでは触れませんが知りたい人はこちらのスライドを参照してください。
このツールでは下記を計測していました。成果を知るためにキャッシュの有り無しで実行時間がどれだけ異なるか、キャッシュのヒット率はどの程度かを計測し、利用状況を知るためにリポジトリごとの実行回数を計測しています。
- リポジトリごとのコマンドの実行回数
- ステップごとのキャッシュヒット率
- ステップごとの実行時間
ダッシュボードの効果
モニタリングダッシュボードの効果を実例を踏まえて紹介できればと思います。
課題特定のスピード向上
利用状況は導入状況がひと目で見れるようになった結果、ある開発ツールがそもそも導入されていない事が分かりました。
開発者に対してヒアリングを行いツールの効果はあるが導入コストが高い事が分かったのですが、このようにどのあたりに問題があるのか理解しやすくなりその後の原因特定に繋げられました。
他にも、デプロイツールの事例があります。デプロイツールを使ったデプロイは特定の状況において1時間ほど掛かっており当初目的としていた高速なデプロイを実現できていない事が分かりました。
これも問題を発見しその後の改善につなげることが出来ました。
効果に基づいた意思決定
ツールの効果がざっくり見れるようになったのでそれに伴う意思決定もやりやすくなりました。
「機械学習パイプラインのキャッシュ管理ツール」が思ったより効果を発揮しなくなっていることがダッシュボードを見ていて分かりました。これは利用数の低下もそうですしキャッシュのヒット率の低下もありました。ヒアリングを行った結果、現在の開発スタイルやプロジェクトの性質にツールがマッチしなくなっていることが分かりました。
ツール自体のメンテナンスコストがかかっていますし、このツールは性質上、導入しているリポジトリのコードと密結合になっており開発者にもメンテナンスコストを割いてもらっていました。
コストに見合うだけの効果がツールから得られないことが分かったのでこのツールは撤去し削除しました。
このように効果測定の結果を下にツールにリソースを割くかの決定に繋がり良い成果をもたらしてくれたと思っています。
まとめ
開発ツールや仕組みのモニタリングを行い、ユーザーヒアリングやその後の改善(または撤退)に繋げた話をしました。
個人的には、ログは簡単に取れる割に大きな効果をもたらしてくれたと思っています。また、開発者(ユーザー)と距離が近い環境なこともあり、定量・定性の組み合わせで原因特定を爆速で行え良かったなと思っています。
定量、定性を適切に使い分けつつプロダクトを良くしていきたいですね。