こちらの記事はカケハシ Advent Calendar 2022 の21日目の記事になります。
はじめに
こんにちは、カケハシのデータ基盤チームのデータエンジニアの大木です。今年も残すところ10日ほどになりましが、皆さんいかがお過ごしでしょうか。
私はカケハシに入社したのが2022年の1月ですので、もうすぐ1年が経とうとしています。本当に月日の流れは早いものです。
個人的に入社1年という節目を迎えるということもあり、この記事では私がデータ基盤チームにJOINしてからの1年間のチーム活動を振り返ってみようと思います。
2022/01~ 入社、チームのミッション・コアバリューの設定
まずは私が入社した当時を振り返ってみようと思います。
当時はデータ基盤チームで専任のデータエンジニアは私1名、専任の開発ディレクターが1名の計2名体制でした。
前任者の退職等もあり、データ基盤チームとしては再始動の色合いが強く、まずは開発ディレクターとチームのミッション・コアバリューの設定から行いました。
個人的には「職人的」「持続可能性」が特にお気に入りです。
今振り返るとチームの核となる価値観を決めたことで、チームとしての行動、意思決定の場面での指針として機能していると感じます。
2022/02~ データ基盤課題整理
チームJOIN後の1ヶ月程は、簡易な開発タスクを消化しながら関連スキルの習得やシステムの把握に努めていました。
前職でもデータエンジニアリングには携わっていましたが、ワークフローエンジンのAirflowや、プログラミング言語のPython等、個人的に今まで触れてこなかったスキルセットも多かったため、それらを新たに学習しながら既存のコードを読みまくってました。
その後、ある程度現状が把握出来た頃からはデータ基盤を取り巻くあらゆる課題に向き合っていくことになります。
その時に私が取った行動を振り返ってみようと思います。
まず、社内データ基盤の特性上、利用者、ユースケースは多岐に渡ります。現状を知るためには現場の生の声を聞くのが一番だと思いましたので、顔合わせの意味合いも込めて利用する全てのチームに対してヒアリングの場を設けてもらいました。
開発サイドからフロントサイドに至るまで計11チームに対して細かくAs is, To beを聞いて回りました。
みなさんのご協力の甲斐もあり、現状の使い方、感じている課題、今後の事業でデータをどう活用していきたいのか等、だいぶ解像度が上がりました。
明確になった現状の課題と今後のカケハシの事業におけるデータ基盤に求められる要件を照らし合わせた結果、このタイミングで技術的なアーキテクチャの刷新が必要だと判断しました。
2022/04~ データ基盤の技術選定
続いて新アーキテクチャの技術選定の話になります。
※具体的な課題と技術選定の話は以前書いた記事に詳細が載っているのでよければご覧ください。
技術選定に携わる上で改めてデータエンジニアリングの領域の技術トレンドの流れの速さを実感しました。
数年前の時点ではある種の「正解」とされていたデータ基盤アーキテクチャも今ではトレンドの最先端ではなくなっていたり、データエンジニアリング市場における新たなマーケットリーダーも登場していたり、運用組織構造に関してもある種のパラダイムシフトが起き始めています。
特にデータ基盤に関しては、導入後の乗り換えの工数が莫大になるため、アーキテクトとして意思決定することの難しさとプレッシャーの大きさを感じたのを覚えています。
幸い、カケハシには各プロダクト開発チームにデータ領域に明るいエンジニアが複数在籍しています。その方々と様々な角度から何度も議論を重ねて「現時点での我々にとって最適と思われる結論」まで出しました。
結果的にDatabricksの採用、中長期的にデータメッシュ型組織を目指していきたいという内容をまとめてCTOと関係開発チームに提案し、了承をいただけました。
2022/05~ Databricks PoC
技術選定の結果、大筋の方向性は決まりましたが、Databricks本格採用する前に1ヶ月ほどPoCの期間を設けました。
事前に期待した通りの仕様であるかを基盤チームだけでなく各プロダクト目線でも確認しておきたかったため、今後利用が想定される開発チームにも協力を頂き約1ヶ月間Databricksを触り倒しました。
チームの開発もある中、PoCに工数を割いていただいた全ての方々には本当感謝しかありません。
PoCの結果、Databricksがやはり我々にとって現時点で最も良い選択肢だと確信できましたので、本採用となりました。
PoCの完了が6月末でしたので、ちょうど半年くらいは今後のカケハシのデータ活用の土台となる部分の方向性を決めるために時間を使っていたことになりますね。
2022/07~ Databricks初期導入
7月頭にはDatabricksとの契約も完了し、初期の導入が始まりました。
まずは既存のRedashで活用していた全データをDatabricks側でそのまま閲覧できる状態に持っていくというところを初期のゴールに設定しました。
元々、AWS上のS3バケットにデータを集約 -> Glue Catalogでスキーマ定義 ->Athena経由でクエリを実行するケースが多数を占めていました。
DatabricksでもGlue Catalogを参照できるため、Databricks側からは既存のGlue Catalogのデータを参照してUnity Catalogに取り込むという簡易なワークフローを組み、既存のETL処理はそのままでデータ自体の移行は比較的短期間で移行ができました。
あとはDatabrick上で安全にデータを利用していくためのデータオブジェクトに対する権限整備や、Workspace環境の開発者の権限の責任分界点等の整理等を関係各所と進めていきました。
ちょうど7月のDatabricks利用開始のタイミングで業務委託でフルタイムで開発に入ってくださるエンジニアの方にJOINいただいたこともあり、既存のRedash環境のメンテナンス等も並行しながら移管の開発も進めることができ、11月末の時点で運用を完全にDatabricksに切り替えるための準備が整いました。
2022/12~ 現在地点
記事を執筆している2022/12月時点では、社内の全ユーザーのアカウントを作成し社内の分析環境として利用できる状態になっています。
元々のRedashのアクティブなユーザーは200人程で、今回のDatabricks環境では新規ユーザーも含めて300人程まで増えていて関係者も多く色々と大変な面もありましたが、なんとか年内にやり切れました。
現在は既存のRedash環境で構築していたダッシュボード、クエリーの資産をDatabricksに移管する作業を進めています。
ここはPresto -> Spark SQLの方言の違いからくるクエリの書き換えも発生するということもあり、データ基盤チームがゴリゴリと手を動かして移行するマンパワー作戦で進めています。
分量としては計500を超えるクエリが対象で、手作業で移行するのは大変ではありますが、来年の2月には既存の環境をクローズしDatabricksに完全移行する計画です。
勉強会
データエンジニアリングの領域は進化がとても早いです。常に知識やトレンドの情報をアップデートしないと技術的に正しい選択が出来なくなる可能性もあります。
カケハシではデータ領域のトレンドに追従するための組織横断の勉強会が開催されており、私も参加し日々学びを得ることが出来ています。
特に、データメッシュやレイクハウスアーキテクチャ等の知見はこの勉強会を通じて新たに得られたもので、データ基盤の技術選定を行う際に参考にさせてもらいました。
また、データ基盤チーム内に閉じた勉強会も開催しています。内容はチームが特に関心を持っているトピックに絞っており、最近はDMBOKやドメイン駆動設計の本の輪読会を行っています。
こういった取り組みは個人、組織のスキルアップとして非常に重要だと思いますので、今後も継続していきたいですね。
外部イベント登壇
Databricksの導入がきっかけで外部イベントへの登壇や事例化のインタビュー等の機会を頂きました。
個人的にも良い機会でしたし、カケハシとしてもDatabricksの良さが日本のコミュニティにもっと広まって欲しいと思っているので、今後もテックブログ等を中心にDatabricksを活用する上での知見を発信していきますのでよろしくお願いします。
今後のデータ活用
データ基盤がDatabricksに移管できたことで、既存データを活用したユースケースの相談を受ける機会も増えてきています。データテクノロジーを核とした事業が進み始めている予兆も多方面で感じられる状況になってきており、個人的には毎日がワクワクで満ち溢れています。
また、カケハシはCEO自身が機械学習エンジニアを目指しています。データ基盤に携わる者としては、CEOを筆頭に会社の皆が事業におけるデータの重要性を共有出来ていることの意義は大きいと感じますね。
まとめ
データ基盤チームとしては今年はカケハシの事業をドライブさせるための技術的な下地を整える作業がメインでしたね。
タイミング的には適切だった気がしますし個人的にも今年は色んな挑戦が出来た年だったと思います。
一方で、まだまだ解決すべき課題はたくさんありますし、データ基盤としては活用がさらに進むこれからが寧ろ本番だと思いますので引き続き頑張っていきたいですね。
最後に
カケハシでは一緒に事業を推進してくださる仲間を絶賛募集中です。
データエンジニアに関しても、データ基盤チームだけでなくプロダクト開発チームでのデータエンジニアのポジションもございます。
興味を持ってくださった方のご応募お待ちしてます。