RAKSUL TechBlog

ラクスルグループのエンジニアが技術トピックを発信するブログです

ノバセルでデータエンジニアへのジョブチェンジをした話

こんにちは。ノバセルのデータプロダクトチームでデータエンジニアとして働いている森田です。 現在は業務として Snowflake や dbt を用いたデータ基盤周辺システムの開発や運用に携わっています。

ノバセル以前の会社ではバックエンドエンジニアとしてソフトウェア開発に携わっていましたが、転職を機にデータエンジニアへジョブチェンジをしました。 入社してから6ヶ月間ノバセルでデータエンジニアとして働いてみて、一般的なソフトウェアエンジニアとの違いなどいろいろな気づきがありましたので紹介します。 データエンジニアに興味がある方にとってなにか参考になるものがあれば幸いです。

データエンジニアのきっかけ

データエンジニア以前は普通のソフトウェアエンジニアとして、Webサービスやモバイルアプリの開発などに携わっていました。 当時はデータエンジニアという職種を意識したことはなく、ご縁があってノバセルの選考を受けさせていただいたときにデータエンジニアとして選考を受けてみないかという話をいただいたことが最初のきっかけです。

ただ、今振り返ってみると前職でデータエンジニアに近いことをしていました。

アプリケーション開発として、Scala を用いてデータを保存・加工し、検索エンジンに Feed していくバッチ処理システムや、 Apache Flink と Amazon EMR を用いてストリーミングデータ処理を開発していました。 その一方で、BIツールの Redash を使ってデータ分析を行いビジネスサイドの方と議論したりといった活動も行っていました。

こういった業務内容がデータエンジニアとしてのキャリアチェンジにつながったのだと思います。

データエンジニアとして働いてみて

実際にノバセルのデータエンジニアとして働いてみて従来のソフトウェアエンジニアリングと違いや新鮮さを感じた点がいくつかありました。 大きくわけて以下の 3 つです。

  • Modern Data Stack
  • メンタルモデル
  • エンジニアリング以外

Modern Data Stack

データエンジニアとして働いてまず驚いたのが、Modern Data Stack とよばれるデータ活用・管理のためのサービス・ツール群です。

以下の記事でカオスマップが紹介されてますが、データエンジニアリングのさまざまなカテゴリーで活用できるツールや SaaS が大量にあります。 lakefs.io

正直、最初はどれ使ったら良いかわからずかなり混乱しました。 しかし裏を返せば、発展していることの証明であり非常にホットな領域だと改めて実感します。

ツール選定の機会が非常に多くなったため、調査 => 意思決定の精度の重要さを日々感じています。 以下の記事でも紹介されていますが、ノバセルでは ADR (Architecture Decision Record) を用いた運用を通してその精度を上げる取り組みも行っています。 techblog.raksul.com

個人的に技術選定について以下のスライドがとても好きなのでこちらも貼っておきます。

技術選定の審美眼(2023年版) / Understanding the Spiral of Technologies 2023 edition - Speaker Deck

メンタルモデル

ソフトウェアを開発しているとプログラミングという行為を通してアプリケーションが実現したい、もっというとユーザーが望んでいる振る舞いを開発するのがメイン業務になります。データは振る舞いにより得られる副産物といったメンタルモデルでした。

しかし、データエンジニアリング領域ではデータが主でありかつ、データがプロダクトであるといった考えが浸透していると感じました。 ロジックはデータを加工するためにあり、データはプロダクトなので信頼性を確認するためにテストの実施も行うといったメンタルモデルです。

もちろんデータとソフトウェアは切り離せるものでないですが、メンタルモデルとしてデータ側に重心をおいた考えに自然となりました。

ノバセルではまさにデータがプロダクトとなる事業を行っているため、こういった組織の中でデータエンジニアというポジションでデータに向き合うことは重要であり、とても面白いと感じています。

エンジニアリング以外

データをどう活用するかという点について、エンジニアリング以外の知識も非常に重要だと感じています。

データエンジニアについて調べている中で出会ったのが、DMBOK というデータを資産として活用するために必要なナレッジが集まっている書籍です。

DMBOK : データマネジメント知識体系ガイド | Metafindコンサルティング

データを扱うということが、それ自体学ぶべき内容がある重要なテーマという点が面白いなと思いました。

社内 Slack でも DMBOK という単語がちらほら見受けられ、以前は輪読会も開かれていたようです。自分も一部しか読めてないので読んでいこうと思っています。

ソフトウェアエンジニアが貢献できること

データエンジニアリングはソフトウェアエンジニアリングと異なる点もありますが共通点も多くあります。

まず、ソースコードの読み書きはデータエンジニアリングでも変わらず重要なことです。 とくに dbt などを触っているとその周辺ツールに触れる機会が多く、それらは主に Python で書かれていること多いため Python に精通しているとこれらの周辺コードが何をしているかという点を深く理解できます。

直近だと、data-diff というテーブル間のデータ比較をするデータ品質のためのツールのソースコードを精読する機会がありました。

GitHub - datafold/data-diff: Compare tables within or across databases

また、データエンジニアリング領域でソフトウェアエンジニアリングから移植されてきた概念が多くあります。

例えば以下のような分野です。

  • Data Observability
  • DataOps
  • Data Mesh

これらの分野は、それぞれデータ領域で課題となることに対してソフトウェアエンジニアリングの領域から移植されているものです。

Data Observability は Observability、DataOps は DevOps、Data Mesh は Microservices や Platform Engineering 周りから影響を受けているものという認識です。

これらはまだまだ日本語の書籍がすくないですが色々と書籍がでていて、まさにいま Hot なトピックということが感じられます。

これらのような歴史的にソフトウェアエンジニアリングが解決してきた問題をデータエンジニアリング領域にも適用させる試みは規模の大きさはあれど無数にあると思っています。 これらの点で、ソフトウェアエンジニアとしての経験を活かして貢献していくことができると信じています。

さいごに

ソフトウェアエンジニアリングからデータエンジニアにジョブチェンジしてみた際の気づき等を書きました。 幸いにもノバセルにはデータエンジニアリング領域にとても明るい方が多数在籍しているため、ここでデータエンジニアに入門できたのは非常に幸運でした。

データエンジニアリング領域にはまだまだ学ぶべきことが大量にありますが、データ周辺のエンジニアリング全般を行うために色々なスキルを磨いていこうと思います。

この記事がデータエンジニアへの挑戦を考えている方の一助になっていれば幸いです。