はじめに
こんにちは。データプラットフォームチームのマイン(id:manhnguyen1998)です。
2024年1月からデータエンジニア留学(第1期)という制度を利用して、データプラットフォームチームに配属されています。第1期生として、このデータエンジニア留学制度について、自分の経験をもとに紹介したいと思います。
データエンジニア制度とは
データエンジニア留学制度は基本的にSRE留学と同じですが、留学先はデータプラットフォームチームです。SRE留学に関する記事はいくつかありますのでご覧ください。
tech.classi.jp tech.classi.jp tech.classi.jp
なぜ留学したのか?
もともとバックエンドエンジニアとしてRailsのアプリケーション開発を行っていましたが、ある時社内のBigQueryでデータを見る機会がありました。どうやってRDSからBigQueryまでデータが反映されるのかに興味を持ち、データエンジニアの仕事に興味を持つようになりました。
その時、データエンジニア留学制度の告知があり、不安もありましたが、チャンスを逃すまいと留学を希望しました。
自分と同じようにデータエンジニアに興味を持っているけれど、不安でチャレンジしない方もいると思います。この記事で「誰でもできるよ!」ということを伝えたいです。
データエンジニアの仕事とは?
データエンジニアの仕事は、データ活用の基盤を作ることです。具体的にはデータの収集、処理、保存、提供などがあります。
Classiでは主に以下のようなことを行います。
他チームのデータ活用の支援、相談、作業依頼
改善活動
また、データエンジニアが使用するツールや技術はBigQuery、dbt、Cloud Composerなどがあります。
他チームのデータ活用の支援、相談、作業依頼
データ基盤は社内の多くのメンバーが利用しており、さまざまな意思決定を支えるシステムとなっています。そのため、データを活用する上で、データ基盤に対してもさまざまな要望があります
- マーケティングチームは顧客の利用状況を把握するためにダッシュボードを作成したい
- プロダクトチームがリリースした機能の効果測定をしたいが、方法がわからないので相談したい
- データサイエンティストがデータ分析のためにデータセットを準備したい
- データ活用に関するアドバイスやベストプラクティスを共有して欲しい
などの要望です。このような相談に対してエンジニアとして意見を出し、他チームの開発をサポートしていました。
改善活動
データ基盤の改善もデータエンジニアの重要な業務の一つです。データ基盤は膨大なデータを扱うシステムであり、うまく改善しないとデータの提供もできないことがあったり、コストも高くなることがあります。
改善活動として、私が対応したものは以下のようなものがありました。
- データパイプラインをCloud Composer (Airflow) からdbtに移行する
- データの品質を監視する環境の整備
- コスト削減
- 不要なリソースの削除
留学中にやったこと
BigQueryに抽出されたデータの欠損検知
データ基盤の毎日のデータ抽出には欠損リスクがありますが、欠損がある場合、これまで気付くことができませんでした。そこで、欠損を発見しやすくするための改善に取り組みました。
BigQueryに保存されたテーブルのレコード数の推移の異常を検知し、欠損など急な変化を検知できるようにしました。例えば、特にアクションがないにもかかわらず、レコード数が急激に増減する場合、データの欠損や何らかのミスが発生した可能性があります。逆に、繁忙期におけるデータの推移を監視することで、利用状況を把握することもできます。
開発したSlack通知
Tableau
ダッシュボード機能のETLのdbtへの移行と改善
ダッシュボード機能のETLは元々Cloud Composerで直接クエリを実行してデータを管理していましたが、管理が難しかったため、dbtに移行しました。dbtに移行することで、データの処理や管理が容易になり、データに関する説明も整理することができました。
この機能は管理職が利用し、学校全体に関する統計情報を閲覧するため、その重要性が非常に高く、データに誤りがあると重大な影響を及ぼす可能性があります。そのため、dbtに切り替える前に、移行前後の差分確認をしっかり行い、慎重に対応しました。しかし、確認不足の部分があり、学校IDをクラスタキーとして使用することを忘れてしまったため、リリース直後に課金が増加してしまいました。この経験から、コストに対する理解を深めることができました。
このコストの問題を認識した上で、ダッシュボード機能のETLを見直す機会があり、毎日のスキャン量を約85%削減することができました。 ダッシュボード機能のクエリでは学校IDをクラスタキーとして使用していました。しかし、クラスタはクエリごとにスキャン量が異なり、効率的な測定が難しいという課題がありました。そこで、調査の結果、学校IDの空間でパーティションを使用することにより、スキャン量を削減することができました
メタデータシステムPlatoをクローズ、dbtに移行
Platoは以前ブログでも紹介したメタデータ管理システムです。
当時、メタデータの普及に重要な功績を残してくれたシステムでしたが、近年では運用コストが上がり、手間も増えたため、別の仕組みに移行するモチベーションがありました。
この対応により運用作業が減少し、毎月のGCPコストも削減することができました。既存のメタデータもdbt docsに移行でき、社内でのdbt docsの存在を改めて認識させることができて良かったです。
dbtに関しては下記の記事をご覧ください
dbt docsの例
RedashのCloudSQLのPostgreSQLを9から15にバージョンアップ
データベースのメジャーバージョンアップデートは初めての経験だったので、最初から調査し、ダウンタイムを短くするための計画を立てました。作業自体は非常に勉強になりました。今回は20分以内に作業を終え、ダウンタイムを短く抑えることができてよかったです。
勉強になったこと
留学中に学んだことは技術に限らず、以下の点が特に勉強になりました。
分析力
データから仮説を立て、それをもとに結論や次のアクションを提案することができました。少しずつですが、分析について学ぶことができました。
チーム間コミュニケーション
留学の目標の一つはチーム間で協力することでした。自分のタスクに関わるだけでなく、SRE、マーケ、開発チームなど他のチームとも関わり、情報共有やコミュニケーションが必要でした。
「how」より「why」の考え方
以前はタスクに直接飛び込むことが多く、その理由がわからないまま適当な解決方法を出すことがありました。今回の留学で、「なぜ」そのタスクが必要なのか、誰がその成果を求めているのかを十分に理解した上で、適切な提案をすることが大切だと学びました。
難しかったこと
知識の広さ
データエンジニアは多くのチームと関わるため、求められるスキルは多岐にわたります。インフラ管理の知識、データ管理の知識、開発スキル、マーケ側とのコミュニケーション能力など、広い範囲で深く理解する必要があります。
横断的な振る舞い、考え方の難しさ
データプラットフォームチームは他のチームをサポートすることが多く、横断的な振る舞いや考え方が求められます。しかし、留学中はチーム課題に集中しすぎて、データエンジニアとして他チームをアドバイスして支援することが難しかったです。
あなたもできる!
データエンジニアは魅力的な仕事ですが、チャレンジも多いです。しかし、難しいからといってできないわけではありません。もともと何もわからなかった自分ができたので、誰でもできると思います。日々の仕事でスキルを磨き、必ず達成できます。
まずは小さなプロジェクトから始めましょう。このアプローチは、少ないリスクで新しいスキルを試し、成長するための確かなステップです。例えば、データエンジニアとして初めてのプロジェクトとして、日々のログデータから特定の指標を抽出するタスクを考えてみましょう。このプロジェクトでは、SQLクエリを使用してデータを加工し、分析結果をダッシュボードで可視化することが目標です。小規模なデータセットと少ないリソースで取り組むことで、自分のアイデアを具体的な成果物に変えるプロセスを学ぶことができます。
さらに、タスクを進めながら、メンターやチームに積極的に質問し、理解を深めましょう。この過程で、ソフトスキルも成長し、データエンジニアとしてのスキルだけでなく、チーム全体での協力や連携能力も養われます。チーム内だけでなく、インフラチームなど他の部門の意見も積極的に取り入れて、より良い成果を目指しましょう。
最後に
データエンジニアというキャリアは挑戦と学びの機会に満ちています。最初は不安でしたが、一歩踏み出すことで多くのスキルと知識を得ることができました。他チームとの協力や支援を通じて自分の成長を実感しています。
データエンジニアを目指す皆さんにも、その一歩を踏み出してほしいと思います。初めは難しく感じるかもしれませんが、挑戦し続けることで必ず成長できます。その過程で得た知識やスキルは、今後のキャリアに大いに役立ちます。
Classiのデータエンジニアに興味を持った方は下記をご覧ください