11. Kubernetes とは?
プロダクショングレードの
コンテナ オーケストレーションシステム
● コンテナ オーケストレーション
ツールのデファクト スタンダード
● オープンソース
● スケジューリング、自動ヒーリング、
自動スケーリング
● 高い拡張性
お客様構築、管理
API
Server
kubectl
User
Storage
Scheduler
Resource
Controllers
User Pod
Containers
Nodes
Control plane
Kubernetes Cluster
User Pod
Containers
User Pod
Containers
User Pod
Containers
12. Google Kubernetes Engine(GKE)
特長
● セキュリティとコンプライアンス
○ HIPAA と PCI DSS に準拠
● 自動でスケーリング、
アップグレード、ノードを修復
● ハイブリッドとマルチクラウド をサポート
kubectl
User
Nodes Google Cloud
サービス
Control plane
GKE cluster
GKE が構築、Google、お客様で管理
Google 管理
Google Cloud サービス
API
Server
Storage
Scheduler
Resource
Controllers
User Pod
Containers
User Pod
Containers
User Pod
Containers
User Pod
Containers
Vi ual
Private Cloud
Persistent
Disk
Cloud Load
Balancing
Operations
13. GKE - Autopilot モード
特長
● Control plane に加え Node も Google マネージドに
● 本番ワークロードに適した
ベストプラクティスが適用済み
○ セキュリティ
○ ワークロード
○ ネットワーク設定など
● Workload(Pod)ドリブンな世界へ
○ Pod 単位での課金、Pod への SLA
Nodes Google Cloud
サービス
Control plane
Autopilot cluster
Google 管理
Google Cloud サービス
Vi ual
Private Cloud
Persistent
Disk
Cloud Load
Balancing
Operations
kubectl
User
API
Server
Storage
Scheduler
Resource
Controllers
User Pod
Containers
User Pod
Containers
User Pod
Containers
User Pod
Containers
14. Google Kubernetes Engine(GKE)
スタンダード:おすすめユースケース
● ノードの設定変更が必要なゲームバックエンド
● GPU, TPU を使う ML パイプライン
Autopilot:おすすめユースケース
● スケーラブルな負荷テストツール用環境
● 必要リソースに変動の少ない Static なシステム
GKE のユースケース
● マイクロサービス アーキテクチャにおける 大規模 Web アプリケーション
● データ処理基盤
15. Cloud Run
コンテナ + サーバーレス
● 100 ミリ秒単位での課金。最大 4 vCPU(Preview で 8 vCPU も可)、
16 GiB RAM(Preview で 32 GiB も可)の利用
● オープンソースの Knative と API 互換になっていることによる移植の容易性
● ユースケースに合わせた 2 つの選択肢
○ Cloud Run:フルマネージド
○ Cloud Run for Anthos:柔軟性、ハイブリッドクラウド
※ ここからの Cloud Run については、フルマネージド版をベースに説明を進めます
29. Google Cloud におけるマネージド データベースの選択肢
Cloud Bigtable
Cloud Spanner
PostgreSQL
SQL 方言のみ互換
Cloud SQL
for PostgreSQL
for MySQL
for SQL Server
BigQuery
Firestore
ネイティブモード
Datastore モード
Memorystore
for Redis
for Memcached
OSS 及び商用のマネージド DB クラウド ネイティブ DB
Datastream
Database Migration Service
データベース移行サービス サーバーレスCDC サービス
キャッシュ リレーショナルデータベース(SQL データベース) DWH
NoSQL データベース
KVS / ワイドカラム ドキュメント DB
クラウド環境用に設計された
Google Cloud 独自の DB のこと
ユーザー数や経験者も非常に多い OSS の DB や商用 DB を
マネージド サービス化
DB と一緒に使う周辺サービス
New!
AlloyDB
for PostgreSQL
(完全互換)
Preview
サーバーレス
30. アプリの裏で利用する Google Cloud のデータベース サービス
Google Cloud では、アプリの要件に合わせて使える
6 種類のマネージドDB を用意。
Cloud Bigtable
Cloud Spanner
Cloud SQL
for MySQL
for PostgreSQL
for SQL Server
Firestore
ネイティブモード
Datastore モード
Memorystore
for Redis
for Memcached
BigQuery は
データ分析系の
サービスなので
別枠です
AlloyDB
for PostgreSQL
(完全互換)
Preview
New!
31. まずは 2 種類に大分類
Cloud SQL
for MySQL
for PostgreSQL
for SQL Server
AlloyDB
for PostgreSQL
Preview
OSS / 商用のマネージド DB クラウド ネイティブ DB
Memorystore
for Redis
for Memcached
Cloud Bigtable
Cloud Spanner
Firestore
ネイティブモード
Datastore モード
32. OSS / 商用 DB をマネージド サービスとして提供
ユーザー数や経験者も非常に多い OSS や商用 DB を、
運用が簡単なマネージドサービスとして提供。
Memorystore
インメモリ データストアである Redis と Memcached を
マネージド サービスとして提供。
Cloud SQL
RDBMS である MySQL、PostgreSQL、SQL Server をマネージ
ド サービスとして提供。リードレプリカや HA 構成の構築や自動管
理、ストレージ容量の無停止自動拡張、自動バックアップなど、運
用を容易にする様々な機能を提供。
AlloyDB
RDBMS である PostgreSQL を、ストレージ層などを強化し、マ
ネージド サービスとして提供。Cloud SQL が持つ運用容易性に加
え、書き込み性能向上、低遅延のレプリケーション、可用性の向上
など、様々な強化が行われている。現在
プレビュー版として提供。
Cloud SQL
for MySQL
for PostgreSQL
for SQL Server
Memorystore
for Redis
for Memcached
キャッシュ
リレーショナルDB
AlloyDB
for PostgreSQL
Preview
Preview
リレーショナルDB
OS MySQL
VM
ロギング
監視
その他サービス
Cloud SQL for MySQL のインスタンス
マネージド サービスになってい
るだけで、中身は普通に OS の
上で動く RDBMS が動作してい
る。
34. Web / API サービスの開発において、まず検討する DB
Cloud Spanner
Cloud SQL
for PostgreSQL
for MySQL
for SQL Server
Firestore
ネイティブモード
Datastore モード
OSS のマネージド DB クラウド ネイティブ DB
リレーショナルデータベース(SQL データベース) NoSQL
ドキュメント DB
New!
AlloyDB
for PostgreSQL
(完全互換)
Preview
サーバーレス
注意)
AlloyDB は 2022 年 8 月現在はまだプレビュー期間中であり、サポート対象ではないため
AlloyDB GA 後の状況で選ぶ選択肢として今回は紹介。
36. アプリとデータベースの接続方式の違い
Cloud Spanner
Cloud Bigtable
Firestore
ユーザーアプリ
MySQL 用の
ドライバ
MySQL の通信プロトコル( TCP/IP)
Private IP
Public IP
サービスごとに API エンドポイントがあり、アプリからは、Google
Cloud が提供している各プロダクト用のドライバを利用して、共通
の API エンドポイントに接続する。
インスタンスごとに IP アドレスが割り振られており、アプリからは、データ
ベースごとのドライバを利用して IP アドレスとポート指定で接続。OSS とし
て使う MySQL や PostgreSQL と同じ接続方式。
例)spanner.googleapis.com
Cloud Spanner の通信(gRPC ベース)
API の
エンドポイント
例)10.35.32.38 : 3306
ユーザーアプリ
Cloud Spanner 用の
ドライバ
Cloud SQL / Memorystore / AlloyDB
Cloud Spanner / Cloud Bigtable / Firestore
project id / instance id / database name
+ IAM による認証情報 🔑
接続先 IP + DB の認証情報 🔑
Private IP
Private IP
OSS / 商用のマネージド DB
クラウド ネイティブ DB
Cloud SQL
for MySQL
AlloyDB
for PostgreSQL
Memorystore
for Redis
37. アプリとデータベースの接続俯瞰図
プロジェクト
ユーザーのVPC
Compute
Engine
サーバーレス
VPC アクセス
コネクタ
Cloud Run
Memorystore の VPC AlloyDB の VPC
Cloud SQL の VPC
Memorystore AlloyDB
Cloud SQL
アプリ
アプリ
Private IP
Private IP
Private IP
Public IP
(Auth Proxy 経由)
*) PSC = Private Service Connect
クラウド ネイティブ DB
リージョンやインスタンス問わず、
API エンドポイント
から自動的にルーティングされる。
Cloud Spanner、Firestore、Cloud Bigtable は、共通のAPI エンドポイントに接続するだけなので、ア
プリケーションが稼働するサービスを意識すること無く利用しやすい。一方、既存
DB との互換性を維持
しているCloud SQL、AlloyDB、Memorystore は、IP アドレスに接続に行くため、アプリケーション側
の
ネットワークを意識して接続方式を考える必要がある。
Kubernetes
Engine
アプリ
Cloud Bigtable
Cloud Spanner
Firestore
Public
Cloud APIs の
エンドポイント
Private (PSC*)
39. チーム構成
CCoE のような、サービスを
横断で管理するチームがいる場合
● そのチームに GKE の管理を任せることで
○ マルチテナント構成でリソースの有効利用
○ 知見の集約、他チームへの展開
○ 何より Kubernetes のエコシステムの活用
GKE cluster 1
CCoE
Service A Service B
Service C
GKE cluster 2
Service D
Service E