Google Cloud Shell の実態

Google Cloud Platform (以下GCP) には、Google Compute Engine (以下GCE) やGoogle App Engineを始めとする数多くのサービスが用意されています。そしてそれらの多くは、ブラウザ上で実行可能なGoogle Cloud Shell (以下Cloud Shell) を利用することで処理することができました。 Google Cloud Shell

Google Cloud Shell

このCloud ShellはGCPのサービスを操作する以外にどのようなことができるのでしょうか。その中身を紐解いていくと、Cloud Shellがすごく強力なツールであることが見えてきます。

マシンスペック

まずこのCloud Shellが動いている環境ですが、GCEのg1-smallタイプ (共有vCPU x 1, メモリ1.7 GB) のインスタンス上で動いています。GCEを利用しているなら料金が気になるところですが、特別な設定など必要なく最初からCloud Shellは無料で利用することができます。それではCloud Shellよりそのスペックを確認しましょう。
$ cat /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU @ 2.50GHz
cpu MHz : 2500.000
cache size : 30720 KB
cpu cores : 1

$ cat /proc/meminfo
MemTotal: 1735916 kB
MemFree: 562684 kB
MemAvailable: 1250564 kB

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 35G 0 disk
├─sda1 8:1 30.9G 0 part /var/lib/docker
├─sda2 8:2 0 16M 1 part
├─sda3 8:3 0 2G 1 part
├─sda4 8:4 0 16M 0 part
├─sda5 8:5 0 2G 0 part
├─sda6 8:6 512B 0 part
├─sda7 8:7 0 512B 0 part
├─sda8 8:8 16M 0 part
├─sda9 8:9 0 512B 0 part
├─sda10 8:10 0 512B 0 part
├─sda11 8:11 8M 0 part
└─sda12 8:12 0 32M 0 part
sdb 8:16 0 5G 0 disk
└─sdb1 8:17 0 5G 0 part /home

$ df -h --total
Filesystem Size Used Avail Use% Mounted on
overlay 31G 22G 8.3G 73% /
tmpfs 848M 0 848M 0% /dev
tmpfs 848M 0 848M 0% /sys/fs/cgroup
/dev/sda1 31G 22G 8.3G 73% /root
/dev/sdb1 4.8G 13M 4.6G 1% /home
overlayfs 1.0M 104K 920K 11% /etc/ssh/keys
tmpfs 848M 712K 847M 1% /run/metrics
shm 64M 0 64M 0% /dev/shm
overlayfs 1.0M 104K 920K 11% /etc/ssh/ssh_host_dsa_key
tmpfs 848M 0 848M 0% /run/google/devshell
total 69G 44G 25G 65% -
CPUはIntel Xeon 2.5 GHz、メモリは1.7 GB、ストレージは69 GBと言うことがわかります。また /home には4.8 GB割り当てられていますが、公式によると5 GBの永続ディスクストレージが、 home ディレクトリに 割り当てられているようです。 Cloud Shellは、GCPのためのインタラクティブなシェル環境であるため、長時間に渡りアクティブな状態が継続されることが想定されていません。そのため、Cloud Shellセッションが1時間以上非アクティブな状態になると終了します。そこでソースコードなど長期に渡り利用したいデータは、homeディレクトリに割り当てられた永続ディスクを利用することになっています。しかし、長期に渡りCloud Shellが利用されない場合は、永続ストレージがリサイクルされることがあります。その場合は、リサイクル前にメールが届く仕組みになっているようです。

ブーストモード

またCloud Shellにはブーストモードがあり、n1-standard-1タイプ (vCPU x 1, メモリ3.75 GB) のインスタンス上で動作させることができます。そのときのマシンスペックを確認してみます。
$ cat /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU @ 2.50GHz
cpu MHz : 2500.000
cache size : 30720 KB

$ cat /proc/meminfo
MemTotal: 3787588 kB
MemFree: 2127636 kB
MemAvailable: 3225208 kB
スペック上はg1-smallと同じCPU表記ですが、共有ではなくなっているようです。またメモリはg1-smallの倍以上のサイズになっています。このブーストモードは24時間続くようです。処理速度を必要とするバッチ作業などで利用するといいでしょう。

OS

上記でマシンスペックを確認したとき、Linuxコマンドを利用していることに気づいた方もいるでしょう。そうです、このCloud Shellは、Linuxのシェル環境になります。それではどのようなOSなのか確認しましょう。
$ cat /etc/debian_version
9.5

$ uname -m
x86_64
OSはDebian 64bitベース、バージョンは9.5と言うことがわかります。これで基本的なLinuxコマンドが利用可能ということがわかりましたね。

プログラミング言語

このCloud Shellには、すでにプログラミング言語もインストールされています。それぞれどのようなバージョンが利用できるか確認しましょう。
$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

$ python --version
Python 2.7.13

$ python3 --version
Python 3.5.3

$ php --version
PHP 7.0.30-0+deb9u1 (cli) (built: Jun 14 2018 13:50:25) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.30-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies

$ node --version
v8.9.4

$ go version
go version go1.10 linux/amd64

$ dotnet --version
2.0.0
GCEなどでインスタンスを立ち上げた後に必要なプログラミング言語をインストールすることは面倒でしたが、Cloud Shellでは最初から主なプログラミング言語がインストールされていることは嬉しいですね。

まとめ

上記のようにCloud Shellは非常に強力なツールであることを紹介しました。
  • GCEのインスタンスのDebianベースのOSが利用されている。
  • 無料でGCE g1-smallタイプのインスタンスを利用することができる。
  • ブーストモードを利用することでマシンスペックを上げることできる。
  • 数多くのプログラミング言語が標準で利用可能である。
その他にも多くの利用メリットがありますので、公式の下記ドキュメントを参考にしてみて下さい。 https://cloud.google.com/shell/
» エンジニア登録はこちら