はじめに
「データ基盤を作りたいが、DWH・データレイク・レイクハウス・データメッシュのどれを選べばよいのか分からない」というのは、設計に関わるエンジニアであれば一度は突き当たる問いだと思います。
本書『クラウドデータレイク ―無限の可能性があるデータを無駄なく活かすアーキテクチャ設計ガイド』は、まさにこの問いに正面から答えようとする一冊です。特定のクラウドベンダーやプロダクトに寄らず、「なぜそのアーキテクチャが必要になったのか」という設計判断の背景を丁寧に解きほぐしてくれます。
読み終えて強く感じたのは、本書が「データレイクの作り方」の本ではなく、「データレイクに関する意思決定の仕方」の本だということです。この記事では、章ごとの要点と、設計・アーキテクチャに関心のあるエンジニア目線での読みどころを整理します。
書籍情報
| 項目 | 内容 |
|---|---|
| 書名 | クラウドデータレイク ―無限の可能性があるデータを無駄なく活かすアーキテクチャ設計ガイド |
| 原書名 | The Cloud Data Lake |
| 著者 | Rukmani Gopalan |
| 監訳 | 丸本 健二郎 |
| 訳 | 長尾 高弘 |
| 出版社 | オライリー・ジャパン |
| 発行 | 2024年5月15日 初版第1刷 |
| ISBN | 978-4-8144-0067-6 |
著者はMicrosoftなどでデータインフラ・プラットフォームのプロダクトマネジメントを担ってきた人物です。数百社の導入支援で得た知見がベースになっているため、記述が抽象論に流れず、実際の意思決定の場面に寄り添っているのが特徴です。
本書の構成
全8章+付録という構成で、大きく3つのブロックに分けて読むことができます。
【基礎ブロック】
1章 現実のものとなったビッグデータ戦略
2章 クラウド上のビッグデータアーキテクチャ
【設計・実装ブロック】
3章 クラウドデータレイクソリューションの設計で考慮すべきこと
4章 スケーラブルなデータレイク
5章 クラウドデータレイクアーキテクチャのパフォーマンスの最適化
6章 データ形式詳説
【意思決定ブロック】
7章 アーキテクチャに関する意思決定のフレームワーク
8章 データに基づいて意思決定や戦略を形成するアプローチのための6つの手段
付録A 意思決定フレームワークのテンプレート
全編を通じて「クロダースコーポレーション」という架空の傘・雨具メーカーが登場し、同じ企業の課題が章ごとに深掘りされていきます。この一貫した事例が、抽象的な概念を具体的なイメージに落とし込む助けになっています。
1章:なぜ「マインドセットの切り替え」が必要なのか
1章はビッグデータとクラウドの基礎からスタートします。ビッグデータの特徴として、かつての3つのV(Volume/Velocity/Variety)に加えて、Value・Veracity・Variabilityを含む6つのVが整理されています。
従来型データウェアハウスの限界
本書は従来のオンプレミスDWHのアプローチを「問題ファースト」と表現します。解くべきビジネス課題を先に決め、それに合わせてデータ構造を設計し、OLTP→OLAPと流していく形です。この形の限界として挙げられているのは次の3点です。
- 全ステップでデータが構造化されている前提が、もはや成り立たない
- 目的特化のデータストアが乱立し、同じデータのコピーがサイロ化する
- ピーク需要に合わせたハードウェア調達が必要で、TCOが上がる
対してクラウドデータレイクは**「データファースト」**のアプローチを取ります。ソース・サイズ・形式に制限を設けず、生のまま取り込み、処理時にスキーマを解釈する。この転換によって、コンピューティングとストレージを独立にスケールできるようになる、というのが本書の出発点です。
一番刺さった指摘
個人的にもっとも印象に残ったのは、リフト&シフトの落とし穴についての記述でした。
オンプレミスのHadoopクラスタはコンピューティングとストレージが密結合しています。一方クラウドではオブジェクトストレージ層とコンピューティング層がネットワーク越しに分離されます。この構造の違いを理解せずにそのまま移植すると、コストもパフォーマンスも見劣りする結果になり、当初の目的が失われかねない、と警告されています。
著者はクラウド移行の目標を2つに分けて考えることを勧めています。
- オンプレミスシステムの廃止
- クラウドで成功をつかむための準備
多くの企業は1しか見ておらず、技術的負債を抱え込んでから作り直すことになる、という指摘は耳が痛い方も多いのではないでしょうか。
2章:3つのアーキテクチャパターン ― 本書の核心
個人的に本書でもっとも価値が高いと感じたのが2章です。代表的な3つのアーキテクチャが、それぞれの成り立ち・ユースケース・利点・課題という同じフォーマットで比較されています。
モダンデータウェアハウスアーキテクチャ
データレイクとDWHが役割分担して共存する形です。
- データレイク:低コストな長期リポジトリ、データサイエンス/機械学習の探索的分析
- DWH:高価値な構造化データを保持し、BIダッシュボードを支える
処理の流れとしては、レイク側がELT(Extract→Load→Transform)、DWH側がETL(Extract→Transform→Load)という違いも整理されています。
課題として挙げられるのは、レイクとDWHという2セットのインフラを維持し続ける必要があること、そしてBIユーザーが新しいデータセットを求めるたびにデータエンジニアがクリティカルパスになってしまう点です。
データレイクハウスアーキテクチャ
クラウドDWHを不要にし、データレイク上で直接BI/SQLシナリオを実行する形です。魅力として挙げられているのは以下の3点です。
- データレイクはDWHより大幅に低コストであるため、コスト効率が高い
- レイクからDWHへのデータ移動・コピーが不要になる
- 体験とプラットフォームの分断が消え、データサイエンティストとBIチームがデータセットを共有しやすい
なぜ以前は実現できなかったのか、という問いへの答えが本書の白眉です。DWHの強み(スキーマ強制、ACID準拠、SQL最適化)とデータレイクの強み(非構造化データ、低コスト、豊富なデータ管理機能)は、そのままお互いの弱みでした。この壁を崩したのがオープンデータ形式であり、以下の3層構成でテーブルという論理構造をオブジェクトストレージ上に与えたことが転換点だと説明されています。
- オープンなファイル形式
- データを定義するメタデータ層
- 上記2つを理解するコンピューティングエンジン
データメッシュアーキテクチャ
中央集権的なデータプラットフォームチームがボトルネック化する問題への回答として位置づけられています。本書はこれを技術というよりカルチャーシフトとして説明します。
- 組織:中央部門集中 → 各ドメインに専門家を配置する分権化
- アーキテクチャ:モノリシックなレイク/DWH → 分散したメッシュ
- 技術:データとビジネスコードを1つのユニットとして扱う
- 運用:中央集権的ガバナンス → 連邦型ガバナンス
- 全体:収集すべき「資産」 → ユーザーに奉仕する「プロダクト」
課題として、各プロダクトチームに優秀な開発者を配置し続けられるかという現実的な問題と、レイク本来の複雑さに分散化の複雑さが上乗せされる点が挙げられています。
比較表
本書には4つの選択肢を5軸で比較した表が掲載されています。要約すると以下のようなイメージです。
| 観点 | クラウドDWH | モダンDWH | レイクハウス | データメッシュ |
|---|---|---|---|---|
| 総コスト | 高 | 中 | 低 | 中 |
| シナリオの柔軟性 | 低 | 中 | 高 | 高 |
| 開発の難易度 | 低〜高 | 中 | 中〜高 | 高 |
| エコシステム成熟度 | 低(可動部品が少ない) | 中〜高 | 中〜高 | 低 |
| 必要な組織成熟度 | 低 | 中 | 中〜高 | 高 |
「コストが低い=良い」ではなく、低コストな選択肢ほど組織側に高い成熟度を要求するという関係が明示されているのが誠実だと感じました。
アーキテクチャ選定の基本原則
選定にあたって本書が挙げる原則はシンプルです。
- 顧客を知る:BI/データアナリストなのか、データサイエンティストなのか
- ビジネスドライバーを知る:コスト削減か、新しいシナリオの実現か、それとも時間的制約か
- 将来のシナリオを織り込む:最初のシナリオが成功したとき、利用者もユースケースも必ず増える
3点目に関して、「データレイクにアクセスするのはデータプラットフォームチームだけだ」と思い込んでアクセス制御を実装しなかった結果、シナリオ拡大後にデータ消失事故を招いた事例が紹介されています。設計段階での判断がどう跳ね返るかを示す、生々しい例です。
3章:ゾーン設計・ガバナンス・コスト
3章は「データレイクのデータ」に焦点を当てます。
データレイクゾーン
データのライフサイクルに沿って、レイク内を価値密度でゾーン分割する考え方が示されます。
| ゾーン | 内容 | 価値密度 | 主な整理軸 |
|---|---|---|---|
| 未加工(ブロンズ) | ソースから取り込んだままの生データ | 最低 | ソース別/時刻別 |
| クレンジング(シルバー) | スキーマ定義・クレンジング・最適化を経たデータ | 中以下 | ドメイン/ユニット別 |
| キュレーション済み(ゴールド) | 集計・結合を経た最高価値データ | 最高 | ビジネスユニット別 |
| ワークスペース | 利用者が持ち込む自由なデータ | 規定なし | ユーザー単位 |
このゾーン分割は単なる整理整頓ではなく、アクセス制御とデータ保持期間ポリシーの適用単位になる、という説明が実務的です。ワークスペースゾーンが無秩序に膨張するのを保持期間ポリシーで防ぐ、といった運用まで踏み込んでいます。
データガバナンス
ガバナンスを担う4つのアクターが整理されています。
- データオフィサー:信頼性の定義と要件、保持ポリシー、コンプライアンス規制の設定
- データエンジニア:アーキテクチャの実現、リネージの把握、監査への証跡提供
- データプロデューサー:データ資産の供給、品質基準の遵守、アクセス制御
- データコンシューマー:ダッシュボード参照、クエリ、臨時データセット作成
また、データオブザーバビリティの観点として次の5つが紹介されます。
- 鮮度(freshness) ― データが最後に更新されたのはいつか
- 分布(distribution) ― 値の許容範囲。売上が突然通常の500%になったら調査対象
- 量(volume) ― 行数の許容範囲。通常1万行が10行や500万行なら異常
- スキーマ(schema) ― 上流の変更が下流を壊していないか
- リネージ(lineage) ― 生成から利用までの系譜
「データの品質はコードの品質と同等の重要性を持つ」という表現は、SREやオブザーバビリティの文脈に慣れたエンジニアには直感的に響くはずです。
コスト管理
コスト構成要素は、ストレージ/コンピューティング/ソフトウェア/ネットワークの4つに整理されます。特に見落としがちなものとして繰り返し強調されるのがトランザクションコストです。
同じ容量を転送する場合でも、数百MBの大きなファイルを少数送るのと、1KBの小さなファイルを大量に送るのとではコストが大きく変わる、という指摘は4章・5章にも通底するテーマです。
4章・5章:スケーラビリティとパフォーマンス
この2章はApache Sparkの内部構造を軸に、スケーラビリティとパフォーマンスの原理を掘り下げます。
Sparkジョブのボトルネック
- クラスタのフォームファクタとメモリ:コア数を増やせばエグゼキューターが増える。メモリを増やせばRDDをメモリに保持できる
- ファイル/オブジェクトの数とサイズ:小さなファイルが大量にあると、ドライバーの数え上げとメタデータ処理のオーバーヘッドが読み書き量に対して割高になる
- データの整理方法:列指向形式と効果的なパーティショニングが、必要リソースを直接的に減らす
- ネットワーク帯域とリージョン境界
書き込み時は小さなファイルに分割したほうが並列化で速くなるが、それが後続の読み出しコストを押し上げる、という避けられないトレードオフにも触れられています。Sparkのコンパクションユーティリティはこの緩和策として位置づけられます。
SLA / SLO / SLI
パフォーマンス要件の定義に、SREでおなじみの3階層がそのまま適用されます。
| 用語 | 定義 | 例 |
|---|---|---|
| SLA | 顧客に約束する保証。未達なら補償が発生 | 営業ダッシュボードを毎朝9時に最新化する |
| SLO | SLAを満たすためのブロック単位の目標 | Sparkジョブは8時までに完了する |
| SLI | 実際の動作を示す計測値 | エグゼキューター/ドライバーのパーセンタイル、リソース利用率 |
SLAから逆算してSLO・SLIを設計する流れが、架空企業の営業ダッシュボードを例に具体的に示されます。データ基盤の設計をアプリケーションのSLO設計と同じ言語で語れるようになるのは、実務上かなり大きな効用だと感じました。
Apache Parquet詳説
5章のハイライトはParquetの解説です。ブロック/行グループ/列チャンク/データページ/メタデータという構成要素が説明され、実際のクエリでどう効くかが具体例で示されます。
ニューヨーク市のタクシー運行データ(17フィールド)から、特定日の料金とチップの合計を求めるケースでは、
- フッターを読み、行グループと列チャンクの位置を把握する
- 対象日以外の行グループは読まない
- 一致した行グループから対象2列だけを読み出す
という流れになり、CSVで全レコードをロードしてからフィルタする場合と比べて、ストレージ読み出しとコンピューティングの両方が最小化されます。
「なぜ列指向なのか」を圧縮率とクエリ最適化の両面から説明したうえで、後続の6章のオープンデータ形式へと接続する構成が見事です。
6章:Delta Lake / Apache Iceberg / Apache Hudi
本書でもっとも技術的な章です。3つのオープンデータ形式が、それぞれ誰が何のために作ったのかという出自から解説されます。
前提:なぜオープンデータ形式が必要なのか
クラウドのオブジェクトストレージは汎用的で低コストである反面、表形式データを扱ううえで以下の制約を抱えます。
- 基本的に追記専用であり、既存データの更新が難しい
- スキーマの強制・チェックができない
- クエリパフォーマンスを何も保証しない
これらを補うために生まれたのがオープンデータ形式である、という位置づけです。
3形式の比較
| Delta Lake | Apache Iceberg | Apache Hudi | |
|---|---|---|---|
| 出自 | Databricks | Netflix | Uber |
| 主眼 | レイク上での高性能SQLクエリ | データセットの変更管理とスキーマ発展 | アップサートと差分処理、リアルタイム性 |
| 構成要素 | データオブジェクト/ログ/ログチェックポイント | カタログ/メタデータ/マニフェストリスト/マニフェスト | データファイル/メタデータ/インデックス |
| 特徴的機能 | タイムトラベル、スキーマ強制と進化 | スナップショット分離、ロールバック、パーティション最適化 | コピーオンライト/マージオンリードの2テーブル |
| 物理形式 | Parquet | Parquet / ORC など | Parquet(+Avro等の行指向) |
Delta Lakeでは、Parquetファイルの更新とDeltaログの更新の両方が完了して初めて書き込み成功となる仕組みが解説されます。この設計により同時書き込みが自動的に直列化され、過去バージョンへのタイムトラベルも可能になります。
Icebergはメタデータ層でテーブル構造を実現するため、Parquet以外のファイル形式も扱えます。アプリケーション側はマニフェストを参照し続ければよいので、アプリを壊さずにデータレイアウトを最適化できるという柔軟性が大きな利点として挙げられています。
Hudiは、書き込みパターンの違いに応じて2種類のテーブルを使い分けます。
- コピーオンライト:すべての書き込みが即座にテーブル更新となり、ほぼリアルタイムで読み出しに反映
- マージオンリード:書き込みは行指向のデルタファイルにバッファし、後からコンパクションで列指向テーブルへマージ
読み出しもスナップショットクエリ/デルタクエリ/読み出し最適化クエリの3種類が用意され、鮮度と速度のトレードオフを選べる設計になっています。
「同じ問題を解いているのに、解き方が違う」ことの理由が明確に説明されているため、単なるカタログ的な比較記事とは理解の深度が違います。
7章:意思決定フレームワーク
7章は、6問のアンケートから自社の現在地を判定するところから始まります。設問は、データ分析への投資状況・データ部門のスキルレベル・組織内での重要度・データ容量・顧客部門の姿・顧客部門のスキルセットの6つです。
回答傾向から、以下の3グループに分類されます。
- 白紙状態からのスタート ― 技術的負債がない代わりに、社内でのデータ活用の意義説明から始める必要がある
- オンプレミスからの移行 ― 既存ソリューションの継続性と顧客部門の混乱の最小化が最重要
- 既存クラウドデータレイクの改良 ― 現行課題の解決に加え、新しいイノベーションの取り込みが焦点
そのうえで、意思決定を「現状評価/目標設定 → 設計/定義 → 実装 → 運用化」の4フェーズに分けて進めます。付録Aにはこの4フェーズをそのまま使えるテンプレートが収録されており、社内議論のたたき台としてそのまま活用できそうです。
8章:6つの教訓
最終章は技術論から離れ、実践的な心構えが6つの講義形式でまとめられます。
- クラウドデータの導入は「必要か」ではなく「いつ・どのように」の問題である
- 偉大なる力には偉大なる責任がともなう ― データ品質・公平性・倫理性への配慮
- テクノロジーを主導するのは顧客であり、逆ではない
- 変化は避けられないので準備を怠らない
- 顧客の感覚を理解し、手掛ける仕事には容赦なく優先順位をつける
- ローマは1日にしてならず
第2講では、特定年齢層に最適化したキャンペーンが他の層を軽視し、結果として長期的な成長機会を失うという架空の例に加え、医療アルゴリズムのバイアスが実際に報じられた事例にも触れられています。技術書としては珍しく、公平性や倫理性に紙面を割いている点は特筆すべきだと思います。
第3講では、リアルタイムストリーミングという魅力的な技術に飛びつく前に、顧客が本当に必要としているのは日次バッチでの長期トレンド分析だったと気づく場面が描かれます。「家具を買いたい人は、電動ノコギリの名人を紹介してほしいわけではない」という比喩は分かりやすく、耳が痛い話でもあります。
設計・アーキテクチャ視点での学び
同じく設計に関心のあるエンジニアとして、本書から持ち帰った点を3つ挙げます。
1. トレードオフの提示が徹底している
本書はどのアーキテクチャも「推し」ません。表2-1の比較表に象徴されるように、コスト・柔軟性・難易度・成熟度が常にセットで語られます。低コストな選択肢ほど組織側の成熟度を要求するという構造は、データ基盤に限らずあらゆるアーキテクチャ選定に通じる原則だと感じました。
2. 「小さなファイル問題」が全編を貫く
3章のトランザクションコスト、4章のスケーラビリティ、5章のパフォーマンスチューニング、6章のコンパクション。異なる章で繰り返し同じアンチパターンが登場します。分散システムを設計するうえで、メタデータ処理のオーバーヘッドと実データ処理の比率という視点は汎用的に使えます。
3. 技術選定は顧客要件から逆算する
第3講のメッセージがそのまま設計原則になっています。SLAから逆算してSLO・SLIを定義する5章の流れも同型です。技術は目的の手段であり、一過性で陳腐化する。長持ちさせるべきは、その上で実行される分析のほうだ、という主張には説得力があります。
こんな人におすすめ
強くおすすめできる方
- データ基盤のアーキテクチャ選定を任されている方
- モダンDWH/レイクハウス/データメッシュの違いを整理したい方
- Delta Lake・Iceberg・Hudiの使い分けの判断軸がほしい方
- オンプレミスからクラウドへの移行を検討している方
- 設計判断の「なぜ」を言語化して社内で説明したい方
期待とずれる可能性がある方
- 特定クラウドの実装手順やコードサンプルを求めている方(本書はベンダー中立で、手を動かすチュートリアルはほとんどありません)
- Sparkのチューニングパラメータを網羅的に知りたい方(原理の説明が中心です)
まとめ
本書の価値は、個別技術の解説ではなく意思決定の枠組みを提供している点にあります。
ビッグデータ領域の技術は入れ替わりが激しく、数年で陳腐化するものも珍しくありません。だからこそ、著者は特定技術に踏み込みすぎず、「なぜその技術が生まれたか」「どういう条件下で有効か」という基本原理に軸足を置いています。この構成のおかげで、本書で得た判断軸は新しい技術が登場しても応用が利きます。
架空企業を通した一貫した事例、章をまたいで繰り返される核心的な論点、そして技術判断だけでなく組織・文化・倫理にまで踏み込む視野の広さ。データ基盤に関わるエンジニアであれば、手元に置いて設計判断のたびに参照する価値のある一冊だと思います。
アーキテクチャの選択に迷ったとき、本書が繰り返し問いかけてくるのは常に同じことです。「あなたの顧客は誰で、何に困っているのか」。この問いに答えられないうちは、どんなに優れた技術も選ぶ理由にはならない、という当たり前で、しかし忘れられがちな原則を思い出させてくれます。