GCP ( Google Cloud Platform ) と AWS を比較しながら学ぶクラウドサービス入門 研修コースに参加してみた

今回参加したコースは GCP と AWS を比較しながら学ぶクラウドサービス入門 です。
年々、クラウドを利用する機会が増えていますね。クラウドといえば AWS が人気ですが、障害や災害対応だけでなく用途別にマルチクラウドで構成する企業もチラホラ見受けられるようになりました。
AWS・オンプレと GCP を VPN で相互接続する際の勘所 – エムスリーテックブログ
AWS と GCP を VPN でつないでみたら、マルチクラウドの夢が広がった話 – Hatena Developer Blog
書き込みがあるワークロードにおける ZOZOTOWN マルチクラウド構想とその検討停止について – Qiita
その一つとして、 Google のクラウドサービス「 Google Cloud Platform ( GCP ) 」も、特にビッグデータや AI などのサービスを中心に、利用が増えています。
このコースでは、 GCP の特徴や出来ることを AWS とマッピング・比較しながら学びました。特に、数が多すぎて把握しきれないサービスをデータベースやストレージなどの区分に分けて、特徴やコストを比較できたので、 GCP と AWS との違いがわかりました。
また、 GCP で実際にプロジェクトやインスタンスを作る演習も行い、 GCP デビューもしました!
では、どのようなコースだったのか、レポートします!
もくじ
コース情報
想定している受講者 | Linux, ネットワーク知識があると更に良い |
---|---|
受講目標 |
|
講師紹介
前回の Docker に続き、 一戸 英男 さんが登壇されました。

一戸 英男
「とにかく昔からサーバ構築が大好き」から現場に役立つベストセラーが誕生。研修でも明日から現場で使える技術を教えます
ちなみに一戸さんはネットスケープにも在籍されていたとのこと、あとでご経歴を調べると、 1997 年 ~ 1998 年にいらっしゃったようで、あの OSS の衝撃、ネットスケープ ナビゲーターのソースコード公開時に中の人だったのかも知れません。
ちょっと個人的に OSS に衝撃を受けた人なので、胸熱です。
今日の内容
冒頭にも書いたことですが、今日の内容を紹介いただきました。
AWS とのマッピング・比較を行いますので、受講者に AWS の利用経験を伺うと、 20 名ほどのご参加のうち、 2 名の方が経験ありとチャットでお答えされました。
GCP とは
まずは GCP のサービスの特徴を紹介いただきました。
- 2008 年からスタート( AWS から 2 年遅い)
- AWS の方がシェアや大手企業の実績が多い
- 検索エンジン / Gmail などでの大規模・高負荷での運用実績
- 世界で検索エンジンのサーバは 290 万台あると言われている
- 高耐用 / スケーラビリティがある
- AI / 機械学習サービスは先行・使いやすい・安定
- GPU ( TPU ) / TensorFlow / BigQuery など
- Web コンソールなど CLI は GCP の方が圧倒的に使いやすい
スケーラビリティ
- スケーラビリティそのものは GCP / AWS とあまり変わりない
- GCP は Live Migration ができる
- ホストしているサーバを稼働停止なしで移設できる
- 冗長性 / ロードバランシングでの負荷テストは、ほぼ無しで OK
- 低コスト/短期の料金プランがある
- VPC ( Virtural Private Cloud ) なので、社外公開するアプリケーションに使いやすい
- AWS はプライベート ( Virtual Network ) なので、どちらかというと社内向け
Pros / Coons
- Pros は先程の通り
- Cons
- 以前は東京リージョンのみだったが、大阪リージョンが増えたので遜色ない状態
- 公式ドキュメントに英語が多い
- サポートも 9:00 – 19:00 のみ日本語 ( それ以外の時間帯は英語圏に転送されていた )
- プレミアサポートにすると日本語で 24 時間対応
GCP と AWS のサービスをマッピング・比較
まずは GCP にどんなサービスがあるのか、全部で 170 ~ 180 あるので、分野をある程度絞った上で、さらにそれぞれを一言で紹介いただきました。
- コンピューティング
- IaaS: Google Compute Engine
- PaaS: Google App Engine
- Heroku のようなもの
- コンテナエンジン: Google Container Engine
- Docker を動かすもの
- Kubernetes ( Google が開発したコンテナ管理 OSS) を使用
- ストレージ
- Cloud Storage
- AWS の S3 のようなもの
- Cloud SQL
- MySQL / PostgreSQL に対応
- Cloud Datastore
- NoSQL
- Cloud Storage
- データ解析
- BigQuery
- ユーザの行動ログなど大量のデータを高速に取得できる
- それらを分析すると、新しい発見に繋がる可能性がある -> DX に欠かせない
- BigQuery
- その他
- Cloud DNS
- AWS Route53 と同じようなもの
- DNS レコードでカバーしている範囲が広い
- ちなみに既存の DNS を変える必要はない
- Cloud DNS
AWS と GCP のサービス紹介と比較
AWS もサービスが 200 以上あるため、コンピューティングとストレージなどの項目でマッピングいただき、一戸さんの目線で比較していただきました。
まずは全般的な印象です。
- GCP
- 高負荷に十分耐えうる
- CLI が使いやすい
- 開発者向けな雰囲気がある
- AWS
- アクセスポイントが多数ある
- CLI が使いにくい
- ユーザ向けな雰囲気がある
また今までは AWS が圧倒的に使われていましたが、 2020 年になり、機械学習・AI・BigQuery などの需要から GCP が増加傾向にあるとのことでした。
コンピューティング
- コンテナで違い
- AWS は選定も含め、面倒
- mBaaS (スマートフォン向け。mobile Backend as a Service )
- Firebase のシェアが高い
- モバイルアプリに必要なものがすべて揃っている
mBaaS については一戸さんも注目されているとのこと、興味があって調べてみると、 AWS Amplify も Firebase とはまた違った魅力がありました。
具体的には、 AWS Lambda と AWS AppSync ( GraphQL サーバ ) を組み合わせると、リクエスト – レスポンスを AppSync に集約でき、サーバレスらしくリクエストがあったときにだけ起動/課金されるため低コストで運用ができます。
また AppSync から Dynamo や RDS にデータストアもしやすいため、技術的な負債になりにくいようです。ちょっとこの辺は動きが速いので、 SEカレッジでカジュアルに触れると良さそうですが、講師の方もまとめるのが大変ですよね。。
ストレージ
- Amazon S3 は WebDAV (ファイル共有) に対応
- Cloud Storage はやりにくい
- ファイルシステム
- どちらも NFS ( Unix / Linux のファイルシステム) として使える
- 注意したいのは AWS のサービスはファイルロックが出来ない
- 用語解説
- Nearline : 短期で使うもの (バックアップ)
- Coldline : 長期で使うもの (二次バックアップ)
DB
- RDBMS
- GCP は Oracle に対応していない
- ここで大手企業を取りこぼしている可能性がありそう
- Oracle が OSS でないことも影響している
- GCP は Oracle に対応していない
- NoSQL
- NoSQL と言っても Key – Value / Graph / Document の 3 種類
- それぞれ SQL のような統一されたクエリはない(一部 SQL ライクなものはある)
- 単純な構造のためスケールしやすい。特に Write (書き込み) 処理
- ただし、 ACID 属性を担保しない
- NewSQL
- Cloud Spanner
- ACID 属性を担保しながら、 Write が速い( !! )
- RDBMS と NoSQL を組み合わせたようなもの
- SQL ライクに書ける( !! )
- Cloud Spanner
ネットワーク
- 高トラフィックでなければ load Balancer は特に遜色なし
- ただし高負荷になると AWS はチューニングが必要
- GCP は特に設定無しで高負荷対応できる
- CDN
- Cloud CDN のほうが使いやすい
コスト
- GCP はコストシミュレーション が Web 上で出来る
- Compute Engine でやってみた
- Instances: サーバ台数 1
- Operating System / Software: Linux
- series: CPU e2
- memory: Standard 16 GB
- location: DC の場所 東京
- 結果 $ 79.07 / per 1 month
月額比較
- 1 ヶ月あたりは小幅な値段幅でも、使用期間と台数が増えるとコストに結構な差が出る
- こういったこともあって、米国では AWS から一部のサービスを GCP に移行しているケースが出ている (外資にお勤めの一戸さんご友人談)
- フルリプレイスではなく、 GCP と AWS の良いところを組み合わせる
GCP の使い方
ここからは実際に GCP でインスタンスを構築してみます。
その前に、このコースでは受講者に GCP のアカウントを事前に作成頂き、無料枠の中で演習したのですが、その無料枠について AWS との違いを解説いただきました。
無料枠の違い
- AWS : サービスによって無料枠が変わる ex. T2 マクロ: メモリ 1 GB / ディスク 8 GB
- GCP : 年間 $300 (実質 27000 ~ 28000 円分)の無料枠の中でタイプやスペックを自由に選べる
一戸さんもおっしゃっていましたが、 GCP は AWS に比べて、制限がない分、使いやすいですね。
インスタンス 構築手順
- Google Cloud Platform にログイン
- 新しいプロジェクトを作成
- メニューから Compute Engine > VM インスタンス を選択
- インスタンスを作成
- 名前 を入力(任意)
- リージョンを選択
- シリーズ デフォルト E2 のままでOK
- マシンタイプは今回 e2-small を選択(他にもプランがある)
- ブートディスク
- OS のディストリビューションを選択できる
- ここでは CentOS 8 を選択
- ここでは 永続ディスクは 30 GB を選択
- ファイアウォールは http / https どちらも選択
- 作成ボタン
インスタンスが作成されました!
一戸さんいわく、 GCP は AWS より手順が数ステップ少なくて簡単だそうです。
- ここで表示される [外部 IP ] は揮発性
- shutdown / reboot すると、動的に変わる
- 永続的な IP を設定するには
- 右の [ more_vert ] メニューから [ネットワークの詳細の表示] を選択
- ネットワークインターフェイスが表示されるので、メニューから [外部 IP アドレス] を選択
- 現在の外部 IP アドレスが表示されるので、 [静的アドレスを予約] を選択
- 名前 を入力 (任意)
- リージョンを日本に変更
- 接続先に 先のインスタンス を選択
- 予約 を押す
- 右の [ more_vert ] メニューから [ネットワークの詳細の表示] を選択
しばらく待つと、外部 IP アドレスが固定されました。
続いて、ファイアウォールの設定です。
- デフォルトでもファイアウォールのルールがある
- 独自に追加する場合は、 ファイアウォール ルールを作成 を選択
- 名前 を入力(任意)
- ターゲット を 指定されたサービスアカウント に変更
- ソースフィルタ を サービスアカウント
- プロトコルとポート のチェックボックスに tcp を選択、ポート番号 8080 を入力
- 作成ボタン
ルールが追加されました!
ssh 接続する
では、作ったインスタンスに入ってみましょう。
公開鍵 / 秘密鍵を生成
- VM インスタンスの画面から SSH ボタンを押す
- ブラウザ上のターミナルが立ち上がる
- GCP でログインしたユーザ名でログインしている
$ whoami username
- GCP でログインしたユーザ名でログインしている
- ディレクトリを表示すると、すでに .ssh ディレクトリが生成されている
$ ls -la total 12 drwx------. 3 username username 74 Nov 9 05:30 . drwxr-xr-x. 3 root root 27 Nov 9 05:30 .. -rw-r--r--. 1 username username 18 Nov 8 2019 .bash_logout -rw-r--r--. 1 username username 141 Nov 8 2019 .bash_profile -rw-r--r--. 1 username username 312 Nov 8 2019 .bashrc drwx------. 2 username username 6 Nov 9 05:34 .ssh
- .ssh ディレクトリに移動
cd .ssh
- default でも key が用意されている
- しかし、 SHA-1 の RSA 鍵 ( 1024 bit ) なので、あまりオススメしない
- ECDSA で鍵生成する
ssh-keygen -t ecdsa
- パスフレーズはなし
- そもそも鍵がしっかり生成されていれば必要ない
$ ssh-keygen -t ecdsa Generating public/private ecdsa key pair. Enter file in which to save the key (/home/username/.ssh/id_ecdsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/username/.ssh/id_ecdsa. Your public key has been saved in /home/username/.ssh/id_ecdsa.pub. The key fingerprint is: SHA256:hogehogehohoeo129012901920910 username@my-first-gcp The key's randomart image is: +---[ECDSA 256]---+ | o.. E | # 中略 |o. B.X o | |.oo.B+* | +----[SHA256]-----+
- 一旦確認
$ ll total 8 -rw-------. 1 username username 525 Nov 9 05:46 id_ecdsa -rw-r--r--. 1 username username 188 Nov 9 05:46 id_ecdsa.pub
- 生成された公開鍵を別ファイル authorized_keys (指定)に出力
$ cat id_ecdsa.pub > authorized_keys $ ll total 12 -rw-rw-r--. 1 username username 188 Nov 9 05:50 authorized_keys -rw-------. 1 username username 525 Nov 9 05:46 id_ecdsa -rw-r--r--. 1 username username 188 Nov 9 05:46 id_ecdsa.pub
- chmod でアクセス権を変更
$ chmod 600 authorized_keys
- id_ecdsa を別ファイル (.pem ファイル) にコピペし、 .ssh 配下の id_ecdsa* を削除
ssh してコマンド操作
次に、これも予めインストールしてあった Rlogin を使って、作ったインスタンスで作業してみます。
- Rlogin から ssh ログイン
- エントリー名を入力 (任意)
- ホスト名 に先程の 外部IP を入力
- SSH 認証鍵 を 先程作成した .pem ファイルを指定
- OK ボタンを押す -> ターミナルが開いた!
- top コマンドを試してみる
top - 07:21:14 up 4:02, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 1824.4 total, 1084.8 free, 245.8 used, 493.9 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1428.6 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1050 root 20 0 119220 20404 9736 S 0.3 1.1 0:06.72 google_osconfig 1393 root 20 0 87552 9836 7596 S 0.3 0.5 0:00.45 systemd-logind 1 root 20 0 179276 13620 9140 S 0.0 0.7 0:02.65 systemd
- df コマンドも試してみる
$ df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 917452 0 917452 0% /dev tmpfs 934104 0 934104 0% /dev/shm tmpfs 934104 8568 925536 1% /run tmpfs 934104 0 934104 0% /sys/fs/cgroup /dev/sda2 31240240 2623944 28616296 9% / /dev/sda1 204580 7020 197560 4% /boot/efi tmpfs 186820 0 186820 0% /run/user/1000
ここまで操作したところで、最後にチャットで質疑応答を行い、このコースは修了しました。
まとめ
このコースでは、 GCP について AWS との違いを中心にサービスの概要を知り、実際にインスタンスを作ってみました。
現在では、 GCP / AWS などを組み合わせたマルチクラウド構成がチラホラ出てきていますので、 AWS だけでなく GCP についても強みや必要に応じて使いわけられるようになってくるでしょう。
そういった際に、 GCP / AWS ともに物凄い数のサービスが提供されているので、今回のコースのようにマッピングと特徴を把握しておくだけでも、関連ニュースを見たときの調べ方も変わり、何が強みなのか読み解きやすくなるので、とても自分の知識を整理しやすくなります。
エンタープライズ領域ではクラウド移行はまだまだ続いていますので、これからクラウドに携わる方や、ちょっと変化が激しすぎて様子見してらっしゃるかたなどには、とてもオススメです!

SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。