えいのうにっき

a-knowの日記です

AWSとGCPをいくつかの観点で比較してみたメモ

Google Cloud の認定資格、Professional Cloud Architect が最近気になっている。

cloud.google.com

なぜ気になっているかというと、業務上プラスになることがありそう、ということはさることながら、以下の記事を読み「合格すると認定グッズがもらえる」「リュック(デイバッグ)良さそう!」と思ったこと、というのが実は大きい。物欲。

medium.com

この気分がどこまで続くかはさておき、ゆるゆると勉強しはじめたのは事実。勉強も、手元でいろいろと整理しながらやっており、その整理したものについてこのブログにもメモしておきたい。もしかしたら資格取得以外の目的でも誰かの役に立つかもしれない。。ということで書いてる。

今回は、AWSとGCPをいくつかの観点で比較・整理してみたもののメモ。

AWSとGCPの比較

リージョン・ゾーン

  • AWSでは、あるリージョンは他のリージョンと分離されていて、独立した形態になっている
  • GCPでも同様ではあるが、GCPサービスのニーズに応じてリージョンを超えたデータ同期をおこなうことができる機能が組み込まれている

POP(Points of Presence)

  • 世界中のさまざまな場所にPOPがあること・そこでコンテンツがキャッシュ保存されること、といったところはAWSとGCPは同じ。
  • AWS : CloudFront により提供。CloudFront のみ。
  • GCP : Cloud CDN による提供に加え、App Engine や Cloud Storgae のようなサービスのための組み込みエッジキャッシングも提供している
    • GCPのPOPは、Googleが所有するファイバーを介してDCに接続する

ここまでの内容は、ここにもいいのがある。

サービス対応表

含・個人の見解。ここにもいいのがある。

AWS GCP
仮想マシン・IaaS EC2 Compute Engine
PaaS ElasticBeanstalk App Engine
コンテナオーケストレーション ECS Kubernetes Engine
FaaS Lambda Cloud Functions
負荷分散 ELB Cloud LoadBalancing
専用線接続・ピアリング Direct Connect Cloud Interconnect
DNS Route53 Cloud DNS
オブジェクトストレージ S3 Cloud Storage
アーカイブ用ストレージ Glacier Cloud Storage Nearline
ブロックストレージ EBS Persistent Disk
クラウドファイルストレージ EFS Filestore / Cloud Storage FUSE
リレーショナルデータベース RDS / Aurora Cloud SQL / Cloud Spanner
非リレーショナルデータベース SimpleDB Cloud Datastore
NoSQLデータベース DynamoDB Cloud Bigtable
MapReduce EMR Cloud Dataproc / Cloud Dataflow
ストリーミングデータ処理 Kinesis Cloud Dataflow
データウェアハウス Redshift BigQuery
メッセージ・キュー SNS / SQS Cloud Pub/Sub
モニタリング CloudWatch Stackdriver Monitoring
デプロイメント CloudFormation Cloud Deployment Manager

分野別・アプローチの比較

基本的にはAWS プロフェッショナルのための Google Cloud Platformにあるものをざっくりまとめたものになる。

ビッグデータ

  • データの取り込み
    • AWS : Kinesis
      • モデル:ストリーミングモデル
      • プロビジョニングユニット:シャード
      • データパーティショニング:ユーザー指定のパーティションキー
      • 保持期間:1〜7日
      • 最大データサイズ:1MB
      • 料金モデル:シャード時間、操作数、データ保持期間
      • スペック:入力帯域幅最大1MB/秒、1000データプット/秒
      • データ順序:パーティショニングキーおよびシーケンス番号を使ってデータ順序を保持
    • GCP : Cloud Pub/Sub
      • モデル:パブリッシャー / サブスクライバーモデル(メッセージサービス)
      • プロビジョニングユニット:フルマネージド
      • データパーティショニング:フルマネージド
      • 保持期間:7日
      • 最大データサイズ:10MB
      • 料金モデル:操作数
      • スペック:TBD
      • データ順序:メッセージが発行された順序で、メッセージを送信するためのシステム指定 publishTime 属性を使って、ベストエフォートベースでメッセージを送信する
        • 一回限り / 順序通りの送信を保証するものではない
  • データの変換
    • AWS : EMR
      • オープンソースライブラリ : Hadoop, Spark
      • スケーリング : 手動
      • 料金モデル : 1時間あたり
      • スケーリングユニット : ノード
      • 作業ユニット : ステップ
      • ストリーミング : 非対応(バッチモードのみ)
    • GCP : Dataproc + Dataflow
      • Cloud Dataproc
        • オープンソースライブラリ : Hadoop, Spark
        • スケーリング : 手動
        • 料金モデル : 1秒あたり
        • スケーリングユニット : ノード
        • 作業ユニット : ジョブ
        • ストリーミング : 非対応(バッチモードのみ)
      • Cloud Dataflow
        • オープンソースライブラリ : Beam
        • スケーリング : 自動
        • 料金モデル : 1時間あたり
        • スケーリングユニット : ワーカー
        • 作業ユニット : ジョブ
        • ストリーミング : バッチ / ストリーミング 両対応
  • データ分析
    • AWS : Redshift
      • デプロイユニット : クラスタ
      • プロビジョニングユニット : ノード
      • ノードタイプ : スピニングディスク / SSD
      • スケーリング : 手動設定
      • 料金モデル : 1時間あたり
      • クエリ言語 : PostgreSQL対応
    • GCP : BigQuery
      • デプロイユニット : フルマネージド
      • プロビジョニングユニット : フルマネージド
      • ノードタイプ : フルマネージド
      • スケーリング : フルマネージド
      • 料金モデル : ストレージとクエリ容量
      • クエリ言語 : Legacy BigQuery SQL もしくは Standard SQL
      • 分散ファイルシステム Colossus を使ってデータを保存、暗号化、複製し、Googleの大規模クラスタ管理システム Borg を使ってタスクを処理する。クエリの実行には、内部クエリエンジン Dremel を使って実行している。

コンピューティング

  • IaaS
    • AWS : EC2
      • テンポラリ仮想マシン : スポットインスタンス
      • ローカル接続ディスク : エフェメラルディスク
      • VMインポート : RAW, OVA, VMDK, VHD
      • インスタンスの移行 : メンテナンスの影響を受けるインスタンスを手動で移行する必要がある
    • GCP : Compute Engine
      • テンポラリ仮想マシン : プリエンプティブVM
      • ローカル接続ディスク : ローカルSSD
      • VMインポート : RAW
      • インスタンスの移行 : ライブマイグレーションにより、自動的かつ透過的に移行される
  • FaaS
    • AWS : Lambda
      • コードの取り込み : zipアップロード、オンラインIDE、デスクトップIDE、S3
      • コード更新レイテンシ : 通常は数秒以内
      • 最大同時実行数 : リージョンごとにデフォルトで1000件
      • デプロイの最大サイズ : 50MB(圧縮)250MB(非圧縮)
      • サポート言語 : Node.js, Java, Python, C#, Go, Ruby
      • メモリ割り当て : 64MB間隔で128MB〜1.5GB
      • タイムアウト制限 : 1秒〜5分
      • バージョニング : 組み込み
    • GCP : Cloud Functions
      • コードの取り込み : zipアップロード、オンラインIDE、Cloud Storage、GitHub
      • コード更新レイテンシ : 通常は2分以内
      • 最大同時実行数 : 機能ごとにデフォルトで1000件
      • デプロイの最大サイズ : 100MB(圧縮)500MB(非圧縮)
      • サポート言語 : Node.js, Python
      • メモリ割り当て : 128MB, 256MB, 512MB, 1GB, 2GB
      • タイムアウト制限 : 1秒〜9分
      • バージョニング : Cloud Source Repositories 経由
  • PaaS
    • AWS : Elastic Beanstalk
      • サービスモデル : EC2インスタンスやRDSインスタンスなど、基盤となる一連のAWSリソースを構成およびデプロイし、入力構成に基づいてアプリケーションに適切なランタイムを作成する
      • 主要コンポーネント : アプリケーションバージョン・環境・環境構成・アプリケーション
      • ネットワーキング : 管理買可能
    • GCP : App Engine
      • サービスモデル : スタンダード環境とフレキシブル環境とがある。
        • スタンダード : Google のインフラストラクチャ上で実行されるコンテナインスタンスにコードがデプロイされる。基盤となるGCE VMインスタンスに依存しないため、迅速にスケール可能。
        • フレキシブル : GCE VMインスタンス上で動作する Docker コンテナにコードがデプロイされ、これらのコンテナが App Engine により管理される。
      • 主要コンポーネント : バージョン・サービス・サービス構成ファイル・インスタンス(GCE VM or コンテナ)・アプリケーション
      • ネットワーキング
        • スタンダード : ネットワーク構成は完全に抽象化される。
        • フレキシブル : フレキシブル管理下のVMをVPCに接続するなどの管理が可能。
  • CaaS
    • AWS : ECS
      • クラスタノード : EC2
      • 対応デーモン : Docker
      • ノードエージェント : ECS Agent
      • コンテナグループ : タスク
      • デプロイサイズ設定 : サービス
      • 組み込みサービスディスカバリ : なし
    • GCP : Kubernetes Engine
      • クラスタノード : Compute Engine
      • 対応デーモン : Docker, rkt
      • ノードエージェント : Kubelet
      • コンテナグループ : ポッド
      • デプロイサイズ設定 : レプリケーションコントローラ
      • 組み込みサービスディスカバリ : Kubernetes DNS アドオン

インフラストラクチャデプロイツール

  • AWS : CloudFormation
    • リソースのコレクション : スタック
    • 構文 : JSON, YAML
    • デプロイに用いるファイル : テンプレートファイル
    • 構成と再利用性 : ネストされたスタック
    • デプロイ対象の範囲 : リージョン
    • GUI : あり
  • GCP : Deployment Manager
    • リソースのコレクション : デプロイ
    • 構文 : YAML, Jinja, Python
    • デプロイに用いるファイル : 設定ファイル、テンプレートファイル、スキーマファイル
      • 設定ファイル : デプロイの構造を定義し、デプロイするリソースを設定する。YAMLで記述。
      • テンプレートファイル : 構成と再利用が可能なりソース定義。Jinja, Python で記述。ループにも対応。
      • スキーマファイル : 特定のテンプレートを使用するために構成ファイルが満たさなければならない一連のルールを定義したもの。
    • 構成と再利用性 : テンプレート
    • デプロイ対象の範囲 : グローバル
    • GUI : なし

ネットワーキング

  • AWS
    • サービスの特徴 : EC2との結びつきが強いものになっている。
  • GCP
    • サービスの特徴 : 全てのサービスを網羅した、グローバルなものとして扱われている。ネットワーク自体もグローバルスコープを持っている

DNS

  • AWS : Route53
    • ゾーン : ホステッドゾーン
    • レイテンシベースのルーティング : 対応
    • 位置情報ベースのルーティング : 対応
    • DNSSEC : 非対応
  • GCP : Cloud DNS
    • ゾーン : マネージドゾーン
    • レイテンシベースのルーティング : 非対応
    • 位置情報ベースのルーティング : 非対応
    • DNSSEC : 対応

ストレージ

  • 分散オプジェクトストレージ
    • AWS : S3
      • 更新通知 : イベント通知
      • サービスクラス : 標準、低冗長化、低頻度アクセス、Glacier
      • デプロイ単位 : リージョン
      • バージョニング : サポート
      • 条件付き更新 : 非サポート
      • ライフサイクル管理 : サポート
    • GCP : Cloud Storage
      • 更新通知 : オブジェクト変更通知
      • サービスクラス : Standard, Durable Reduces Availability, Nearline
      • デプロイ単位 : リージョン、マルチリージョン
      • バージョニング : サポート
      • 条件付き更新 : サポート
      • ライフサイクル管理 : サポート
  • ブロックストレージ
    • AWS : EBS
      • ボリュームタイプ : EBSプロビジョンド IOPS SSD, EBS汎用SSD, スループット最適化HDD, Cold HDD
      • ボリュームの接続 : 一度に1つのインスタンスにのみ接続可能
      • インスタンスあたりの接続ボリューム : 最大40
      • 最大ボリュームサイズ : 16TiB
      • 利用可能範囲 : 1つのリージョンのみで利用可能・必要に応じて明示的に他のリージョンにコピーする必要がある
      • ローカル接続されたディスク : インスタンスストア(ephemeralストア)。ライブマイグレーション非対応
      • ボリュームの性能 : インスタンスタイプによって異なる。EBS最適化されたインスタンスを選択することで、接続対象ボリュームとインスタンスとが専用回線で接続される。
    • GCP : Persistent Disk
      • ボリュームタイプ : 標準永続ディスク(HDD)、SSD永続ディスク
      • ボリュームの接続 : R/Wボリュームについては、一度に1つのインスタンスにのみ接続可能。Read Only Volume は複数のインスタンスに接続可能
      • インスタンスあたりの接続ボリューム : 最大128
      • 最大ボリュームサイズ : 64TB
      • 利用可能範囲 : グローバル
      • ローカル接続されたディスク : ローカルSSD / ライブマイグレーション対応
      • ボリュームの性能 : コアあたりでスループットを割り振る。

モバイルバックエンド

  • AWS : Mobile Hub
    • プラットフォームの有効範囲 : モバイルバックエンド開発に適した一連のサービスを提供する
    • 認証 : Cognito
    • データベース : DynamoDB
    • データストレージ / CDN : S3 および CloudFront
    • サーバーレスルーチン : Cloud Logic および Lambda
    • 通知 : SNS
    • クライアントアプリケーションサービス : なし
  • GCP : Firebase
    • プラットフォームの有効範囲 : 一連のバックエンドサービスを提供するとともに、クライアントアプリケーション開発のスピードアップを目的とした、フロントエンド機能を含むクライアントライブラリも提供する。
    • 認証 : Firebase Authentication
    • データベース : Firebase Realtime Database
    • データストレージ / CDN : Firebase Hosting
    • サーバーレスルーチン : Firebase Hosting および Cloud Functions for Firebase
    • 通知 : Firebase Cloud Messaging
    • クライアントアプリケーションサービス : パフォマンスモニタリング、アプリのインデックス作成、アプリのモニタリング、クラッシュレポート、アプリ共有、リモート設定、ダイナミックリンク

アプリケーションサービス・Messaging

  • AWS : SQS
    • デプロイ単位 : リージョン
    • メッセージ保持期間 : 最大14日
    • キューごとの処理メッセージ最大数 : 標準(厳密なメッセージ順序つけ・一回限りの配信などはなし)で120000、FIFOで20000
    • 最大ペイロードサイズ : 256KB
    • ファンアウト : SNS と合わせて
    • デッドレターキュー : あり
    • 遅延キュー : あり
    • 課金 : キュー所有者
    • メッセージ配信 : pullベース
    • メッセージライフサイクル : 可視性タイムアウト機能(時間内は削除可能・タイムアウトした場合は他のプロセスが再度pull可能になる)
  • GCP : Cloud Pub/Sub
    • デプロイ単位 : グローバル
    • メッセージ保持期間 : 最大7日
    • キューごとの処理メッセージ最大数 : pullの場合は無制限、pushの場合は1000(厳密なメッセージ順序つけ・一回限りの配信などはなし)
    • 最大ペイロードサイズ : 10MB
    • ファンアウト : ネイティブにサポート
    • デッドレターキュー : なし
    • 遅延キュー : なし
    • 課金 : メッセージ登録者
    • メッセージ配信 : pullベースおよびpushベース
    • メッセージライフサイクル : 確認応答期間をサポート(デフォルト10秒・最大10分迄延長可能)

DevOps

  • AWS
    • ビルドサービス : CodeBuild
      • オートスケール
    • リリースプロセスモデルの提供 : CodePipeline
    • デプロイ自動化 : CodeDeploy
  • GCP
    • ビルドサービス : CloudBuild

まとめ

認定資格を受けるにあたって、どの程度まで把握しておくべきなのかがわからない......。。