見出し画像

スモールスタートで始めたデータ基盤でグループ6万人のHRテックを実現!!~データ基盤構築プロジェクトを徹底解剖~

ごきげんよう、Tech Blog編集部です。2022年12月にパーソルホールディングスは「IT奨励賞(マネジメント領域)」を受賞しました。
今回、受賞者に取り組み内容を詳しく聞いてみました!
技術的な情報も入れていますので、ぜひご一読ください。

はじめに

公益社団法人企業情報化協会が選定する「IT奨励賞(マネジメント領域)」を受賞しました。
 
ニュースリリース:
パーソルグループが、2022年度「IT奨励賞(マネジメント領域)」を受賞~パーソルグループ社員約6万人の人事データ基盤を構築~

■受賞した取り組みの概要:
スモールスタートで始めたデータ基盤で隠れたユーザーニーズをキャッチ!リーンに利活用を実現!

これまで人事部門が手作業で集計していたグループ会社35社・社員約6万名分の人事関連のデータを、IT部門が主導してデジタル化した取り組みです。データ基盤をスクラッチで構築するには投資対効果や人的リソースの観点から難しい状況の中、SaaS製品を活用することで、データを蓄積・分析する基盤を用意しました。
さらに、社員に関する機密性の高いデータを取り扱うためのガイドラインも策定し、安心・安全なデータ運用が出来る環境を整備しました。

とありますが、
本プロジェクトは2023年2月14日開催のSnowday Japanでも講演いたしましたので、当記事ではデータ基盤をスモールスタートさせたい方向けに技術要素や選定理由を簡単に解説させていただきます。

前提/背景

グループ横断のデータ活用を実現させたいという想いはあったものの、データ基盤を導入した場合の具体的な効果や影響を定量的に評価することが困難であることや、専門知識や技術的な要件も高度であることから、データ活用についての企画提案ができずにいました。
 
コロナ禍による全社のリモートワーク対応が落ち着いてきたことから、データ活用に関する取り組みを開始することとなり、今後のユースケース拡大を見越しつつ、社内で共感してくれるパートナーを探すことが重要と考え、パートナー選定に力を入れました。

水面下で社内のデータの利用に関する情報収集を続けていたところ、人事部門でKPI集計業務に膨大な時間を要しているという課題感を聞き、IT部門である我々から協業を提案し、データ基盤の導入プロジェクトを開始することができました。
 
一般的にデータ基盤の導入には、高いスキルやコストが必要ですが、弊社でも同様の制約があったため、以下の重点ポイントを定めました。
 
-      スモールスタート:最初は必要最低限の機能やデータを選定し、小規模にスタートすることで、コストやスキル面での負担を軽減
-      クラウドサービスの活用:柔軟かつスケーラブルなデータ基盤を実現するため、フルマネージド型のクラウドサービスを組み合わせた環境を構築

実際にできあがったデータ基盤

上記の重点ポイントを踏まえて作成したデータ基盤の構成図はこちら。

 製品選定にあたっての背景

■製品選定の前提
- DBAのようなデータベースのチューニングや運用管理が出来るエンジニアがいない
- データ基盤を実現するアーキテクチャ(Spark/Hadoopなど)を扱えるインフラエンジニアがいない
 
■製品・アーキテクチャの選定条件
- 学習/運用/維持のコストは可能な限り抑えられること
- 将来的なユースケースの拡大に耐えうること(データ量/利用者数が未知数)
- 自走(内製化)出来る仕組みであること

アーキテクチャ選定意図

ここからは本プロジェクトで採用されている主要な製品について解説していきます。
 
■ DWH:Snowflake
データ基盤としての心臓部がこの製品です。
Snowflakeがなかったらスモールスタートでのデータ基盤を構築することは事実上不可能だったと言っても過言ではありません。
 
Snowflakeは端的に言えばSaaSのDWHではあるのですが、
「データ」に集中することが出来るという点で開発者目線でも大変優れた製品です。
 
特にメリットとなったポイントは以下です。
 
-      ニアゼロメンテナンス
カラムナーDB特有のパーティショニングをどうするか?チューニングは?サイジングは?と言った恐らくDBAの方が初期段階で考えるであろうことは裏側つまり製品側で自動的に行われています。
そのためDBAスキルが不要になり、なおかつSaaS型のためインフラスキルも必要としませんでした。
 
-      コンピュートとストレージの完全分離
データ基盤はワークロードが読みにくく、例えば昼間は就業開始時間にユーザー利用のピークを迎え夕方までは閑散としている、夜間はバッチでのデータ更新処理や機械学習の利用によりそれなりのスペックが必要、というような1日の利用の中でも波のある状態が予想されます。
従来型の製品の場合、ピーク時を想定してスペックを決めることになり、利用していない時間も含めて必要以上の待機コストが発生するものだと認識しています。
 
Snowflakeの料金体系としてはコンピュート=ウェアハウスの稼働時間で課金されます。

実態としてはSQLの実行時間の1分単位で課金される料金体系になっており、一定時間経過後にウェアハウスの稼働が停止します。
つまり、ピーク時を意識したスペックにしたとしても利用していない時間の待機コストがかからない=安価に利用可能なため、スモールスタートにも最適な料金体系になっています。

また、コンピュートとストレージが完全分離されているので、
同じデータを参照する場合でも、ユーザー利用のウェアハウスは小さめのスペック、バッチ利用には大きめのスペックにするという特殊な対応ができ、双方の処理がバッティングしないという環境が実現できます。
 
上記2点だけでも既に多くの課題を解決出来ている状態ではありますが、本プロジェクトの実現に貢献している特色があります。
 
-      アカウント自体の完全分離とData Sharing
プロバイダーアカウント、リーダーアカウント、Organizationという概念があり、必要に応じてSnowflakeのアカウントもスケールアウトすることが出来ます。

(これは簡単なSQLやGUIで実施出来ます)
アカウントを簡単に増やすことが出来るため、本プロジェクトでは
1.データ前加工処理をするアカウント(データ集約用)
2.人事部門にデータを提供するアカウント(データ提供用)
3.開発や実験をするアカウント
に分離する対応を行っています。
これらのアカウント間はData Sharing機能で必要なデータ(テーブル単位)をコピーすることなく共有することが出来ます。
データがアカウント毎にゾーニングされるため、権限設定が最小限になり、テーブル単位での権限設定をどうするか?という本来であれば厄介かつ高難度な設計もシンプルに実現することが出来ました。
またアカウント毎に利用料金が分離され、ユーザー利用/開発利用のコストも明確に分離されるため、ユーザー利用のスケールアウト/スケールアップの計画がしやすいという利点もあります。
 
-      GUIが充実している
他の製品と大きく違うなと思う点がこちらです。
従来であれば、ユーザー登録やCREATE DATABASEなどはSQLを書いて、INFORMATIONスキーマなどもSQLで見ながら運転していくものだと思われます。

一方でSnowflakeではGUIが充実しているので、運用用SQL集のようなものを作成しなくてもそういった運用の作業はGUIで実現出来ます。
運用に際しての学習コストを最小限に出来るというのが大きなメリットであり、別製品を選定した場合にかかっていたであろう運用に関するコストは大幅に削減されています。
もちろんスケールアップ/スケールアウトや利用量の確認もGUIで出来るため、運用の負担は大幅に軽減されています。
 
まだまだたくさんありますが、Snowflakeを利用することによるわかりやすいメリットは上記です。
  
■ プラットフォーム:AWS
弊社はクラウド共通基盤としてAWSを利用しています。Direct Connectという仕組みを使うことでAWSを社内ネットワークのように利用することが出来ます。

主な用途としてはデータレイクとしてのS3、ジョブ管理にEC2を利用しています。
 
■ ジョブ管理:Apache Airflow
Snowflakeの唯一の弱点は「ジョブ管理が充実していない」という点だと考えています。
 
データ基盤の運用上、ジョブ管理には以下のようなケースが想定されます。
-      データ未着/失敗等の場合にアラートを飛ばしたい
-      データの更新状況などジョブのステータスをモニタリングしたい
-      Aテーブル、Bテーブルのデータが出来上がり次第、Cテーブルを生成したい 等
 
これらを実現するためのワークフローエンジンとしてApache Airflowを採用しています。
残念なことにDockerが得意なエンジニアがチームにいなかったため、敢えてEC2上でAirflowを稼働させています。
 
Snowflakeによって浮いた工数で、データパイプラインとしてのジョブをどうするか?に集中出来たこともありますし、どうせならモダンデータスタックに連なっている製品を使ってみようというチャレンジの側面もありました。
Pythonでジョブを実装することが出来るので今後の高度分析の基礎として学習するという意味合いも大きかったです。
 
Airflowは日本語ドキュメントがあまりないことや、ジョブの実行時間の取り扱いに非常に癖があるのですが、初期開発時点である程度体系的に共通パーツを実装出来たので、最初こそ学習コストはかかったものの安定して稼働することが出来ています。
 
■ BIツール:PowerBI
Microsoft製品とのシームレスな連携が可能であり、チーム内でのコミュニケーションに活用されるTeamsや報告資料で使われるPowerPointに埋め込むことで、データに基づく意志決定をスムーズに行えるようになります。
加えて、コスト面でのメリットも大きく、他製品はライセンス形態が複雑でコストが足かせになって全社展開出来ないという事例もありますが、PowerBIはProライセンス自体が安価で提供されているため、スモールスタートしたいという要件に最適です。
将来的に全社でPowerBIを展開する場合、キャパシティライセンスに切り替えることで、ライセンス費用の最適化も期待できます。

 終わりに・・・

IT奨励賞を受賞した本プロジェクトに採用している製品を紹介させていただきました。
現段階では、データ基盤として扱うことができるデータの種類や量はまだ限定的ですが、将来のデータ活用シーンに対応できる柔軟性のある環境が整備できたと思っています。
これからは社内でデータを活用したいという関心を持つファン(社員)を増やすことを目標としております。

※所属組織や業務内容は2023年3月時点のものです。

パーソルホールディングスは、グループビジョン「はたらいて、笑おう。」の実現に向け、グループ経営をともにリードする仲間を募集しています。
中途採用の詳細はこちら⇒募集職種一覧
パーソルホールディングス採用サイトはこちら