gcp
OriginalWACULDay 24

Cloud ShellとAWS Cloud9を比較してみた

先日AWS Cloud9がリリースされて見てたらCloud Shellでもできるやつだなって思ったので比較してみようと思います。

ちょっとまとめてみました。
基本GCP視点からです。
AWS素人なので的外れなこと言ってるかも知れません。

Cloud Shellとは?

GCPのクラウド上で実行できるコンソール環境です。
https://cloud.google.com/shell
いつもGCPのハンズオンはここでやるようにしてます。

Cloud9とは?

AWSのクラウドコードエディタです。
https://aws.amazon.com/jp/cloud9
なんか良さそうな雰囲気を感じます。

比較

Cloud Shell Cloud9
コンソール
エディタ
共有 アカウント別 共有
マシンタイプ ある…? ある
ディスク 5GB 8GB?(変更可能っぽい)
料金 無料 有料

○×△で書きましたが、あるないについてだけです。
評価ではありません。

コンソール

両方ともあります。
Cloud Shellはその名の通り先にコンソール環境だけが存在していました。
あとからコードエディタが追加されました。
tmuxとかも最初から入ってます。
コンソール上のシェルでGCPサービスのプロジェクトは認証済みです。
gcloudコマンドの補完が最初から設定されてます。
コマンドよく知らない人にも優しいです。

当然Cloud9にもコンソールあります。
awsコマンドに補完がきいてないので初心者の自分としては何のコマンドがあるのかよく分からず辛いです。

  • コンソール環境は両方ともある
  • コマンドの認証は設定済みの状態
  • 何か専用の環境変数とかもいくつか設定されてる
  • 補完がきいてたりきいてなかったり

エディタ

Cloud9にはコードの同時編集があるようです。
あとデバッグもできるらしいです。
すごいですね。
後述の共有についても書きますが、EC2インスタンスで動くので他のユーザーとも同じインスタンスに接続して同時編集をすることが可能らしいです。
最大の接続数はわかりませんけど、チームで同じリソースいじろうと思ったらけっこうなパワーが必要になるんじゃないかな。
誰かがビルド始めたせいでエディタ遅くなったとか戦争が起きるような気がしないでもないんですが。

同時にファイルいじってたらコンフリクトしまくってビルド時にエラー吐きまくるとかありそうなので同時編集って嬉しいのかな?ってのが甚だ疑問ではあります。

Cloud Shellにもコードエディタはあります。
後付で追加されました。
といってもけっこう前からあるので知ってる人は知ってるんじゃないかな。
あとファイラーとしても使えます。

  • Cloud9はコードの同時編集が出来る
  • エディタで実行してデバッグも出来る

共有

Cloud Shellは完全にアカウント別です。
共有はありません。
セッションのたびに専用のインスタンスが作成されているような感じです。

Cloud9はEC2インスタンスにClou9が入った状態で作成されます。

  • Cloud Shellはアカウント毎に独立
  • Cloud9はユーザー同士で同時接続可能

マシンタイプ

Cloud Shellの△については、Boost Modeというものがありまして、インスタンスのマシンタイプをブーストしてパワーアップできます。
これは24時間持続します。
しかし、数回使ったことあるんですがこれパワーアップしてるのを実感したことがないです。
これは今までにCloud Shell上でゴリゴリコードを書いたり開発したりすることがなかったせいじゃないかと思うので実感してないだけだと思います。

  • Cloud Shellはしょぼめ
    • Boost Modeでちょっとパワーアップ出来る
  • Cloud9は自分で選べる

ディスク

Cloud9の方は作成時にディスクサイズの指定は出来ませんが、EC2インスタンスなのであとからディスクサイズ増やせそうです。
デフォルトで作ると8GBでした。

Cloud Shellの方はホームディレクトリに5GBのディスクが割り当てられてます。
セッションを切ってもこの領域だけは保持されます。
それ以外の領域はセッションを切ると初期化されます。
この領域はどうやっても現時点では増やせません。
有料で良いからPersistent Diskのアタッチ出来たら良いのになあ!

  • Cloud Shellは5GBのみ
  • Cloud9はあとから変えられる

環境

起動

どちらも動いてない状態からだとそこそこ時間かかります。
Cloud9は初回作成時はけっこう時間かかりました。
あとChromeでAdblock動かしてたら延々ロード中でいつまで経っても画面が表示されずに最初困りました。

Cloud Shellは専用インスタンス作成してるので遅いです。

  • Cloud9は初回起動時のみけっこう時間かかる
  • 2回目以降のStop状態からは早い
  • アイドル状態だと止まるような設定があるので安心
  • Cloud Shellは新しく接続すると毎回インスタンス作成するので遅い

言語

Cloud9は40種類の開発言語が用意されてるみたいです。
たくさんあるのでこまいことは把握してません。
Cloud Shellの方はGCPのサービスで主にサポートしてる言語が用意されてる感じで謳われてる言語の数はもうちょっと少なそうです。

Cloud ShellはタイミングはGoogle次第ですがインストール済みのツールも勝手にアップデートされていきます。

その他ツール

どちらの環境もgitやらvimやら色々入ってるのでターミナル環境で開発するにはすぐに始められると思います。

料金

Cloud9は有料です。
Cloud Shellは無料です。
Boost Mode使っても無料です。
有料で良いからPersistent Diskのアタッチ出来たら良いのになあ!(2回目)

まとめ

こんな感じで、それぞれ方向性が違いますね。

  • やれることは大体一緒
  • 共通点
    • コンソールある
    • エディタある
    • それぞれのサービスのコマンドラインとかはシームレスに使えるようになっている
  • 違う点
    • Cloud9の方が細かくスペックを指定できる
    • 料金かかる(Cloud9)、料金かからない(Cloud Shell)
    • スペック指定、変更できる

Cloud9で出来ることをGCPでやろうとしたら自分でGCEインスタンス立てる必要がありますね。
ただしそれはフルマネージドではないので自分でメンテする必要がありますね。

Cloud9と似てるって意味ではDatalabの方が近いかも。
こっちはGCEインスタンスを作ってそこでJupyter Notebook動かしてるので、IDEではないですけど同じインスタンスに接続すればみんなでコード共有できます。

どのクラウドを使っているかとか関係ないのなら…

まあ好きな方使えばええんちゃうか?