Google Cloud Platform を触ってみたよ

# Google Cloud Platform(GCP) とは
![スクリーンショット 0026-08-03 13.29.25.png](https://qiita-image-store.s3.amazonaws.com/0/28573/c661604d-24b1-cd15-489f-b0dcc8c74476.png)

* Amazon Web Service(AWS) のような IaaS で google が社内インフラとして使用していたものデベロッパー向けに提供したもの

# GCP の主なコンポーネント
## [Compute Engine](https://cloud.google.com/products/compute-engine/)
* 様々な種類の仮想サーバを構築できる IaaS
* AWS での EC2 に相当する

## [App Engine](https://cloud.google.com/products/app-engine/)
* 様々な言語に対応している PaaS
* 対応言語は Python、Java、PHP、Go

## [Cloud Storage](https://cloud.google.com/products/cloud-storage/)
* 可用性の高いストレージサービス
* AWS での S3 に相当する
* AWS にはアーカイブ用の Glacier などもあるが、それにあたるものはない

## [Cloud SQL](https://cloud.google.com/products/cloud-sql/)
* リレーショナルデータベースサービス
* AWS での RDS に相当
* MySQL にのみ対応

| GCP              | AWS      | 用途 |
|:----------------:|:--------:| :---: |
| Compute Engine   | EC2      | 仮想サーバ |
| Cloud Storage    | S3       | ストレージ |
| Cloud SQL        | RDS      | データベース |
| Cloud DNS        | Route53  | DNS |
| BigQuery         | Redshift | DWH |

# Google Compute Engine を触ってみる
## 必要なもの
* google アカウント
* クレジットカード

## 事前準備
* google にログイン
* [Developers Console](https://console.developers.google.com/project) にログイン
    * 下記画面が表示される
![スクリーンショット 0026-08-03 13.45.47.png](https://qiita-image-store.s3.amazonaws.com/0/28573/a3b6d951-b284-1605-fa35-3fc232e33113.png)

* "プロジェクトを作成" を押し、"プロジェクト名" と "プロジェクト ID" を設定
![スクリーンショット 0026-08-03 13.48.35.png](https://qiita-image-store.s3.amazonaws.com/0/28573/3ab0ace3-1443-71f8-cff1-8af535f157aa.png)
* プロジェクトが作成されると下記のような画面になる
![スクリーンショット 0026-08-03 13.51.15.png](https://qiita-image-store.s3.amazonaws.com/0/28573/03cc0ec3-ad96-b524-7ea6-12cf3fd5039e.png)

* 左側の "課金と設定" を選択し、"課金を有効にする" から必要事項を記載する
* 有効にしたら左側の "API と認証" -> "API" を選び、Google Compute Engine を有効にする

![スクリーンショット 0026-08-03 14.04.09.png](https://qiita-image-store.s3.amazonaws.com/0/28573/6171b1e5-7d33-453c-37ad-845079c5392c.png)

## Compute Engine の用意
* "計算処理" -> "COMPUTE ENGINE" -> "VM インスタンス" を選択し、"インスタンスを作成する" を押下
* 任意に設定を行い、作成する
    * 今回は、サンプルなのでインスタンスタイプを f1-micro にしておく

![スクリーンショット 0026-08-03 14.32.09.png](https://qiita-image-store.s3.amazonaws.com/0/28573/7e1a50ff-e683-bf0f-224d-45a97922f091.png)

* 作成されると次のような画面になる

![スクリーンショット 0026-08-03 19.20.15.png](https://qiita-image-store.s3.amazonaws.com/0/28573/76c8c381-115b-cf9d-fb35-60588e8c4d75.png)

## Google Cloud SDK のインストール
* 自分のマシンに Google Cloud SDK をインストールする

```bash
# Python 2.7.x. が入っている必要がある
$ curl https://sdk.cloud.google.com | bash
```

* インストールされると .bash_profile に下記が追記される

```bash:.bash_profile

# The next line updates PATH for the Google Cloud SDK.
source '/Users/xxx/google-cloud-sdk/path.bash.inc'

# The next line enables bash completion for gcloud.
source '/Users/xxx/google-cloud-sdk/completion.bash.inc'
```

## Compute Engine にログイン

* ターミナルからログインする

```bash
$ gcloud auth login
Your browser has been opened to visit:

...

You are now logged in as [xxx@hogehoge.com].
Your current project is [hello-world].  You can change this setting by running:
  $ gcloud config set project <project>
$ gcloud config set project hello-world
```

* Compute Engine のログインに必要なコマンドを確認

![スクリーンショット 0026-08-03 15.22.24.png](https://qiita-image-store.s3.amazonaws.com/0/28573/956246ad-7b28-5f5d-735c-9dedbf0f0543.png)

* 上記の画面の上部の "SSH" -> "gcutil コマンドを表示を確認"
* 確認したコマンドをターミナルに入力

```bash
$ gcutil --service_version="v1" --project="prefab-wave-661" ssh --zone="asia-east1-a" "instance-1"

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
```

## Nginx をインストール
* Compute Engine 上に Nginx をインストールし、外部から接続してみる

```bash
$ sudo apt-get update
$ sudo apt-get install nginx
$ sudo /etc/init.d/nginx start
Starting nginx: nginx.
```

* ブラウザから外部 IP に接続すると、"Welcome to Nginx!" が確認できる

## 不要になったら
* プロジェクトが不要になったら、"課金と設定" から "課金の無効" と "プロジェクトの削除" をおこなう


# 所感
* AWS と比べると、モニタリングサービスがなかったり、データベースサービスが MySQL のみであったりというところが気になるが、今後に期待








# 参考ページ
* https://cloud.google.com/?hl=ja
* https://developers.google.com/cloud/sdk/
* http://heartbeats.jp/hbblog/2014/06/google-cloud-platform.html