データエンジニアリングの基礎
Contents-list
これはなに?
データエンジニアとして仕事をする上で以下の2点を整理するためのもの
・職務の際に持つべき視野を広げる→ 考慮漏れを防ぐ
・各技術について理解を深める→ 解の質の向上を目指す
データエンジニアとは何か?
→「データエンジニアリングサイクル」というコンセプトを中心に議論を進める。
データエンジニアリングサイクルは以下のステージで構成される。
- 生成
- 保存
- 取り込み
- 変換
- 提供
また、ライフサイクル全体にわたる概念として「底流(undercurrents)」も導入する。
- セキュリティ
- データ管理
- DataOps
- データアーキテクチャ
- オーケストレーション
- ソフトウェアエンジニアリング
データエンジニアリングとデータサイエンス
データエンジニアリング(上流) → データサイエンスとアナリティクス(下流)
データエンジニアリングのスキルと活動
底流のスキルを持つことで、データツールを評価する方法とツールのデータエンジニアリング全体に対する適性を理解することが必要になる。またデータがソースシステムでどのように生成されているか、アナリストとデータサイエンティストがどのように処理・管理し、価値を創造するかを知っておくことも重要である。最後にデータエンジニアは多くの複雑な変更可能な部品を操作して、コスト、アジリティ、スケーラビリティ、シンプルさ、再利用、相互運用性という軸で常に最適化を行わなければならない。
ビジネス上の責務
- 非技術分野および技術分野の人々とコミュニケーションする方法を知っていること
- ビジネスとプロダクトの要請をよく知る方法を理解していること
- アジャイル、DevOps、DataOpsの文化的基盤を理解すること
- コストを管理する
- 継続的に学習する
→ p16, 17
技術的責任
- SQL
- Python
- JVM言語(JavaやScala)
- bash
生成:ソースシステム
ソースシステムはデータの起源である。例えば、IoTデバイス、アプリケーションメッセージキュー、トランザクショナルデータベースなどがある。ソースシステムの動作や生成する方法、生成の頻度と速度、バラエティなどは実務的に理解しておく必要がある。
ソースシステムの評価項目
保存
ストレージシステムの評価:エンジニアリング上の考慮すべき重要な点
- アーキテクトが要求した書き出し・読み込み速度を満たしているか
- 下流プロセスに対してボトルネックにならないか
- ストレージ技術の仕組みを理解できているか。最適に活用しており、不自然な使い方をしていないか。
- 将来想定される規模に対応できるか。ストレージシステムの全ての制限を考慮する必要がある。例えば利用可能なストレージの総量、読み込みレート、書き出し量など。
- 下流のユーザーや下流プロセスが要求するSLAを満たすことができるか
- スキーマの進化、データの流れ、データリネージなどに関するメタデータを取得できるか。メタデータはデータの有用性に大きな影響を与える。メタデータはミライヘノ投資であり、将来のプロジェクトやアーキテクチャの変更を合理的に行うための、発見可能性と組織内の知識を劇的に強化する。
- 純粋なストレージ(オブジェクトストレージ)なのか、それとも複雑なクエリをサポートするストレージ(クラウドデータウェアハウス)なのか。
- ストレージシステムはスキーマを用いないか(オブジェクトストレージ)。柔軟なスキーマを用いるか(Cassandra)。固定的なスキーマを用いるか(クラウドデータウェアハウス)。
- データガバナンスのために、マスターデータ、ゴールデンレコードのデータ品質、データ利ねー字などをどのように管理するか。
- 規制コンプライアンスとデータ主権に対応できるか。例えば、特定の地域にデータを保存し、他の場所には保存しないことを保証できるか。