コンテンツにスキップ

📚 GCP PCA 学習: 2026-04-28

セクション: 1.3 ネットワーク・ストレージ・コンピュートリソースの設計 前回からの繋がり: 技術要件(HA・FT・スケーラビリティ)を満たすために、具体的なリソースをどう選ぶかが 1.3 です。


① 一言サマリー

「GCP インフラストラクチャの 3 本柱は VPC・ストレージ・コンピュートで、ビジネス要件と技術要件から『どのトポロジー・何をどこに・何で計算するか』を決める』設計です」


② たとえ話

ビジネスビルディングの設計に例えると:

  • VPC:建物の電気・水道・ガス・通信網。サブネット(階)・ルーティング(配線図)・ファイアウォール(セキュリティゲート)で、各テナント(サービス)が安全に通信できる環境を整える
  • ストレージ:書庫・冷蔵倉庫・金庫など。データの性質(大量・構造化・秘密度)によって倉庫を使い分ける
  • コンピュート:執務スペース・作業室・会議室。タスク(恒常業務・イベント対応・関数計算)によって場所を選ぶ

③ 図解

設計判断フロー

graph LR
    A["ビジネス要件
機能・SLA・RTO・RPO"] --> B{"ネットワーク
トポロジーは?"} B -->|単一リージョン| C["Single VPC"] B -->|複数リージョン| D["共有 VPC
or VPC Peering"] A --> E{"ストレージ
何を使う?"} E -->|構造化・トランザクション| F["Cloud SQL
or Spanner"] E -->|非構造化・大規模| G["Cloud Storage"] E -->|NoSQL・リアルタイム| H["Firestore
or Bigtable"] A --> I{"コンピュート
何で動かす?"} I -->|既存 VMs| J["Compute Engine"] I -->|コンテナ・k8s| K["GKE"] I -->|サーバーレス| L["Cloud Run"] I -->|イベント駆動| M["Cloud Functions"]

ストレージ選定軸(詳細)

graph LR
    A["データ特性"] --> B{"構造化?"}
    B -->|Yes| C{"トランザクション
必要?"} C -->|Yes| D["Cloud SQL
単一リージョン"] C -->|No| E["Bigtable
大規模 NoSQL"] B -->|No| F{"サイズ
大?"} F -->|Yes| G["Cloud Storage
GCS"] F -->|No| H["Firestore
リアルタイム"]

④ 仕組みの深掘り

VPC トポロジーの選択基準

VPC とは: 仮想ネットワーク。Google が物理的に用意したグローバルネットワークから、テナント(顧客)が独占的に使える論理ネットワークを切り出したもの。

VPC には 3 つの構成パターンがあります:

  1. 単一 VPC(スタンドアローン)
  2. 用途:開発環境、小規模なマイクロサービス
  3. メリット:管理シンプル
  4. デメリット:チーム間での共有が複雑(IAM ルール増加)

  5. 共有 VPC(Shared VPC)

  6. 用途:大規模組織で複数チーム・複数プロジェクトが同じネットワークを使う
  7. メリット:集中管理(ネットワークチーム一元化)、ルーティング・ファイアウォール統一
  8. デメリット:ネットワークチームが全リソース作成を承認する必要、ボトルネック化のリスク

  9. VPC Peering

  10. 用途:異なる組織・複数リージョンの VPC を接続
  11. メリット:独立した管理、柔軟な接続
  12. デメリット:ルーティングテーブルを全 VPC で管理する必要(複雑度増)

PCA 試験の判断軸: - 組織内で 1 つの ネットワーク管理チーム → 共有 VPC - 複数組織 or リージョンをまたがる → VPC Peering


ストレージ選択の 3 軸

ストレージ選択は以下の 3 軸で決まります:

Cloud SQL Cloud Spanner Bigtable Firestore Cloud Storage
スキーマ 関連スキーマ(RDB) 関連スキーマ スキーマレス(Wide Column) ドキュメント 0 スキーマ(Object)
スケール 単一リージョン(PB まで) グローバル(EB まで) 大規模(TB~PB) 中規模(GB~TB) 無制限(EB)
トランザクション ○ ACID ○ ACID(グローバル) ◎ リアルタイム更新
レイテンシー ~ 10ms ~ 10ms(グローバル) ~ 1ms ~ 100ms ~ 1s
使用例 Web DB・在庫管理 グローバル決済 ユーザー行動・IoT モバイルアプリ ログ・静止画
コスト感 ★★★(中) ★★★★★(高) ★★(安) ★★(安) ★(非常に安)

PCA 試験の判断軸: - 「複数リージョンで ACID トランザクション必要」→ Spanner(他を排除) - 「リアルタイムでドキュメント更新が必要」→ Firestore - 「100M 行超の分析データ」→ Bigtable or BigQuery


コンピュート選択の 3 軸

Compute Engine GKE Cloud Run Cloud Functions
デプロイ単位 VM(OS ごと) Container(k8s マネージド) Container(サーバーレス) 関数 ZIP
冗長化 MIG(手動設定) Auto Scaling Pod 自動スケーリング 自動スケーリング
起動時間 ~ 1 分 ~ 10s(Pod) ~ 100ms(Warm) ~ 100ms(Warm)
スケール範囲 数十~数千 数千~数万 ~ 1000 並列 ~ 1000 並列
ステートフル対応
月額コスト感(1 台分) ¥5,000~ ¥10,000~ ¥1,000(従量) ¥100(従量)

PCA 試験の判断軸: - 「既存 VM アプリケーション」→ Compute Engine - 「マイクロサービス・オーケストレーション」→ GKE - 「トラフィック波状・予測不能」→ Cloud Run(コスト最適) - 「イベント駆動(Pub/Sub)」→ Cloud Functions


⑤ 他サービスとの使い分け

ネットワークトポロジーの判断

「複数の業務チームが同じクラウドに乗り移り、ネットワークポリシーを一元管理したい」

共有 VPC を選ぶ - 理由:ファイアウォールルール・ルート・Cloud NAT がプロジェクト間で共通化できる - 注意:デプロイ権限は各プロジェクトで個別に持つ(Network Admin は中央チーム)

「オンプレミスと AWS に既に存在するシステムと GCP を接続」

Cloud Interconnect(専用線)or Cloud VPN(インターネット)で複数 VPC に接続 - 選択基準:専用線は SLA 99.99%, VPN は 99.95%


ストレージの判断

「ユーザーの購入記録を管理し、毎秒数万のクエリがくる」

Cloud SQL ではなく Bigtable - 理由:Cloud SQL の上限は TPS(トランザクション/秒)で数千が限界 - Bigtable:キー範囲分割で数万 TPS を捌ける

「複数リージョンで同じデータを読み書きし、一貫性を保つ」

Cloud Spanner(他を排除) - 理由:Cloud SQL は同期レプリケーション非対応。Spanner だけが複数リージョン ACID を提供


コンピュートの判断

「短時間で結果を返すが、トラフィックが不規則」

Cloud Run > GKE > Compute Engine - 理由:Cloud Run はコンテナを秒単位でスケール・スケールダウン(ゼロに)できる

「GPU を使った機械学習モデルのバッチ処理」

Compute Engine(プリエンプティブル VM)or GKE(GPU ノード) - 理由:Cloud Run は GPU 非対応。コスト最適化なら Preemptible


⑥ 実務への応用

シーン 1: ECサイト構築(Web サービス)

要件:
- 在庫を毎分更新(トランザクション必須)
- 100 万ユーザー・レイテンシー < 100ms
- コスト月 ¥500 万以下

選定:
- ストレージ:Cloud SQL(単一リージョン)
  → 理由:トランザクション必須、スケール中程度、クエリ最適化済みなら十分

- コンピュート:Cloud Run(オートスケール)
  → 理由:トラフィック波状、サーバーレス費用最安

- ネットワーク:単一 VPC
  → 理由:単一リージョンなので共有 VPC 不要

シーン 2: グローバル金融システム(決済)

要件:
- 複数リージョン・同時実行
- ACID トランザクション必須
- 99.99% SLA

選定:
- ストレージ:Cloud Spanner
  → 理由:複数リージョン ACID はこれしかない

- コンピュート:GKE(複数リージョン)
  → 理由:Spanner との遅延を最小化、複雑な業務ロジック、障害時フェイルオーバー

- ネットワーク:Cloud Interconnect(複数リージョン)
  → 理由:99.99% SLA のため専用線必須

シーン 3: IoT データ収集・分析

要件:
- 100 万台のセンサーから秒単位でデータ取得
- リアルタイム集計は不要(後で分析)
- コスト最小化

選定:
- ストレージ:Bigtable(時系列データベース)
  → 理由:大量データ・高書き込み速度・低レイテンシー・コスト安

- コンピュート:Cloud Functions
  → 理由:Pub/Sub イベント駆動、スケーリング自動

- ネットワーク:Cloud VPN / MQTT Broker
  → 理由:エッジデバイス ← → Pub/Sub の通信パス

⑦ よくある誤解・落とし穴

誤解 1: 「GKE は常に最適」

よくある間違い:「マイクロサービスなら GKE」と思い込む ✅ 正解:GKE は複雑性が高い(ノード管理・ネットワークポリシー・RBAC)。シンプルなら Cloud Run で十分。コストも 1/3 以下。

→ PCA 試験では 「無駄な複雑性を避ける」 のが採点ポイント


誤解 2: 「Cloud SQL は小規模のみ」

よくある間違い:「Cloud SQL は 100GB までしかスケールしない」 ✅ 正解:Cloud SQL は ストレージ 65TB まで対応。TPS(毎秒トランザクション)が制限だから、Cloud SQL の上限(数千 TPS)で十分なら「無理に Spanner に移すな」が正解。

→ Spanner はコスト 10 倍なので、本当に必要か問い詰める


誤解 3: 「共有 VPC は常に使うべき」

よくある間違い:「スケーラビリティのため共有 VPC」 ✅ 正解:共有 VPC は 管理集中化のため。複数チーム・複数プロジェクトで 同一のネットワークルール を使うときのみ。

→ 小規模スタートアップなら単一 VPC で十分


誤解 4: 「Cloud Storage は遅い」

よくある間違い:「Cloud Storage は秒単位で返ってくる」 ✅ 正解:Cloud Storage は 1s でテラバイト単位のデータ を返す。「遅い」のではなく「バッチ処理向け」。 - リアルタイム取得が必要 → Bigtable / Firestore - バッチ分析 → Cloud Storage + BigQuery

→ PCA 試験では「適用シーンの誤認識」を狙われる


⑧ 理解度チェック

問題

「毎秒 1 万件のセンサーデータを受け取り、直近 1 分間の平均値をリアルタイムで API で返すシステムを設計します。複数リージョンでの冗長化は不要、コストは月 ¥10 万以下です。

以下のどの組み合わせを選びますか?理由も含めて。」

選択肢 A: Cloud SQL + Cloud Run(単一リージョン) 選択肢 B: Bigtable + GKE(複数インスタンス) 選択肢 C: Firestore + Cloud Functions 選択肢 D: Cloud Storage + BigQuery

解説

正解は A(もしくは C)

根拠: - 秒単位のデータ: Cloud SQL の TPS(数千)では足りない × → Bigtable が良い候補 - リアルタイム API: Firestore ✓(遅延 100ms)or Bigtable ✓(遅延 1ms) - 複数リージョン不要: GKE 多インスタンスは過剰複雑 × → Cloud Run が最安 - 月 ¥10 万以下: Bigtable(月 ¥20 万以上)はギリギリ、Firestore ✓(月 ¥5 万以下)

最も正解に近い: Firestore + Cloud Run - 理由:リアルタイム更新・自動スケーリング・管理シンプル・コスト最安 - 懸念:Firestore の書き込み速度(秒 1,000 件/秒)を超える場合は Bigtable に変更


⑨ 深掘り補足(PCA 試験範囲外)

VPC Flow Logs の活用

Preview サービスではなく GA サービスです

VPC Flow Logs を有効にすると、VPC 内のすべてのパケットログが Cloud Logging に記録されます。 PCA 試験ではネットワークトラブルシューティングで登場:

問:「GKE クラスタ内から外部 API へのリクエストが失敗している。原因を特定するには?」

答:VPC Flow Logs から次を確認
1. ファイアウォールルールで DENY されているか
2. Cloud NAT が機能しているか
3. ルーティングテーブルに経路があるか

Cloud CDN + Cloud Storage の組み合わせ

静止画・ビデオ配信では Cloud Storage + Cloud CDN の組み合わせが鉄板:

構成:
Client → Cloud CDN(エッジロケーション)
       → Cloud Storage(オリジン)

効果:
- 初回リクエスト: Cloud Storage から取得(~1s)
- 2 回目以降: エッジキャッシュから返却(~100ms)
- 月額コスト: Cloud Storage + CDN 利用料のみ(サーバーレス費用なし)

vs Cloud Run:
- Cloud Run: 起動時間 100ms、スケーリング無制限だが月額高い

Auto Scaling の落とし穴(実務応用)

GKE / Cloud Run の自動スケーリングは CPU 平均使用率 をベースに動きます。

悪い例:
- 閾値 50% に設定
- リクエスト 1,000 個スパイク
→ スケールアップまで ~30 秒(その間 CPU 100%)
→ ユーザー体験:レイテンシー 5 秒以上に悪化

良い例:
- 予測的スケーリング(GKE)or リクエストベース(Cloud Run)
- ウォームアップ時間 ~10 秒で早期スケールアップ

→ PCA 試験では「SLA 99.9% で 99.95% のスケーリング信頼性が必要」で出題される可能性


次回: 1.4 マイグレーション計画の作成