現在の会社に入社して初めてGoogle Cloud
を触って、かれこれ半年近くが経ったのですが、それまで利用していたAWS
と比較して色々気付かされることがあったので一通りまとめてみました。
これからどのクラウドソリューションを利用するかを検討している方や各クラウドの違いが気になっている方の参考になれば幸いです。
前提事項
最初に私の経歴をざっと話すとAWS
が3年、Google Cloud
が半年です。そのためAWS
に知識が偏重している傾向があります。一方で業務としてAWS
を最後に触っていたのが2020年3月頃までなので、それ以降にアップデートされた情報については知見がありません。
こうした事情があるため公正さと正確性が不充分であることをご了承ください。
各サービスの違い
EKS vs GKE
GKE
にかなり分があると思います。流石にKubernetes
の本家だけあって機能が充実しています。
特に便利だと思うのがオペレーション スイートのネイティブ結合とノードの自動アップグレードです。GKE
ではCloud Monitoring
および Cloud Logging
という2つの機能がデフォルトでインテグレーションされており、GEKクラスタ
を作成すると自動的にモニタリング ダッシュボードが作成され、標準出力したログがCloud Logging
というサービスに転送されるようになります。
※Cloud Logging
については後述します
EKS
ではノードをEC2
とFargate
の2つから選択できます。Fargate
を選択するとノードの管理からは開放されるのですが、Kubernetes
の幾つかの機能に対応していなかったりと、自分が知っている範囲では運用面ではまだまだ使いづらい印象でした。
ちなみに私は以前の職場でオンプレでKubernetes
を使っていたのですが、GKE
だとこんなに簡単に運用できるのだとかなり感動しました。
RDS vs Cloud SQL
RDB
に関してはAWSのほうが良いと思います。MySQL
やPostgreSQL
など基本的なRDBは両者揃っているのでおおきな差はないと思いますが、AWS
だとAurora
を選択可能なので、幾らか分があると思います。エンタープライズだとAurora
はかなり利用価値があると思います。
一方でRDB
以外のDBに目を向けるとBigQuery
やSpanner
を擁するGoogle Cloud
に分があると思います(DynamoDB
も良いサービスですが)。
Elastic Load Balancing vs Cloud Load Balancing
反論はあるかもしれませんが、私はElastic Load Balancing
を推します。Cloud Load Balancing
を使って思った不満が以下の通りです。
- セルフ証明書からマネージド証明書に変更しようとすると接続できない時間帯が発生してしまう
- リソースとしての抽象度が低い
最後の「リソースとしての抽象度が低い」ですが、Cloud Load Balancing
は「フロントエンド」、「URLマップ」、「バックエンド」の3つのリソースの集合体として定義されています。コンソール画面から手動で作成する場合には気にならないのですが、terraform
のようなIaC
で管理しようとするとこの辺りを明確に理解していないとコーディングができず辛いです。
Google
としては「Load Balancing
ってそういうものだよね?」という事なのかもしれませんが、Elastic Load Balancing
と比べると扱いづらい感じは否めません。
一方でCloud Load Balancing
は静的IPを設定でき、この点で優位は確かにあります。ですが個人的には上記の運用上の不便さを補うほどのメリットではないと感じています。
S3 vs Cloud Storage
S3
のほうが良いと感じています。大きな違いとしてはオブジェクトに対するIP制御を設定できる点です。S3
と違い、Cloud Storage
はオブジェクトに付与されたURLへのアクセスをIPで制御することができません。
VPC Service Controls
というサービスを使うことでIP制御することができますが、GCP
プロジェクト全体に影響のあるサービスなので場面によっては使うことが難しく、Cloud Storage
の機能不足を完全に補っているとは言い難いです。
Cloud Watch Logs vs Cloud Logging
Cloud Logging
のほうが良いと思います。私が利用経験のあるGoogle Cloud
のサービスのなかで最良のサービスはGKE
、Cloud Run
そしてCloud Logging
の3つです。
ログ エクスプローラの画面はUIがスッキリとしていて分かりやすく、フィルタリング機能も直感的でほとんど学習せずに使えるようになっています。
Lambda vs Cloud Function
Lambda
のほうが良いです。サポートされている言語が多いのもそうですが、Lambda レイヤーが顕著な差だと思います。Cloud Function
にはLambda レイヤーのようなライブラリ層の概念が存在しないので、インフラレベルで個々のサービスの共通部分を管理することが出来ません。
コンソール画面の使いやすさ
圧倒的にAWSだと思います。UIの使い勝手は人それぞれなので置いておくにしても(個人的には断然AWSが使いやすいです)、そもそもレスポンス時間が目に見えて違います。またどちらのコンソールも比較的短期間でアップグレードされるのですが、AWSでは必ず一つ前のバージョンに戻るナビゲーションが付いています。
こうした細やかなユーザへの配慮はUIだけでなく、AWSのサービス全体に渡って息づいているように思います。
サポートの品質
サポートでも大きくAWSがリードしていると思います。というよりGoogle Cloudのサポートは控えめに言っても低品質です。Google Cloudでサポートを利用する場合は、状況をきちんと整理してあらかじめ関連ドキュメントに一通り目を通しておく必要があります。そうでないと数日後にドキュメントのリンクが貼られただけの返答が返ってきます。これはかなり酷い例ですが、決して稀なことではありません。
私はより長い期間AWSを利用していましたが、似たような品質のサポートを目にしたことはありませんでした。
ドキュメントの品質
これはどちらも充実しているので良い勝負だと思います。ただやはりAWS
のほうが量は多いと思います。また、Qiita等の非公式のドキュメントも合わせるとシェアの差がドキュメントの量に跳ね返ってくるので、この点でもAWS
に分があると思います。
結局どちらが良いのか?
ありきたりの答えで恐縮ですが、どちら素晴らしいサービスで、優れた点があるので利用する方の状況によります。
例えばあなたが最初のクラウドサービスを選ぼうとしているのならAWS
をおすすめします。AWS
はサービスとして初学者に理解しやすいよう配慮がなされており、サポートやドキュメントの品質でも充分なサポートをしてくれます。
またある程度クラウドの経験がある方でも引き続きAWS
を使うのは良い選択です。AWS
は主要クラウドのなかでも最も幅広い領域をカバーしていて、恐らくほとんどのユースケースに耐えられます。
ではGoogle Cloud
を使うほうが望ましい状況とはどのような時なのでしょうか?
一つはあなたのワークロードをKubernetes
で動かしたい場合です。GKE
とその周辺のエコシステム(Cloud Logging
やCloud Monitoring
等...)は非常に洗練されています。AWS
で同じ事をやるのは可能ですが、より多くの事を考慮する必要があるでしょう。
確かなことは、どちらのサービスを選ぼうとも魅力あるクラウドの旅が始まるということです。インフラエンジニアから見て、オンプレにはオンプレの良さがありますが、クラウドにも特有の良さがあります。是非あなたに合ったクラウドサービスを選択して、その魅力に触れてみてください。