Skip to content

Instantly share code, notes, and snippets.

@Showichiro
Last active February 7, 2025 21:08
Show Gist options
  • Select an option

  • Save Showichiro/1fd074560ace87c77e1f976d1abb744d to your computer and use it in GitHub Desktop.

Select an option

Save Showichiro/1fd074560ace87c77e1f976d1abb744d to your computer and use it in GitHub Desktop.
GCキャッチアップ

Cloud Runは、Googleのインフラストラクチャ上でコンテナを直接実行できる、フルマネージドなコンピューティングプラットフォームです。任意のプログラミング言語で記述されたコードをデプロイでき、サーバーの管理やインフラストラクチャの管理が不要になります。

Cloud Run の特徴:

  • サーバーレス:インフラストラクチャの管理が不要で、コードに集中できます。
  • 自動スケーリング:受信リクエストに応じて自動的にスケールアウトし、需要が減るとスケールインします。
  • 多様なサポート:ウェブサイト、API、マイクロサービス、ストリーミングデータ処理、AI推論など、様々なワークロードに対応します。
  • 統合:他のGoogle Cloudサービスとの連携が容易で、多機能なアプリケーションを構築できます。
  • ロギング:Cloud Loggingに自動的にログが送信され、リクエストログ、コンテナログ、システムログの3種類があります。
  • 柔軟性:Cloud Run サービスと Cloud Run ジョブの2種類があり、継続的な実行とジョブの実行に対応します。
  • セキュリティ:Googleのセキュリティ標準で構築されており、転送中のトラフィックはすべて暗号化されます。
  • VPC接続:VPCネットワークにトラフィックを直接送信し、VPCで実行しているすべてのサービスに接続できます.

Cloud Run の利用方法:

  1. コンテナイメージのデプロイ:コンテナイメージをCloud Runサービスにデプロイします。Dockerfile を含むソース、またはサポートされている言語ランタイムで記述されたソースをデプロイできます。
  2. ソースコードからのデプロイ:Go、Node.js、Python、Javaなどのサポートされている言語を使用している場合、ソースコードから直接デプロイできます。
  3. 関数のデプロイ:Eventarcトリガーを使用して、イベント駆動型の関数をデプロイできます。

Cloud Run の注意点:

  • コンテナの契約:コンテナは、Cloud Runのコンテナランタイム契約を遵守する必要があります。
  • ファイルシステム:インスタンスのファイルシステムは揮発性であり、インスタンスが停止するとデータは保持されません。
  • CPU割り当て:CPUはリクエスト処理中にのみ割り当てられる場合があり、その場合バックグラウンドアクティビティは制限されます。
  • 同時実行:各インスタンスで処理できる同時リクエストの数を調整する必要があります。
  • ロギングエージェント:Cloud Runはロギングエージェントを使用しません。Compute Engine などの特定の Google Cloud プロダクトで Cloud Logging を使用している場合は、Cloud Logging のロギング エージェントを使用した可能性があります。

Cloud Run のベストプラクティス:

  • 効率的なサービスの作成:バックグラウンドアクティビティを最小限に抑え、一時ファイルを削除して、メモリ不足エラーを回避します。
  • パフォーマンスの最適化:コンテナの起動時間を短縮し、依存関係を適切に使用し、グローバル変数を利用してパフォーマンスを向上させます。
  • 同時実行の最適化:サービスの同時実行数を調整して、安定したパフォーマンスを確保します。
  • セキュリティ:IAMを使用してアクセス制御を構成し、VPC Service Controlsを使用して流出リスクを軽減します。
  • モニタリング:Cloud Monitoringを使用して、Cloud Runサービスのパフォーマンスを監視し、アラートを設定します。
  • 負荷テスト:負荷テストを実施して、本番環境でのスケーリングを検証し、ボトルネックを特定します。
  • VPC下り(外向き)設定:ダイレクトVPC下り(外向き)またはサーバーレスVPCアクセスコネクタを使用して、VPCネットワークへのプライベートリクエストを構成します。
  • 段階的な移行:サーバーレスVPCアクセスコネクタからダイレクトVPC下り(外向き)に移行する場合は、段階的に移行します。
  • コンテナイメージ:コンテナイメージのサイズを小さく保ち、リーンベースイメージの使用を検討します。

Cloud SQLに関するメモ:

Cloud SQLの概要 Cloud SQLは、MySQL、PostgreSQL、SQL Server向けのフルマネージド型リレーショナルデータベースサービスです. データベース管理タスクを肩代わりし、データ管理に注力できます。

  • 主な利点
    • 管理の容易さ: Googleがバックアップ、レプリケーション、パッチ適用、暗号化、ストレージ容量の追加を自動化。
    • コスト効率: 柔軟なオプションがあり、予算やワークロードに応じて適切な機能を選択可能。
    • 高い互換性: MySQL、PostgreSQL、SQL Serverなどの広く利用されているオープンソースおよび商用エンジンをサポート。
    • スケーラビリティ: データの増加に合わせて簡単にスケールアップでき、リードレプリカを追加してスケールアウトも可能。
    • セキュリティ: データは自動的に暗号化され、VPCとのプライベート接続をサポート。
    • 高可用性: 99.99%の可用性SLA。

Cloud SQLの利用方法

  1. インスタンスの作成: Cloud SQLコンソールに移動してデータベースインスタンスを作成。
  2. データベースの構成: データベースとデータベースユーザーを作成・削除。
  3. 接続: パブリックIPアドレスまたはプライベートIPアドレスを使用してCloud SQLインスタンスに接続。Cloud SQL Auth Proxyを使用して接続を保護することも可能。
  4. データの移行: Database Migration Serviceを使用して、ダウンタイムを最小限に抑えてデータベースを移行。
  5. データベース管理ツール: phpMyAdmin (MySQL用)、MySQL Workbench (MySQL用)、Toad Edge (MySQL/PostgreSQL用)、pgAdmin.org (PostgreSQL用)、SQL Server Management Studio (SQL Server用)、Visual Studio Code (SQL Server用)など、様々なデータベース管理ツールが利用可能。

Cloud SQLの各エディション

  • Cloud SQL Enterprise: パフォーマンス、可用性、コストのバランスが取れたエディション。
  • Cloud SQL Enterprise Plus: 最高のパフォーマンスと可用性を実現するエディション。ダウンタイムが1秒未満のメンテナンス、マイナーバージョンのアップグレードが可能。データキャッシュも利用可能。

ベストプラクティス

  • インスタンスの構成と管理
    • メンテナンスの時間枠を構成して、中断更新のタイミングを制御。
    • 読み取り負荷の高いワークロードには、リードレプリカを追加してプライマリインスタンスからトラフィックをオフロード。
    • ストレージの自動増量を有効にするか、少なくとも20%の空き容量を確保。
    • CPUの過剰使用やメモリ不足を回避するために、インスタンスのサイズを適切に設定。
  • データアーキテクチャ
    • 大規模なインスタンスを、可能な限り小規模なインスタンスに分割。
    • データベースやテーブルの数を制限。
    • テーブルに主キーまたは一意のキーがあることを確認。
  • アプリケーションの実装
    • 接続プーリングや指数バックオフなどの適切な接続管理方法を使用。
    • メンテナンスやフェイルオーバーに対するアプリケーションのレスポンスをテスト。
    • 大規模なトランザクションは避ける。
    • Cloud SQL Auth Proxyを使用している場合は、最新バージョンを使用。
  • データのインポートとエクスポート
    • サーバーレスエクスポートを使用。
    • 小規模なインスタンスのインポートを高速化するために、一時的にCPUとRAMを追加。
    • エクスポートとインポートで同じSQLモードを使用。
  • バックアップとリカバリ
    • バックアップ、ポイントインタイムリカバリ、エクスポートを適切に使用してデータを保護。
    • トランザクションログの保持を考慮してインスタンスのサイズを調整。
    • インスタンスとバックアップを誤って削除しないように保護。

Cloud SQLのレプリケーション

  • レプリケーションは、Cloud SQLインスタンスまたはオンプレミスデータベースのコピーを作成し、作業をそのコピーにオフロードする機能。
  • 主な理由: データベース内のデータ使用をスケーリング。
  • 種類
    • リードレプリカ: プライマリインスタンスの正確なコピー。
    • クロスリージョンリードレプリカ: 異なるリージョンにあるリードレプリカで、障害復旧機能を追加。
    • 外部リードレプリカ: Cloud SQLプライマリインスタンスを複製する外部MySQLインスタンス。

注意点

  • 制限事項: Cloud SQLは、2台の外部サーバー間のレプリケーションをサポートしていません。
  • バイナリロギングの影響: リードレプリカをサポートするには、ポイントインタイムリカバリを有効にして、プライマリインスタンスのバイナリロギングを有効にする必要があり、パフォーマンスとストレージに影響。
  • 料金: リードレプリカは、標準のCloud SQLインスタンスと同じレートで課金。
  • SQLモード: インポートとエクスポートで同じSQLモードを使用しないと、インポートが失敗することがある。
  • 大規模なトランザクション: 大規模なトランザクションは避ける。
  • 同時実行オペレーション: Cloud SQLでは同時実行オペレーションの同期がサポートされない。

高可用性(HA) 高可用性(HA)を使用するCloud SQLインスタンスはHA以外のインスタンスよりも信頼性が高くなります。Cloud SQLのHAは、プライマリインスタンスとスタンバイインスタンスの2つの同期されたインスタンスによって機能。

Cloud SQLのオブザーバビリティ データベースのオブザーバビリティは、ログ、指標、トレースで生成されるデータまたはテレメトリーに基づいて、データベースシステムの内部状態をどの程度正確に推定できるかを表す尺度です。

AWSとGCの主要マネージドサービスについて調査し対照表を作成してください。類似点や異なる注目ポイントを取り上げていただきたいです。


以下に、AWSとGoogle Cloud(GCP)の主要なマネージドサービスを分野別に対照表形式でまとめ、類似点と注目すべき差異を解説します。表はコンピューティングストレージデータベースAI/機械学習コンテナ/サーバーレスの5分野に分けて整理しました。


1. コンピューティングサービス

サービス種別 AWSサービス GCPサービス 類似点 差異・注目ポイント
仮想マシン EC2 Compute Engine オンデマンドでのスケーラブルな仮想サーバー提供(IaaS) - 価格: GCPのf1-microインスタンスはAWS/Azureより低コスト(例: 0.0092 USD/時間)
- OS管理: GCPはOS LoginでSSH鍵管理をIAM統合可能
サーバーレス Lambda Cloud Functions イベント駆動型のコード実行(FaaS) - 実行時間制限: AWS Lambda(最大15分) vs GCP(最大9分)
- 統合サービス: GCPはPub/SubやFirestoreと連携がシームレス
PaaS Elastic Beanstalk App Engine アプリケーションのデプロイ・管理を自動化 - 柔軟性: AWSは複数言語対応、GCPはGoogleのインフラ最適化に特化

2. ストレージサービス

サービス種別 AWSサービス GCPサービス 類似点 差異・注目ポイント
オブジェクト S3 Cloud Storage 高耐久性・大容量データ保存 - アクセス層: AWSは「標準/IA/Glacier」、GCPは「Standard/Nearline/Coldline/Archive」
- 暗号化: GCPはサーバー側暗号化が必須
ブロック EBS Persistent Disk 仮想マシン用の高性能ブロックストレージ - レプリケーション: GCPはリージョン跨ぎレプリケーション可能、AWSは単一AZ内
ファイル EFS Filestore 共有ファイルシステム - プロトコル: AWS/GCPはNFS、AzureはSMB(ただし比較対象外)

3. データベースサービス

サービス種別 AWSサービス GCPサービス 類似点 差異・注目ポイント
リレーショナル RDS Cloud SQL MySQL/PostgreSQL/SQL Serverのマネージドサービス - 拡張性: GCPのCloud Spannerは水平スケーリング可能なグローバル分散DB
NoSQL DynamoDB Firestore/Bigtable 低レイテンシのキーバリュー/ワイドカラム型DB - 統合性: FirestoreはFirebaseと連携しモバイルアプリ向けに最適化
DWH Redshift BigQuery データ分析向けのフルマネージドサービス - サーバーレス: BigQueryはインフラ管理不要、Redshiftはクラスター管理が必要

4. AI/機械学習

サービス種別 AWSサービス GCPサービス 類似点 差異・注目ポイント
MLプラットフォーム SageMaker Vertex AI モデル構築・デプロイの統合環境 - 事前学習モデル: GCPはGoogle検索やYouTubeの技術を転用、AWSは汎用性重視
データ分析 QuickSight Looker BIツールによるデータ可視化 - 統合性: LookerはBigQueryと連携が強く、SQLベースの分析に特化
自然言語処理 Comprehend Natural Language AI テキスト分析・感情分析 - 多言語対応: GCPは100+言語、AWSは主要言語に限定

5. コンテナ/オーケストレーション

サービス種別 AWSサービス GCPサービス 類似点 差異・注目ポイント
Kubernetes EKS GKE マネージドKubernetesクラスター - 技術基盤: GKEはKubernetes開発元(Google)のノウハウを反映
- マルチクラウド: GKE EnterpriseはAWS/Azure連携可能
サーバーレスコンテナ Fargate Cloud Run インフラ管理不要のコンテナ実行 - 起動時間: Cloud RunはコールドスタートがAWSより高速

主要な差異のまとめ

  1. AI/データ分析:
    GCPはBigQueryやVertex AIでデータ処理と機械学習の統合性が高く、Googleのインフラを活用した高速処理が強み。AWSはSageMakerやRedshiftで汎用性と柔軟なカスタマイズを提供。

  2. 価格モデル:
    GCPは秒単位課金や持続的割引(Sustained Use Discount)でコスト効率が高い傾向。AWSはリザーブドインスタンスで長期契約時の割引が明確。

  3. コンテナ技術:
    GCPはKubernetesの開発元としてGKEの最適化が進み、マルチクラウド連携に強い。AWSはFargateでサーバーレスコンテナの運用を簡素化。

  4. エコシステム:
    AWSは240以上のサービスで汎用性が高く、エンタープライズ向けサポートが充実。GCPはGoogle WorkspaceやFirebaseとの連携で開発者体験を最適化。


選定のポイント

  • 既存環境: Microsoft製品連携ならAzure、Google Workspace利用ならGCPが有利。
  • データ分析重視: BigQueryやVertex AIを活用する場合はGCP。
  • 多様なサービス需要: AWSは幅広い機能と豊富なドキュメントで汎用性が高い。

詳細な料金比較や機能検証には、各プロバイダーの公式ドキュメント参照が必須です(例: AWS料金計算ツールGCP料金計算ツール)。

@Showichiro
Copy link
Author

Showichiro commented Feb 7, 2025

  • ポスグレではなくmysqlにした選定理由とかあるのかな
  • localにもリードレプリカ作るみたいな話をしていた記憶

@Showichiro
Copy link
Author

Showichiro commented Feb 7, 2025

  • インスタンス0も行けて実行時間課金なのが楽そう
  • 基本的にはDockerイメージを元にアプリ起動するのでECSと似ている運用イメージ
    • 多分Codeシリーズに類するやつらがいるのだろう
  • 横づけサイドカーでログをS3にみたいなテクニックとかあるのだろうか

@Showichiro
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment