PDE 合格対策

セクション5:データワークロードの保守と自動化

運用フェーズの中心テーマ。ビジネス要件を満たしつつコストを最小化し、ワークフローを自動化・再現可能にし、監視で問題を切り分け、障害に備える——実運用そのものを問う出題範囲です。

出題 ~18% SECTION 5 📘 基礎 🔧 実践 🎯 発展
🔑 TL;DR(このセクションの核)

🎯 学習目標チェックリスト

このセクションの達成度0 / 0







※ チェック状態はこのブラウザに保存されます。

📖 学習コンテンツ

📘 基礎 各サブトピックの「概念」と「サービスの役割」を理解することがゴール。運用判断やトレードオフは「応用」タブで扱います。

5.1 リソースの最適化(コスト最小化)

運用フェーズの大きなテーマは 「ビジネス要件を満たしつつコストを最小化する」 こと。GCPのデータ処理コストは大きく コンピュート(処理)ストレージ(保存) に分かれ、それぞれ削減の打ち手が違います。

コスト最適化の2大領域 コンピュート ──► 使った分だけ / 必要なときだけ起動 / 中断OKなら安いVM ストレージ ───► アクセス頻度でクラス分け / 不要データの自動削除(ライフサイクル)

① Dataproc:永続クラスタ vs ジョブ単位(ephemeral)クラスタ

Dataproc はマネージドな Spark / Hadoop クラスタ。コスト最適化の最重要トピックです。

方式説明コスト使いどころ
永続クラスタ(long-running)常時起動しっぱなし高い(アイドル時も課金)対話的に使い続ける/常時ジョブがある
ジョブ単位クラスタ(ephemeral)ジョブのたびに起動→完了で破棄低い(必要なときだけ)バッチジョブ中心。試験の推奨形
ephemeral クラスタの流れ GCSにデータ ──► クラスタ起動 ──► ジョブ実行 ──► 結果をGCSへ ──► クラスタ破棄 (計算リソースは使った時間だけ課金)

② プリエンプティブル VM / Spot VM

通常VMより大幅に安い(最大60〜91%引き)が、Googleの都合でいつでも停止され得るVM。

⚠️ 注意 状態を持つ処理・低レイテンシ要件・ストリーミングの主役には不向き。

③ BigQuery:オンデマンド vs 定額(容量ベース)

BigQueryのクエリ課金は2つのモデル。スロット(Slot) = クエリ実行の計算単位。

モデル課金向くケース
オンデマンドスキャンしたデータ量(TBあたり)クエリが散発的・量が読めない・小〜中規模
容量ベース(Editions / 予約)確保したスロット時間クエリ量が多く予測可能・コストを固定したい

④ ストレージのコスト最適化

打ち手内容
GCSストレージクラスStandard / Nearline / Coldline / Archive をアクセス頻度で選ぶ
オブジェクトライフサイクル管理N日後に低頻度クラスへ移動/削除を自動化
BigQueryパーティション/クラスタリングスキャン量を減らしオンデマンドのコストを削減
BigQuery長期ストレージ90日変更のないテーブルは自動で単価が約半額に

5.2 自動化と再現性の設計

データ処理は 「毎日同じ手順で・依存関係を守って・失敗したらやり直せる」 ことが重要。手作業をなくし、再現可能にするのが自動化の目的です。

① Cloud Composer(マネージド Airflow)と DAG

Cloud Composer は Apache Airflow のマネージドサービス。複雑な依存関係を持つワークフローを DAG(有向非巡回グラフ / Directed Acyclic Graph) で定義します。

DAG(タスクの依存関係を矢印で表現。循環しない) 抽出(extract) ──► 変換(transform) ──► ロード(load) ──► 通知(notify) │ └──► 品質チェック(validate)

② 冪等性(idempotency)

自動化で最重要の設計概念。冪等 = 同じ処理を何回実行しても結果が同じになる性質。

③ オーケストレーションの選択肢

サービス役割使いどころ
Cloud ComposerDAGで複雑な依存関係を管理(Airflow)多数のタスク・分岐・依存がある本格的なワークフロー
WorkflowsサーバーレスなAPI/サービスの順次実行(YAML/JSON)軽量なサービス連携・HTTP/API呼び出しの編成
Cloud Schedulercronベースのジョブトリガー「定期的に何かをキックする」だけのシンプルな起動
ざっくり使い分け 複雑な依存・多数タスク ──► Cloud Composer 軽量なサービス連携 ──────► Workflows 定期トリガーだけ ────────► Cloud Scheduler

5.3 ビジネス要件に基づくワークロードの編成

「重要な処理に必要なリソースを確保しつつ、全体のコストを抑える」ためのキャパシティ管理です。BigQueryを中心に問われます。

① BigQuery Editions(容量ベースの3エディション)

容量ベース課金で使う3段階のエディション。上位ほど機能とSLAが手厚い。

エディション位置づけ主な特徴
Standard入門・基本分析低価格。基本的な分析機能
Enterprise一般的な企業利用より多くの機能・コミットメント対応
Enterprise Plus最上位・高度な要件最高レベルの機能・コンプライアンス・DR向け機能

② スロット予約(Reservations)とコミットメント

用語説明
スロット(Slot)クエリ実行の計算単位
予約(Reservation)確保したスロットを、プロジェクト/フォルダ等に割り当てる枠
割り当て(Assignment)どのプロジェクト/組織が、どの予約を使うかの紐付け
コミットメント(Commitment)一定容量を期間(年/3年)契約し単価を下げる
Autoscaling(自動スケール)需要に応じてスロットを自動増減(baseline+max)
キャパシティの階層 コミットメント(容量を購入) └── 予約(枠を切り出す:例 dataeng用 2000スロット) └── 割り当て(その枠を使うプロジェクトを指定)

③ インタラクティブ(対話的)vs バッチ クエリ

BigQueryのクエリジョブには2つの優先度がある。

種類説明特徴
インタラクティブ(interactive)すぐ実行(デフォルト)レイテンシ重視。ダッシュボード・対話分析向け
バッチ(batch)スロットに空きが出たら実行急がない大量処理向け。リソース競合を避けられる

5.4 プロセスの監視とトラブルシューティング

「動いているか・遅くないか・コストは想定内か」を見える化(可観測性 / Observability)し、問題を切り分けます。

① 可観測性の3本柱とサービス

サービス役割見るもの
Cloud Monitoringメトリクスの監視・アラート・ダッシュボードCPU・スロット使用率・スループット・エラー率
Cloud Loggingログの収集・検索・分析実行ログ・エラーメッセージ・監査ログ
Cloud Trace / Error Reportingレイテンシ追跡・エラー集約遅延の内訳・例外の集約

② BigQuery の監視手段

手段説明
管理リソースチャート(Administrative Resource Charts)スロット使用量・予約の消費・ジョブ実行状況を可視化
INFORMATION_SCHEMAジョブ・スロット・ストレージ・予約のメタデータをSQLで分析
BigQuery 管理パネル(Admin/Monitoring)プロジェクト/組織横断の利用状況を確認

③ クォータと上限

用語説明
クォータ(Quota)APIリクエスト数・同時実行数などの利用上限(プロジェクト単位)
上限引き上げコンソールから増量をリクエスト可能
計画使用量の監視予約/クォータに対し、どれだけ使っているかを継続監視
⚠️ 注意 ジョブ失敗の原因が クォータ超過 であることは多い(同時クエリ数・APIレート等)。

④ 課金(コスト)の監視

手段説明
予算とアラート(Budgets & Alerts)予算超過を通知
コスト内訳レポート / BigQueryへの請求エクスポートコストを詳細に分析(プロジェクト/サービス/ラベル別)
ラベル(Labels)リソースにタグ付けし、コストを按分・可視化

5.5 障害の認識と影響の軽減

「障害が起きる前提」で、データを失わず・早く復旧する設計です。設計セクション(1.2)のDRを、運用の具体策に落とし込みます。

① 冗長性のレベル

ゾーン障害に耐える ──► マルチゾーン(同一リージョン内の複数ゾーン) リージョン障害に耐える ──► マルチリージョン / クロスリージョンレプリカ
レベル守れる障害
シングルゾーン(なし)開発・非重要
マルチゾーン(リージョナル)ゾーン障害Cloud SQL HA、Dataprocの高可用構成
マルチリージョンリージョン障害BigQueryマルチリージョン、Spannerマルチリージョン

② 耐障害性とリスタート(ジョブの再実行)

③ データベースのHAとレプリケーション

サービス高可用 / 冗長の仕組み
Cloud SQLHA構成(同一リージョンの別ゾーンにスタンバイ→自動フェイルオーバー)、リードレプリカ(読み取り分散・別リージョン可)、自動バックアップ + PITR
Memorystore (Redis)Redisクラスタ / Standard Tier(レプリカで自動フェイルオーバー)。シャーディングで容量・可用性を確保
Spannerマルチリージョン構成で地理冗長・自動フェイルオーバー
AlloyDBリージョン内冗長 + クロスリージョンレプリケーション
⚠️ 注意 HA = 可用性(止まらない)。リードレプリカ = 読み取りスケール(兼DR)。目的が違う。

④ データ破損・欠損への備え(サービス別の復旧機能)

サービス復旧機能何ができるか
BigQueryタイムトラベル(7日間) + スナップショット誤更新/削除前の状態を参照・復元
Pub/Subシーク(Seek)過去のタイムスタンプ/スナップショットへ巻き戻して再配信
Dataflowスナップショットストリーミングパイプラインの状態を保存し復元・移行
Cloud SQL自動バックアップ + PITR(特定時点復元)任意の時点へ復元
GCSオブジェクトのバージョニング上書き/削除されたオブジェクトを復元
「壊れた/消えた」への定番カード BigQueryのデータ ──► タイムトラベル(7日) / スナップショット Pub/Subの取りこぼし ──► シークで再配信 Dataflowの状態 ──► スナップショットから復元 Cloud SQLのDB ──► バックアップ + PITR
📌 このセクションの基礎まとめ
  • コスト最適化は 「必要なときだけ起動(ephemeral Dataproc)」「中断OKなら安いVM(Spot)」「使い方に合う課金(オンデマンド/Editions)」
  • 自動化は Composer(DAG) + 冪等性 が核。軽量ならWorkflows、定期トリガーはScheduler
  • キャパシティは Editions + 予約 + コミットメント、クエリは インタラクティブ vs バッチ
  • 監視は Monitoring(メトリクス) + Logging(ログ) + INFORMATION_SCHEMA + 管理チャート、クォータ/課金も監視対象
  • 耐障害性は 冗長レベル(ゾーン/リージョン)サービス別の復旧機能(タイムトラベル/シーク/スナップショット/HA/レプリカ) を暗記

🔧 実践(中堅) 🎯 発展(シニア) 「どう運用判断するか」「トレードオフは何か」「試験のひっかけ」に焦点を当てます。

5.1 リソース最適化の判断

🔧 Dataproc:永続 vs ジョブ単位(ephemeral)の判断

判断の軸 ジョブが断続的(夜間バッチ等)+ アイドル時間が長い ──► ephemeral クラスタ(完了後破棄) クラスタを常に対話的に使う + ほぼ常時稼働 ─────────► 永続クラスタも検討
⚠️ 注意 「Dataprocのコストを下げたい」→ まず ephemeral + GCS。次に Spotワーカー

🔧 プリエンプティブル / Spot VM を使ってよいか

使ってよい使ってはいけない
再実行可能なバッチ(冪等)ステートフルな低レイテンシ処理
Dataprocのセカンダリワーカー単一障害で全体が止まる構成
大量並列で一部中断を許容ストリーミングの主役・本番DB
⚠️ 注意 プライマリワーカーやマスターをプリエンプティブルにしてはいけない(クラスタが不安定化)。セカンダリワーカーのみが定石。

🔧🎯 BigQuery:オンデマンド vs 容量ベース(Editions/予約)

観点オンデマンド容量ベース(Editions + 予約)
課金スキャン量(TB単位)確保したスロット時間
予算の読みやすさ読みにくい(クエリ次第)読みやすい(固定/上限)
向くケース散発的・小〜中量・読めない大量・継続・予測可能
コスト暴走リスク大きなスキャンで急増上限スロットで頭打ちにできる
⚠️ 注意
  • 「毎月のBigQueryコストが変動して読めない/高い」→ 容量ベース(Editions + コミットメント) で定額化+上限設定。
  • 逆に 「たまにしか使わない」のに定額を買うと無駄。散発的ならオンデマンドが安い。
🎯 発展 混在運用:基本はオンデマンド、特定の重いワークロードだけ予約、も可能。組織のニーズに合わせて割り当てる。

🎯 ビジネスクリティカル処理へのリソース確保

⚠️ 注意 「重要なETLが、アナリストのアドホッククエリでリソース不足になる」→ 予約を分けて割り当てる

5.2 自動化と再現性の設計判断

🔧 Composer DAG 設計のベストプラクティス

⚠️ 注意 DAG定義ファイル自体で重い処理をしない(パース毎に走る)。処理はオペレータ内で。

🔧 Composer / Workflows / Cloud Scheduler の使い分け

質問1: 多数タスクの複雑な依存・分岐・リトライ・バックフィルが要る? YES ──► Cloud Composer(Airflow / DAG) 質問2: 数個のAPI/サービスを順番に呼ぶ軽量な編成? YES ──► Workflows(サーバーレス・YAML/JSON) 質問3: 「定期的にトリガーする」だけ? YES ──► Cloud Scheduler(cron)
⚠️ 注意
  • 「軽量なAPI連携なのにComposer」はオーバースペック(Composer環境は常時課金)。Workflowsの方が安く軽い。
  • 逆に 複雑な依存・バックフィルが要るのにScheduler+スクリプトで頑張るのはアンチパターン → Composer。
🎯 発展 組み合わせも頻出:Scheduler が Workflows/Composer をキックするComposer が Dataflow/BigQuery/Dataprocジョブを起動する

🎯 再現性(reproducibility)の作り込み

5.3 ワークロード編成の判断

🔧 インタラクティブ vs バッチ クエリの判断

状況選択
ダッシュボード/対話分析、すぐ結果が要るインタラクティブ(デフォルト)
夜間の大量集計、急がないバッチ(スロット空き次第)
同時実行上限/スロット競合を避けたいバッチに回して平準化
⚠️ 注意 「インタラクティブの同時実行クォータに当たる大量ジョブ」→ バッチクエリにしてキュー実行。

🔧🎯 Editions の選択とコミットメント

Standard ────► まず使う・基本分析・小規模 Enterprise ──► 一般企業・機能とコミットメントが必要 Enterprise Plus ► 最高水準の機能・コンプライアンス・DR要件
⚠️ 注意 「需要に波があるが、ピークで枯渇させたくない / 谷で無駄も出したくない」→ baseline + autoscaling の組み合わせ。
🎯 発展 エディションは予約単位で選ぶ。要件(CMEK必須・DR・特定機能)が上位エディション限定なら、その予約だけ上位にする。

5.4 監視とトラブルシューティングの判断

🔧 何で何を見るか(切り分けの型)

メトリクス(傾向・閾値) ──► Cloud Monitoring(CPU/スロット/スループット/エラー率)+ アラート ログ(個別事象・原因) ───► Cloud Logging(エラーメッセージ/スタック/監査) BigQuery固有の分析 ──────► INFORMATION_SCHEMA / 管理リソースチャート コスト ──────────────────► 予算アラート / 請求のBigQueryエクスポート

🔧 BigQuery トラブルシュートの定番

症状調べ方 / 対処
クエリが遅いINFORMATION_SCHEMA.JOBS でスキャン量・スロット・ステージを確認。パーティション/クラスタリング・スロット不足を疑う
コストが高いスキャン量の多いクエリを特定、SELECT * を避ける、パーティションプルーニング、容量ベースへ移行
スロット待ちで詰まる予約のスロット不足。autoscaling/コミットメント増、バッチ化、予約分離
ジョブが失敗エラーメッセージ+クォータ(同時実行/APIレート)を確認

🔧 クォータ・課金・エラーの切り分け

⚠️ 注意 試験では 「ジョブが断続的に失敗。原因の調べ方は?」→ Cloud Logging のエラー + クォータ確認 が定番。

🎯 計画使用量の監視(capacity planning)

5.5 障害軽減(DR)の設計判断

🔧 冗長レベルの選び方(RPO/RTOで決める)

要件構成例
RPO/RTO ほぼゼロ(無停止)Spannerマルチリージョン、Cloud SQL HA + クロスリージョンリードレプリカ、BigQueryマルチリージョン
RPO数分許容リードレプリカ昇格、Datastreamで別リージョン複製
コスト優先・RPO数時間定期バックアップ/エクスポートをGCSマルチリージョンへ
⚠️ 注意 「ゾーン障害に耐えたい」→ マルチゾーン(Cloud SQL HA)「リージョン障害に耐えたい」→ マルチリージョン/クロスリージョンレプリカ。レベルを取り違えさせるひっかけに注意。

🔧 Cloud SQL:HA とリードレプリカの違い

HA構成リードレプリカ
目的可用性(自動フェイルオーバー)読み取りスケール / DR
配置同一リージョンの別ゾーン(スタンバイ)同一/別リージョン
自動切替ありなし(手動で昇格 = promote)
⚠️ 注意 「読み取り負荷を分散したい」→ リードレプリカ「プライマリ障害で自動的に切り替えたい」→ HA構成。両者は目的が違う。
🎯 発展 リージョン災害対策は クロスリージョンのリードレプリカを別リージョンに置き、災害時に昇格

🔧 Memorystore (Redis) の冗長

⚠️ 注意 「キャッシュの可用性を高めたい」→ Standard Tier / Redisクラスタ(Basicは不可)。

🎯 データ破損・欠損への備え(サービス別カード)

誤って大量削除/更新した(BigQuery) ──► タイムトラベル(7日) で復元、超過分はスナップショットで保護 ストリーミングを取りこぼした(Pub/Sub) ──► シークで過去タイムスタンプへ巻き戻し再配信 Dataflowのストリーミング状態を保持/移行 ──► スナップショットから復元 DBを特定時点へ戻したい(Cloud SQL) ──► 自動バックアップ + PITR GCSのオブジェクト上書き/削除 ──► バージョニングで復元
⚠️ 注意
  • BigQueryタイムトラベルは7日固定。それ以上の保護が要るなら テーブルスナップショットエクスポートを併用。
  • Pub/Subの「メッセージを再処理したい」は シーク(スナップショット/タイムスタンプへ)。リプレイ要件で頻出。

🎯 統合シナリオ演習(考え方の練習)

シナリオ あるEC企業の運用課題。①毎晩、Spark変換ジョブを実行しているがDataprocの常時稼働クラスタのコストが高い。②BigQueryの月額費用が変動して読めず、重要なETLがアナリストのアドホッククエリでスロット不足になることがある。③ETLは多数のタスクが依存し、失敗時に手動でやり直していて再現性がない。④本番DB(Cloud SQL)がゾーン障害で一度停止した。⑤先週、分析者が誤って本番テーブルを上書きし、復旧に苦労した。⑥ジョブが時々失敗するが原因がすぐ分からない。

設計の骨子(解答例)

  1. Dataprocコスト:常時稼働を廃止し、ジョブ単位(ephemeral)クラスタ + データはGCSに。セカンダリワーカーをSpot VMに。完了後に自動削除。
  2. BigQueryコストとETL確保容量ベース(Editions + コミットメント)で月額を固定・上限化。予約を prod-etladhoc に分離し、重要ETLのスロットを確保。アドホックは別予約 + 急がないものはバッチクエリ
  3. 再現性:手作業をやめ、Cloud Composer の DAGでオーケストレーション。冪等設計(パーティション上書き/MERGE) + リトライ/タイムアウトで、失敗時に安全に再実行・バックフィル
  4. DB可用性:Cloud SQLをHA構成(別ゾーンにスタンバイ→自動フェイルオーバー)に。リージョン災害対策としてクロスリージョンのリードレプリカも配置。
  5. データ破損復旧BigQueryタイムトラベル(7日)で即時復元、重要テーブルはスナップショットで7日超も保護。
  6. 可観測性Cloud Monitoringでスロット使用率・エラー率にアラート、Cloud Loggingで失敗ジョブのエラーを追跡、INFORMATION_SCHEMAで高コスト/低速クエリとクォータを分析。
💡 ポイント この「運用課題を、コスト最適化・自動化・キャパシティ・DR・監視の各カードに割り当てる」思考が本番の運用問題そのものです。
📌 このセクションの運用判断の型
  • コスト最適化は ephemeral Dataproc + GCS / Spotワーカー / 課金モデルの最適化(オンデマンド⇔Editions)
  • 自動化は Composer(DAG) + 冪等性。軽量はWorkflows、起動だけはScheduler。オーバースペックに注意
  • キャパシティは Editions + 予約分離 + コミットメント/autoscaling、急がない大量処理は バッチクエリ
  • 監視は Monitoring/Logging/INFORMATION_SCHEMA/管理チャート を症状で使い分け、クォータ/課金も切り分け対象
  • DRは 冗長レベル(ゾーン/リージョン)の取り違えに注意し、HA⇔リードレプリカの目的差サービス別復旧機能を押さえる

🎯 要点と暗記 試験直前の総ざらい用。暗記すべき表一問一答でセクション5を固めます。

🔑 暗記必須テーブル

Dataproc クラスタの選択

方式コスト使いどころ
永続(long-running)高(アイドルも課金)常時対話・常時ジョブ
ジョブ単位(ephemeral)低(必要時のみ)バッチ中心。推奨形
🔑 鉄則 ephemeralの鉄則:データはHDFSではなくGCS(コンピュートとストレージを分離)。

安いVMの使い分け

VM特徴使ってよい
プリエンプティブル/Spot大幅安だが中断され得る冪等なバッチ、Dataprocのセカンダリワーカー
通常VM安定マスター/プライマリワーカー、低レイテンシ処理

BigQuery 課金モデル

モデル課金向くケース
オンデマンドスキャン量(TB)散発的・読めない・小〜中量
容量ベース(Editions/予約)スロット時間大量・継続・予測可能・コスト固定

BigQuery Editions

エディション位置づけ
Standard入門・基本分析
Enterprise一般企業・コミットメント対応
Enterprise Plus最上位・高度な機能/コンプラ/DR

キャパシティ用語

用語意味
スロットクエリ実行の計算単位
予約(Reservation)確保スロットの枠
割り当て(Assignment)予約をプロジェクトに紐付け
コミットメント期間契約で単価を下げる
Autoscalingbaseline + max で自動増減

オーケストレーションの使い分け

サービス役割
Cloud Composer複雑な依存・多数タスク(DAG/Airflow)
Workflows軽量なAPI/サービス連携
Cloud Scheduler定期トリガー(cron)だけ

監視サービスの役割分担

課題サービス/手段
メトリクスの監視・アラートCloud Monitoring
ログ・エラー・監査Cloud Logging
BigQueryのジョブ/スロット分析INFORMATION_SCHEMA
スロット/予約の可視化管理リソースチャート
利用上限の管理クォータ
コスト超過の通知予算とアラート

冗長レベル

レベル守れる障害
マルチゾーン(リージョナル)ゾーン障害
マルチリージョンリージョン障害

データベースの冗長

HA構成リードレプリカ
目的可用性(自動フェイルオーバー)読み取りスケール/DR
配置同一リージョン別ゾーン同一/別リージョン
自動切替ありなし(手動昇格)

データ破損・欠損の復旧カード

サービス復旧機能
BigQueryタイムトラベル(7日) + スナップショット
Pub/Subシーク(巻き戻して再配信)
Dataflowスナップショット
Cloud SQLバックアップ + PITR
GCSオブジェクトのバージョニング
Memorystore (Redis)Standard Tier / Redisクラスタ(フェイルオーバー)

✅ 一問一答(確認テスト)

Q1. Dataprocのコストを最小化したい。バッチジョブは夜間のみ。どう構成する?

A. ジョブ単位(ephemeral)クラスタ + データはCloud Storage。ジョブのたびに起動し完了後に破棄。さらにセカンダリワーカーをSpot/プリエンプティブルに。

Q2. プリエンプティブル/Spot VMをDataprocで使うとき、どのノードに使うべきか?

A. セカンダリワーカーのみ。マスターやプライマリワーカーに使うとクラスタが不安定化する。

Q3. BigQueryの月額コストが変動して読めず高い。クエリ量は多く継続的。どうする?

A. 容量ベース(Editions + コミットメント)に移行し、スロット予約で定額化・上限設定。散発的ならオンデマンドの方が安い点に注意。

Q4. 重要なETLが、アナリストのアドホッククエリのせいでスロット不足になる。対策は?

A. 予約(reservation)を用途別に分離して割り当てる(例:prod-etlとadhocを分離)。急がないものはバッチクエリに回す。

Q5. 多数のタスクが依存し、失敗時に手動でやり直している。再現性を持たせるには?

A. Cloud ComposerのDAGでオーケストレーション。冪等設計(パーティション上書き/MERGE)+リトライで、安全に再実行・バックフィルできるようにする。

Q6. 数個のAPIを順に呼ぶだけの軽量な処理。Composerはオーバースペック。何を使う?

A. Workflows(サーバーレスなAPI/サービス連携)。単なる定期トリガーだけなら Cloud Scheduler。

Q7. ジョブの再実行で二重書き込みが起きないようにしたい。設計の概念は?

A. 冪等性(idempotency)。INSERT追記ではなく、パーティションのDELETE/上書きやMERGE、WRITE_TRUNCATEを使う。

Q8. BigQueryクエリが遅い/高い。原因を分析する手段は?

A. INFORMATION_SCHEMA.JOBS でスキャン量・スロット・実行時間を分析。パーティション/クラスタリング、SELECT *回避、スロット不足を疑う。管理リソースチャートも併用。

Q9. ジョブが断続的に失敗する。原因の調べ方は?

A. Cloud Loggingでエラーメッセージを確認 + クォータ超過(同時実行/APIレート)をチェック。クォータが原因なら上限引き上げかレート制御。

Q10. 本番Cloud SQLがゾーン障害で停止した。自動的に切り替わる構成にしたい。

A. HA構成(同一リージョンの別ゾーンにスタンバイ→自動フェイルオーバー)。読み取り負荷分散が目的ならリードレプリカ(目的が違う)。

Q11. リージョン全体の災害に備えたい。Cloud SQLでどうする?

A. クロスリージョンのリードレプリカを別リージョンに配置し、災害時に昇格(promote)。HA構成は同一リージョン内なのでリージョン障害は守れない。

Q12. 分析者が誤って本番BigQueryテーブルを上書きした。復旧方法は?

A. タイムトラベル(過去7日間)で上書き前の状態を参照・復元。7日を超える保護が要るならテーブルスナップショットやエクスポートを併用。

Q13. Pub/Subで取りこぼしたメッセージを再処理したい。使う機能は?

A. シーク(Seek)。過去のタイムスタンプやスナップショットへ巻き戻して再配信する。

Q14. Dataflowのストリーミングパイプラインの状態を保存し、復元/移行したい。

A. Dataflowスナップショット。ストリーミング状態を保存し、そこから復元・更新できる。

Q15. Memorystore (Redis) のキャッシュ可用性を高めたい。

A. Standard Tier(レプリカで自動フェイルオーバー)またはRedisクラスタ。Basic Tierはレプリカなしで冗長性がない。

🎯 ひっかけ注意ポイント

❌ 取り違え厳禁
  • 「Dataprocのコスト」= ephemeral + GCS が第一手。永続クラスタを最適化する選択肢に誘導されない
  • プリエンプティブル/Spotは セカンダリワーカーのみ。マスター/プライマリに使う選択肢は誤り
  • オンデマンド⇔容量ベースは使用量の予測可能性で決める。散発的なのに定額、継続大量なのにオンデマンドは×
  • Composer ⇔ Workflows ⇔ Scheduler のオーバースペック/アンダースペックを突く問題
  • HA ⇔ リードレプリカ は目的が違う(可用性 vs 読み取りスケール)。混同させる
  • マルチゾーン ⇔ マルチリージョン は守れる障害レベルが違う(ゾーン障害 vs リージョン障害)
  • BigQueryタイムトラベルは7日固定。それ以上はスナップショット/エクスポート
  • 「メッセージ再処理」= Pub/Subシーク、「ストリーミング状態」= Dataflowスナップショット(取り違え注意)
  • ジョブ失敗の原因に クォータ超過 を疑う視点(IAM/同時実行/APIレート)

📝 セルフチェック

💡 直前チェック
  • 暗記テーブル(Dataproc/VM/課金/Editions/キャパシティ/オーケストレーション/監視/冗長/復旧)を白紙から再現できる
  • 一問一答を全問即答できる
  • ephemeral + GCS、予約分離、冪等性、HA⇔リードレプリカ、復旧カードを口頭で説明できる
  • 問題集セクション5 で80%以上取れた

🧭 次に進む

← 前のセクション

S4 分析のためのデータ準備

BI Engine・マテビュー・BigQuery ML・埋め込み/RAG。

📝 問題集

セクション5 問題集

このセクションの理解度を問題で確認(Markdown版)。

学習完了 🎉

ホームへ戻る

全5セクション制覇。模擬試験と用語集で総仕上げ。