Ubie Discovery における、Data Engineer と他データ基盤系職種の関係
- Authors
- @__Attsun__
- Published on
この記事について
私が現在所属する Ubie Discovery(以下 UD)で働く Data Engineer の視点で、他データ職種との関わりや違いについて書きました。
カジュアル面談など社外の方とお話する中で、以下のような質問が頻出するため記事としてまとめてみようと思った次第です。
- Analytics Engineer と Data Engineer の違いは?
- Data Engineer は実際、どのような業務をしているの?
- 技術的にはどのようなスタックで仕事をすることがあるの?
TL;DR
- Ubie Discovery には、Data Engineer, Analytics Engineer, ML Engineer といったデータ職種があります
- Data Engineer は、Analytics Engineer や SRE と協力して、データプラットフォームを作っていくことが主なミッションとなります
- 職種はただの入り口のようなものなので、ご自身の強みを活かして様々なミッションにチャレンジしていただければ良いと思っています
簡単に自己紹介
- UD では 3 年とちょっと働いている Data Engineer です。
- 前職ではマネジメントなどもしていました。特に Data Engineer と名乗って仕事していたわけではないのですが、スキルセット的には近かったし興味も強かったので Data Engineer として入社しました。
- 会社の成長とともに様々な職務に携わってきました。3 年のうち半分くらいは Data Engineering 以外のことをやっているような気がしています。もちろん、集中している方もいます。
UD のデータ基盤系職種について
まず、必ずといっていいほどご質問いただく職種の違いについて書きます。
UD には以下の種類の「データ基盤系職種」があります。(「データ基盤系職種」というのは個人的な分類です)
- Data Engineer
- Analytics Engineer
- MLOps Engineeer
- ML Engineer
- ※ 現在積極募集はしていないため、以降は割愛します
今回は Data Engineer である私の観点から、各職種と Data Engineer の違いを見ていきます。
Analytics Engineer と Data Engineer の違い
- Analytics Engineer は、各プロダクトのデータ利活用が最適になるようなサポート・管理をします。データマートの構築やダッシュボードの整備など。データについての細かい質問にも答えます。
- Analytics Engineer は、dbt を利用して SQL をたくさん書いています。また、データについての問い合わせを調査するため、BigQuery コンソール等を利用してアドホックなデータ調査をしています。社内にどのようなデータがあるのか、最も詳しい職種といえます。
- Data Engineer は、Analytics Engineer をはじめとしたデータ利用者が、安全かつ最適にデータ利活用をできる基盤を構築します。
- Data Engineer は、Terraform や Python を使い、ETL やストリーミングログ基盤を構築・メンテナンスしています。Analytics Engineer 等からの要望をまとめ、チケット化し、プラットフォームを開発しています。
MLOps Engineer と Data Engineer の違い
- MLOps Engineer は、弊社のプロダクトで利用されている関連病名抽出 API や、テキスト処理 API の開発・構築をします。また、そのためのデータ開発や管理をします。
- Data Engineer は、MLOps Engineer が必要とするデータ処理を簡単に実装できるようにしています。例えば airflow のようなジョブ基盤を構築・運用など。
各職種のメンバーのバックグラウンド、求められるスキルセットの違い
以下が各データ基盤系職種のバックグラウンドと求められるスキルセットになります。
Data Engineer | Analytics Engineer | MLOps Engineer | |
---|---|---|---|
メンバーのバックグラウンド | 社内の分析基盤構築をしていた人、MLOps 基盤を構築していた人、社外向けの DMP 開発をしていた人 | 事業会社でデータアナリストやデータサイエンティストをしていた人 | 事業会社で機械学習エンジニアをしていた人、MLOps 基盤を構築していた人、データサイエンティストをしていた人 |
クラウドインフラ | 必須 | 任意 | 必須 |
バックエンド API, バッチ開発 | 必須 | あると良い | 必須 |
データ分析 | 任意 | 必須 | あると良い |
データ整備、ダッシュボード構築 | あると良い | 必須 | あると良い |
ML のサービス組込 | 任意 | 任意 | 必須 |
Data Engineer はバックグラウンドが結構多様なので、基本となるスキルセットは同じでも周辺領域の広さが人によって違ったりしています。
Data Engineer の場合、クラウドインフラの中でも、特にデータに関するサービス(BigQuery や Cloud Composer など)や、権限管理に関わる部分(ServiceAccount, IAM など)は特に重要となってきます。
各職種との違いまとめ
まとめると、Data Engineer はプラットフォームを作る役割であって、 Analytics Engineer や MLOps Engineer がそのプラットフォームの上でデータ利活用を行っている、というイメージです。
なぜデータ基盤系職種を細分化しているの?
事業成長に伴いデータの種類と利活用のパターンが増え、個々の業務の量や複雑性が向上したためです。
また、Ubie の事業はデータ利活用の重要性が本当に高いので(本当に)、単一の職種が薄く広くやるよりは、それぞれの専門性を持ったメンバーたちが協力してやっていくほうが全体として高品質なものが作っていくことができ、ひいてはそれが事業成長に繋がっていく、と考えています。
とはいっても、最初からこのような職種分けがあったわけではありません。私が入社した 2020 頃は ML Engineer と Data Engineer の 2 職種のみで、今の Analytics Engineer や MLOps Engineer がやっている仕事はこの 2 職種でまかなっていました。
今後もさらなる事業発展に伴い、新たな職種が誕生するかもしれません。
Data Engineer が所属するチームと、業務の進め方
次に、 Data Engineer がどのようなチームに属し、どのように業務を進めているか簡単に紹介します。
前提として、 UD はホラクラシーという一風変わった組織制度を採用しており、従来の階層組織とは少し様相が異なります。ひとまず、ここではホラクラシーにおけるサークルをチームと見立てて話します。
ホラクラシーは一旦理解していなくても読み続けられます。気になる方は以下の記事をお読みください。
フラットな組織の負債と向き合った Ubie Discovery が、ホラクラシー組織を採用した理由
Data Platform チーム
社内の Data Engineer すべて(3 人)が所属するチームです。週1程度で同期のミーティングをしており、そこでクラウドコストをチェックしたり、雑多な気になりを共有したりします。
また、タスクはカンバンで管理しているため、次の1週間で実施する予定のタスクを各々積んでいます。
大きなテーマについては OKR として定めて進捗管理もしています。大きなテーマに向かうときは複数人で実施することもありますし、細かいテーマについては個別で対応してしまうときもあります。
コードレビューは必須としており、Github 上でディスカッションがされることもあります。
BI チーム
主に Analytics Engineer が集まっているチームです。Data Engineer も 1 名が橋渡し役として入っており、データ利活用観点で Data Platform に必要な情報の収集・提供をしています。
それなりの規模感の業務があれば、Data Platform チームに持ち帰って処理します。
Analytics Engineer とは別に Data Analyst も存在していますが、 Data Engineer からの距離感はより遠くなるため割愛します。
※ このブログを出そうとしている直前に、 Data Platform チームと BI チームは、両チームの希望からマージされました。ホラクラシーでは、このように当事者ドリブンで柔軟に組織形態が変わっていきます。
他職種とのコラボレーション
Data Platform チームのように Data Engineer だけが集まっているチームもありますが、実際は様々な職種の方々と日々コラボレーションをして働いています。
Analytics Engineer
上述の通り、BI チームとの関連は非常に深く、最もコラボレーションする職種です。Analytics Engineer はデータについての知識やデータ利用者(社内)についての知見は深く持っている一方、データインフラの詳細は把握していませんので、 Data Platform 利用についてのサポートをしたり、要望を吸い上げたりしています。
また、データ利活用についての中長期的なロードマップについてディスカッションすることなんかもあります。
例えば、弊社 Analytics Engineer による「Ubie での BI 民主化の振り返り」という記事で紹介されている「BI 民主化」について、UD としてどのようなところを目指すか、そのために必要な基盤はなにか、という観点で話すなどしています。
SRE
SRE もなかなか近い存在です。Data Platform を構築する際、Application Platform と思想や設計が大きくズレないようにするために、レビューしてもらうことがあります。
また、過去にはデータ基盤の移行プロジェクトをチームを組んで実施していたこともありました。
MLOps Engineer
以前は Data Engineer が MLOps Engineer も実質兼務する形で、ML API の作成を行っていました。
最近は、MLOps Engineer は ML API 開発、Data Engineer は Data Platform 開発、というようにミッションの独立性が高くなっているため職種としても分け、コラボレーション機会もそこまで頻繁ではありません。
ただ、新たな前処理を airflow で動かしたい、などの需要があるときにはスポットでサポートするなどはあります。その他、データ基盤系トピックの雑談などもたまにあります。
プロダクト開発エンジニア
主には、アプリケーションのログやデータベースのデータを BigQuery に投入して利用可能にしたい、という場合にサポートしたりレビューしたりしています。
だいたいの作業は型化されているので、github でレビューリクエストが来たものをさばく、というようなことが多いです。
各プロダクトの PO、事業開発
日常的な関わりは相対的に薄めです。プロダクト側で新しい施策をやりたい、その場合に新たなデータの利活用パターンが生まれそうという場合に、レビューをすることはあります。
職種の境界はあるのか?
ここまで Data Engineer の視点で、仕事や関わる職種を書いてきました。
しかしながら、Data Engineer として入社したからといって Data Engineer 業務だけをやらなければいけないということは全く無く、いわば入り口でしかありません。
私自身も冒頭で触れたように、様々な職務を担当してきました(しています)。経験としてはバックエンド API 開発も長くやっていたので、ML API の開発や、社内の各サービスが利用する共通のマイクロサービスの開発など。
UD では特にやってはいけないということはないため、自分ができそうかつ事業的にも必要であれば、職種関係なくやれば良い、という考えです。
Data Engineer は人によってキャリアの積み方がバラけている印象で、得意な領域も違っているので、入り口として Data Engineer として入社したとしても、これまでの資産をめいいっぱい活かしつつ、新たな領域にもチャレンジする働き方をしていただくのが理想的だと考えています。
まとめ
(TL;DR の再掲です)
- Ubie Discovery には、Data Engineer, Analytics Engineer, MLOps Engineer といったデータ職種があります
- Data Engineer は、Analytics Engineer や SRE と協力して、データプラットフォームを作っていくことが主なミッションとなります
- 職種はただの入り口のようなものなので、ご自身の強みを活かして様々なミッションにチャレンジしていただければ良いと思っています
採用の宣伝です
Data Engineer はじめ各職種絶賛募集中です!!!
UD の Data Engineer 、もしくはデータ基盤系の仕事について興味ある!もう少し話聞いてみたい!という方がいらっしゃれば是非お話しましょう!