見出し画像

パフォーマンスレポートの開発で得た知見 〜レポート作成のためにデータをどう扱うか?〜

みなさんこんにちは!
ワンキャリアでバックエンドエンジニアをしている野原です!

2022年初頭に入社し、人事向け採用クラウドONE CAREER CLOUDの開発チームにて、バックエンド開発、フロントエンド開発、チームマネジメントなどを担当しています。
詳しい自己紹介は過去のインタビュー記事をご覧ください。

今回の記事では、ONE CAREER CLOUDの機能の一つであるパフォーマンスレポートを開発した際に得た知見について、共有いたします。



はじめに

ONE CAREER CLOUDとは

「ONE CAREER CLOUD」は、人事向けDX支援プロダクトです。 就活生の2人に1人以上が利用する(※)の就活サイト「ONE CAREER」を運営するワンキャリアが独自で保有する59万件以上のデータやコンテンツを活用し、新卒採用の課題をソフトウェアの力によって解決します。

※2023年2月時点における2023年卒学生の情報

具体的には、求人掲載機能、採用計画機能、スカウト機能、LIVE機能など採用を支援する多くの機能を提供しています。

パフォーマンスレポートとは

パフォーマンスレポートとは、求人掲載等のPV数や最近のお気に入り登録者の傾向をグラフでユーザーが閲覧できる機能です。

この機能によりユーザー(人事の方)は、最近の自社の注目度という定量数値をもとに、採用活動のPDCAサイクルを回すことができます。

実際のパフォーマンスレポートの画面


「データマート」の概念を活用したパフォーマンスレポートの実装

パフォーマンスレポートの実装においては、以下のような要件がありました。

①複数のデータソースを統合する
②データソースの中にはアクセスログが含まれており、データ量が大きいため、リアルタイム処理以外の方法で集計する
③集計対象期間を柔軟に変更可能にする

これらの要件を満たすために、「データマート」の概念が活かせそうだと思いました。

「データマート」とは?

「データマート」は特定のビジネスニーズや要件に合わせてデータを統合し、最適化されたデータセットを提供するデータストレージのコンセプトです。データマートはデータを集約化(Data Lake)し、データを加工・整形(Data Warehouse)した後に、最終分析できる形式にしたものを指します。


ぶつかった課題

データマートを作成する際にぶつかった課題は「データマートの更新をどのように行うか?」でした。

候補としては洗い替えによる全件更新、もしくは差分更新でした。

実装の容易さや冪等性が担保される点を踏まえると全件更新にメリットがありましたが、
更新に時間がかかるだけではなく、システム負荷がかかりリソースコストも増大してしまうというデメリットがありました。

そこでデータマートの生成ロジックを工夫し、特定の差分が発生するデータの更新だけで済むようにしました。

しかし、また新たな課題がありました。それは更新のタイミングです。
特定のデータにおいて差分が発生する度に都度更新するのか、もしくはあるタイミングでまとめてデータを更新をするのか、という選択です。

都度データを更新する場合はその都度データベースアクセスが発生するため、アクセスが一時的に集中した際にネットワークの遅延や更新処理が競合する可能性があり、そのパフォーマンス変動によってユーザーに悪影響を及ぼすことが想定されました。一方でまとめて更新を行う場合、データのリアルタイム性は損なわれてしまいますが、更新のタイミングをユーザーのアクセスが少ない時間帯に調整することが可能なため、ユーザーへの影響を最小限にすることができそうでした。そのため、今回はあるタイミングでデータをまとめて更新するという選択肢を取りました。

ついに、リリース

最終的に、無事リリースまでこぎつけることができました。
当初は10秒かかっていたレポートの描画がデータマートの活用により0.3秒まで改善することができました。
また、ユーザーから「よりわかりやすく募集状況を分析できるようになり、募集計画を立てられるようになりました」などのコメントをいただきました。


さいごに

今回の開発により色々勉強になりました。
特にレポート表示の処理を高速化するための施策については、数々の検討と調査を行ったため、自身にとって非常に学びになりました。
今回の記事の内容がどなたかの参考になれば幸いです。
今後もこういった学びに関して定期的にテックブログにしていければと考えております。


▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら

▼カジュアル面談を希望の方はこちら

▼エンジニア求人票


この記事が参加している募集

オープン社内報

この記事が気に入ったらサポートをしてみませんか?