1. Data Engineering Described
データエンジニアリングの定義。
1.1 What Is Data Engineering?
データエンジニアリングとは、生データを取り込み、分析やMLなどの下流のユースケースをサポートする高品質で一貫性のある情報を生成するシステムとプロセスの開発、実装、保守のことである。
データエンジニアは、データエンジニアリングライフサイクルを管理する。
データエンジニアリングライフサイクルは、ソースシステムからのデータの取得に始まり、分析やMLなどへのデータ提供に終わる一連のライフサイクル。
データエンジニアリングライフサイクルは、以下のステージで構成される。
- 生成 (Generation)
- 保存 (Storage)
- 取り込み (Ingestion)
- 変換 (Transformation)
- 提供 (Serving)
これに加えて底流 (Undercurrents)というライフサイクル全体に渡る重要な概念があり、以下が含まれる。
- セキュリティ (Security)
- データ管理 (Data management)
- DataOps
- データアーキテクチャ (Data architecture)
- オーケストレーション (Orchestration)
- ソフトウェアエンジニアリング (Software engineering)
データサイエンティストが90%以上の時間を分析、実験、MLに集中すべきであり、データエンジニアは収集、移動や保管、探索や変換に注力すべき。
1.2 Data Engineering Skills and Activities
企業内のデータエンジニアリングの複雑さのレベルは、その企業のデータの成熟度に大きく依存する。
「データ成熟度」とは、組織全体でより高いデータ活用、能力、統合の度合いを指す。
データ成熟度モデルの3つのステージ。各ステージでデータエンジニアのアクティビティは異なってくる。
- データを使い始める (Starting with data)
- データとともに成長する (Scaling with data)
- データでリードする (Leading with data)
実運用レベルのコードが書けないエンジニアは大きく遅れをとることになる。主要言語は、SQL、Python、JVM言語 (Java, Scala)、Bashなど。
データエンジニアの2つのタイプ。タイプAエンジニアとタイプBエンジニア。
タイプA (abstraction) エンジニアは、データアーキテクチャをできるだけ抽象的でわかりやすく保ち、既成のツールを使ってデータエンジニアリングライフサイクルを管理。
タイプB (build) エンジニアは、競争優位性を拡張するデータツールやシステムを構築する。
1.3 Data Engineers Inside an Organization
ソーシャルメディアアプリやIoTデバイスなどの外部向けアプリケーションのユーザに対応する「外部向けデータエンジニア」、ソースシステムからアナリティクスやML向けのBIダッシュボードやパイプラインやデータウェアハウスを構築する「内部向けデータエンジニア」がある。
upstreamのデータproducerとして、データアーキテクト、ソフトウェアエンジニア、DevOpsやSREがステークホルダーになる。
downstreamのデータconsumerとして、データアナリスト、データサイエンティスト、MLエンジニアがステークホルダーになる。
他にもビジネス関連では、CXOやプロジェクトマネージャ、プロダクトマネージャ、マネージャなど。