はじめに
Google CloudのPCA(Professional Cloud Architect)認定資格取得に向けて学習した内容を自分なりに整理します。Google Cloudのサービスに限らず、それを扱う上での関連知識についても触れています。
本記事はデータ分析編ということで、下記の要素を扱います。
- データ分析
- BigQuery
- Dataproc
- メッセージング
- Pub/Sub
- データ処理
- Dataflow
- Data Fusion
- Dataprep
この記事における「現在」や「最近」などの表現は、特に断らない限り2025年6月時点を指します
データ分析
BigQuery
- フルマネージドのデータウェアハウスサービス
- 大量のデータをリアルタイムで高速に分析
- ペタバイト規模のデータを扱える
- SQLを使ってMapReduceの技術を扱えることが特徴
- 自然言語インターフェースによるデータ探索に対応
- BigQuery ML: 機械学習モデルの作成と予測にも対応
- Connected Sheet: スプレッドシートとの連携も可能
Dataproc
- マネージドなHadoop/Sparkサービス
- ストレージ(Cloud Storage)とコンピュート(Dataproc)を分離し、それぞれでスケーリングが可能
- エフェメラルクラスタ(ジョブ単位の一時利用クラスタ)としての使用
- 高速に起動できるので、常時起動せず、使う時だけ起動する使い方が可能。これにより無駄なコストを省く
メッセージング
Pub/Sub
- メッセージキューイングサービス
- パブリッシャー(発信者)が送信したメッセージをキューイング(待ち行列に入れ)し、サブスクライバー(受信者)と非同期に連携する
- メッセージ
- Pull型: サブスクライバーが任意のタイミングでキューからメッセージを取得する方式
- Push型: 指定されたエンドポイントに対してPub/Sub側からメッセージを配信する方式
- メッセージ送信の確実性を担保するため、下記の機能がある
- 一定時間、Ack通信(受信確認)がなければメッセージを再送する
- At-least-once
- 最低一回の配信を保証する
- デフォルトでは重複を排除しないため、2回以上配信されることもある
- Dataflowの重複排除(Deduplication)と組み合わせてExactly-Onceを実現できる
- メッセージ複製
- Pub/Subにキューされたメッセージは複数のディスクに複製され、メッセージがAckされるまで永続化される
- バッチ処理
- 複数のメッセージをまとめて送受信することでスループットを向上させる仕組み
- ある程度の数のメッセージが貯まるか、一定時間が経過したらまとめて送信する
- ただし、条件を満たすまでメッセージの送信が行われないため、個々のメッセージで見ると遅延(レイテンシー)も発生する
- レイテンシーを最小にするためには、バッチ処理をオフにする必要がある
データ処理
Dataflow
- 大規模データに対する「バッチ処理」「ストリーミング処理」の両方を同一のプログラミングモデルで記述できる
- Apache Beamのプログラミングモデルに則って実装
- Java, Pythonが使用可能
- データを分散処理するフルマネージドサービス
- 自動スケーリングや自己修復機能を備え、インフラ管理の手間を最小限に抑えられる
- コードベースでの記述が前提であるため、エンジニア主導のデータパイプライン構築に適している
- 特に複雑なデータ変換や高頻度のストリーム処理が必要なユースケースで強みを発揮する
Data Fusion
- GUIベースでデータパイプライン(ETL)を設計・運用できるサービス
- CDAP(Cask Data Application Platform)をベースとする
- GUI上でのドラッグ&ドロップでパイプラインを構築できるため、エンジニアでなくともデータ統合や変換処理を迅速に実現できる
- 数百種類のコネクタやトランスフォーマを活用できるのが特徴
- オンプレミスやSaaS、各種クラウドサービス(postgreSQL, Salesforce, GCS, BigQuery など)を1つのパイプライン内で容易に統合できる
- バックエンドではDataflowを実行エンジンとして使用するため、スケーラブルに処理が行える
- バッチ処理だけでなく、ストリーミング処理にも対応(Spark Streamingを使用)
- 異種データソースの統合が求められるユースケースや、開発者と被技術者が連携するチームにおいて有効
Dataprep
- データの分析の前に行う「前処理」や「データクレンジング」などを行うフルマネージド型サービス
- データの不整合や欠損値を自動的に検出し、それらを補完したり除去したりする
- スプレッドシートのような感覚でデータ処理を実施できる
- 実行エンジンとしてはDataflowを使用するため、データ量が多くなってもスケーラブルに処理される
- ノーコードで、ビジュアライズされた変換機能を提供する。非エンジニアでも簡単にデータ変換を実行できる