« ^ »
[WIP]

ETL

2022/12/29 更新
約 4分 で読める

データ処理の統合時に必要となるプロセスで、データウェアハウスやデータレイクにデータをロードする前のプロセスのことをETLと言うことがある。収集したデータを必要に応じて変換・加工し、データウェアハウスやデータレイクに貯める。このデータはレポートやデータマイニグなどの分析に利用される。

Extract
抽出
Transform
変換
Load
格納(データベース内にロードするという意味)

各種データはシステムコンポーネント間を次のように流れる。

Data Source  | ETL                      | Data Ware House
-------------|--------------------------|-----------------
CRM          | Spring Batch             | Amazon Redshift
ERP          | Talend Open Studio       | BigQuery
App          | Stitch                   | CloudBase
             | Pentaho Data Integration |
             | Apache NiFi              |
データの流れ

ETLを用いた構成の特徴

更新の遅延

特徴の一つとして、データソースのデータが更新されたとしても、ETLでの処理が実行されなければ、データウェアハウスのデータは更新されない。そのため、このような構成では必ずデータの更新には遅延が発生する。

処理の変更が煩雑になる

通常ETLで実行される処理は処理を記述したコードを何かしらのリポジトリによって管理することが多い。そのため処理の変更にはリポジトリへのチェックインが必要となる。リポジトリへのチェックインの前には動作の確認やレビューが実施されることもあり、処理の変更作業が煩雑になる。これ自体は悪いことだけではないが、そういった副次的な作用があることに注意する必要がある。

ETLを使用するケースとそうでないケースを考える

データ量がそもそも少なかったり、システムコンポーネント数が少ない場合、ETLの機能はオーバーキルである。また、ETLのようなシステムコンポーネントを導入し保守していくことを考えた場合、採算が合わない事もある。

まずは現時点でのデータ処理自体に課題があるかを見極める必要がある。課題を整理し、それを解消できるシステム構成を暫定的に設定し、何人でどの程度の期間で導入し、それを何人で保守していくのかということを試算する。このようなケースに関してはある程度、人月計算が有効だと考えられる。例えば0.25人月といった1人月未満の数値であっても、かかるコストを計算しやすくなる。0.25人月の場合、担当エンジニアは1月の内の約1週間を使うということになる。ということは、1週間の内、1日から2日を使うことになる。人間やシステムが相手であるため、当然そんなに計算通りに上手くはいかないが、試算としては有効だろう。

また、エンジニアの学習機会という意味でも重要であることを付け加えておく。ETLを導入して欲しいと思った時、今在籍しているエンジニアはすぐにそれが出来るだろうか。社員層が分厚ければ、そのような社員が在籍している事もあるかもしれないが、実際の現場ではいないことが多いだろう。そうなると、外注するという選択肢もある。もちろん専門の業者に外注することはコスト面と初期段階のできあがりの精度を考えると、有効な手段ではある。ただよく考えたいのは会社や組織が何の為に存在しているのかということだ。もちろん顧客に価値を届ける事や、株式会社であれば株価を上げ株主に利益を還元する事が目的ではある。ただ価値や利益を届けるのは顧客や株主だけではなく、社会や組織内で働く人、又はその周りにいる人達も、顧客や株主と同じように価値を届ける対象だと思う。それは商品の価値だけではなく、それを作ったり売ったりすることで、雇用を生み、経済との結び付きを提供しており、人々に新しい発見や生活の継続性、心の安定など様々なものを提供している。それらも価値だ。企業努力とはそれらの価値の最大化をするために、総合的な観点から創意工夫をするということだ。では話を戻して、システムコンポーネントの導入や運用は、組織の利益に大きく繋がる可能性がある。それを導入や運用する人は、良い成長の機会を得られるだろう。それを丸ごと外注することにより、社員の成長機会を失う事は、長期的に見て会社の利益を損なう事になる可能性がある。人の成長こそ企業の成長だからだ。もし社員だけでシステム構築を進めていくことに不安があるのであれば、外部からアドバイザーを呼べばよい。アドバイザーを外注し、相談役とレビューをお願いし、実働は内部メンバーで実施するほうが、長期的な利益に見合うのではないかをよく考えたい。また内部メンバーがシステムを把握するということは、柔軟な対応を可能にできることが多く、長期的だけはなく短期的にもメリットがある可能性がある。

https://ja.wikipedia.org/wiki/Extract/Transform/Load


しむどん三度無視 により 2022/11/3 に投稿、2022/12/29 に最終更新
« ^ »