GCPUG KAGAWA #1 に行ってきた 190216

<img src="https://qiita-image-store.s3.amazonaws.com/0/317870/e6c0cc1f-b750-cef9-1eed-9acb5c3e90ec.png" width=50% />

GCPUG KAGAWA #1 にいってきました＾＾
今はGCP試したい気持ちでいっぱいです:sparkles:
間違ってるところご指摘いただけるとありがたいです。:pray:

#１．[GCPUG KAGAWA #1](https://gcpug-kagawa.connpass.com/event/104083/)って？
>[GCPUG（ジーシーパグ）](https://gcpug.jp/)は[Google Cloud Platform（GCP）](https://cloud.google.com/?hl=ja)を普及させることを目的とし、
Google Cloud Platform（GCP）をより良くし、盛り上げていくユーザーグループです。GCPUG（ジーシーパグ）の趣旨に共感できる方であれば、初心者 〜 上級者の方まで、誰でも自由に参加できます。
一緒にGoogle Cloud Platform（GCP）を盛り上げていきましょう！

_connpassより_

#２．どうして行ったの？
- AWS, Azureと比べてGCPのいいところ知りたいな
- GCPってどこにアンテナはってたらいいの？
- G Suiteを会社や個人的にも使ってるので、GCPとどのくらい親和性があるのか知りたいな
    - e.g. GCPで作成したWebアプリケーションの中で、ドキュメントやスプレッドシートを制御できる？
- 認証のあるSPAが簡単に作れるか知りたいな
- Cloud9みたいなクラウドIDEってGCPにあるのかな

#３．どうだった
- GCPは、AWS、Azureと比べて安くて性能のいいサービスを使えるのがいいところ
- GCPは、AIが優れてるよ
- G Suiteを使ってるからといって、GCPでドキュメントやスプレッドシートを扱いやすいとかは特にない
    - でも、GCPからG SuiteのAPIを利用するなどは速いみたい、同じサーバー群の中で動くものだから？
    - 強いて言うなら、Googleアカウント、グループなどの管理がGCPでも同じようにできて楽みたい
    - んー、じゃあAWSでいいかと思った、でも個人的にはG Suite使ってるからGCPに頑張ってもらいたいな・・・、どっちだよ！
- SPA作るには、GAEとかFirebaseとか選択肢があるけど、GAEが今は主流かな
- クラウドIDEはまだない。テキストエディタレベルのしかない。
- 久保さんのGKEデモが見れなくて残念。今度は是非お願いしまーっす！！！＞人＜


#４．聞いたこと
## 未経験者向けGCP全般紹介 / [クラウドエース株式会社](https://www.cloud-ace.jp/) 会長 吉積 礼敏さん
<img src="https://qiita-image-store.s3.amazonaws.com/0/317870/e967888c-9ff4-22ff-6beb-8bd712cd55d4.png" width=50% />
<img src="https://qiita-image-store.s3.amazonaws.com/0/317870/62e4eca3-d973-8418-3ded-c71a8d460a50.png" width=50% />

### 日本初のトリプルホルダー

- Associate Cloud Engineer
- Professional Data Engineer
- Professional Cloud Architect

Professional Cloud Architect：アメリカで最も稼げるIT資格になった
みんなProfessional Cloud Architectをとってアメリカに行こう

GAEのPaaSに目覚めて飛びついた

### Google Cloud

- G Suite：ユーザー単位課金
- GCP：API単位課金

2年がかりで書いた”GCPの教科書”が来月出版されるよ
東京リージョンができる前から書いてた
12/13に開催したGCP One Dayには約800人集まった

### Googleのクラウドとは？

Googleの検索がベースにある
当初、ページランクというアルゴリズムがすごいと言われていた
インフラも一らか元々作っていた。20年くらい

超高速でレスポンスタイムが速い
レイテンシ、ターンアラウンドタイムが小さくなるようにしている
物理層、プロトコル、ブラウザにまで
全文検索してインデックス作る大規模処理をずっとやってた
だからHadoopとかの論文がGoogleから出てきた

### GCPのネットワーク

物理的な層が世界中に広がっている
インドネシアも増えてるはず

何十億のユーザーが使っても落ちないインフラが根底にある
パブリッククラウド前提で作ってきたインフラ
マイクロサービスで作っており、ベストエフォート型で８割稼働している
どこで稼働しててもよくて鍵がかかってない

### GCPの特徴

クオリティーがよくて、スケーラビリティが高くて、コストも低い

k8s使うならGoogleがいいよねってことで伸びてる
Cloud Spannerいい

### Googleの機械学習における強み

TensorFlow
膨大なデータ

### GCE

ライブマイグレーション
急激なアクセスに強い
コスト

### GAE

開発、運用が楽！

### Google Cloud Storage

他のクラウドと遜色ない

### BigQuery

デファクトになってる
とにかく安い

### 三社の比較　Magic Quadrant

2018年にはLeadarの分類に
プライスでは圧勝している

### セキュリティの順位

AWS>GCP>Azure

### Spanner初事例

[フルクル](https://www.fulcul.com/)
振るとタクシーが来るサービス
3秒おきに4000台のアクセスがある

第一子の娘さんご誕生おめでとうございます！＾＾

<img src="https://qiita-image-store.s3.amazonaws.com/0/317870/1738617c-e626-a0fb-102f-2ed67daed6b0.png" width=50% />

___

## Webサイト設計と実践 on GCP 初級編 / グーグル・クラウド・ジャパン合同会社 久保智夫さん
<img src="https://qiita-image-store.s3.amazonaws.com/0/317870/2fad7878-db9b-4360-6678-5649c6128d4a.png" width=50% />

### アジェンダ

- GCPで構築するWebサイト
- GCS
- GCE
- GKE
- DNS

### 設計する時の悩み

- 楽したい(managed)
    - OS管理
    - ミドルウェア
    - スケール
- 自由に作りたい(flexibility)
    - 言語、ミドルウェア、OSなど

### How about GCP?

- Compute Engine(Static, Dynamic)
- K8s Engine(Static, Dynamic)
- Firebase Hosting (Static)
- Cloud Storage (Static)
- App Engine(Static, Dynamic)

### GCE

ライブマイグレーション

- 物理ホストのメンテナンスの必要がある時、計画停止を裏側でやってVMプロセスを移動している
- ただし予期せぬメンテナンスが発生することはあるので設計で考慮する必要はある

特定のApp/MiddlewareがプリインストールされたVMをMarket Placeからローンチすることも可能
当然OSから上はユーザー管理

### GKE

CaaSに分類される
k8sはGoogleが考案した

### GAE

Java, Puthon, Go, Node.js, PHPが利用できるSE
仮想マシンベースのStandard Environment (GAE SE)と、Docker コンテナベースのFlexible Environment (GAE FE)がある

### GCS

コンテツをバケットにアップしてコンテンツの公開設定するだけで、発信するだけのWebサイトなら作成できる
ただし、HTTPに限定される
LoadBalancingのバックエンドに配置することで間接的にHTTPSも可能
Cloud DNSでCNAMEレコード追加することにより独自ドメインも可能

### Firebase Hosting

mBaaS
独自ドメインのSSL証明書を無料でプロビジョニング可能
ただし、まだ東京リージョンはない
CDN利用することで低いレイテンシで利用することは可能

### デモ！

#### GCPで構築するWebサイト

Cloud Shellからコマンドラインで進める

1. バケットの作成
    - バケット名は全世界でユニークな必要がある
    - `gsutil mb your-bucket-name`
2. コンテンツのアップロード
    - `gsutil cp index.html gs://your-bucket-name`
        - Web UIからもCloud ShellのVMにファイルのアップロードもできる
3. 公開設定
    - コンテンツ配置したら公開設定する必要がある
    - ドメインでバケット作成している場合
        - `gsutil web set -m index.html -e 404.html gs://your-bucket-name`
    - 通常の名前でバケット作成している場合
        - `gsutil acl set public-read gs://your-bucket-name/index.html`
        - `https://storage.googleapis.com/your-bucket-name/index.html`にアクセスすると見れる

#### GCEを使ったWebサイト

1. VMインスタンスを作成
    - インスタンス名入力
    - リージョン選択
        - 東京と今年、大阪リージョンも解説される
    - ゾーン選択
    - マシンタイプ選択
    - イメージ選択
    - ファイアウォール設定
        - HTTPトラフィック許可
        - HTTPSトラフィック許可
    - ブートディスク設定
    - 作成！
        - これでサーバーにログイン可能になる
        - SSH接続でもいいが、Cloud Shellからアクセスすることができる！これ便利だな
2. Webコンテンツ作成
    - `sudo apt-get inastall apache2`
    - `sudo systemctl start apache2`
    - `ps -ef|grep apache`
    - IPv6アドレスでしかLISTENしてなかったので表示できなかった

### まとめ

サービスの用途に応じたアーキテクチャを選択しましょう
Scrap & BuildでAgileなサービスを立ち上げよう

___

## GAE/Goの概要説明とデプロイデモ / Ryuji Iwataさん
<img src="https://qiita-image-store.s3.amazonaws.com/0/317870/e8283350-aa0a-3dfc-a355-31b3958c8460.png" width=50% />

### GAEとは

インフラ、運用をGoogleに任せてWebアプリ開発に集中できるサービス
OS、ミドルウェアはGoogleにお任せ
アクセス量に合わせてインスタンス数も自動でスケール→オートスケール
簡単なWebアプリなら無料枠で収まる

### スタンダード環境

独自コンテナーで動作
GCPサービスと連携しやすい
使用できるライブラリーや機能に制限がある
対応言語やバージョンに制限がある

### フレキシブル環境

GCEのDockerコンテナーで動作
GCPサービスと連携しにくい
使用できるライブラリーや機能に制限がない
対応言語も幅広い

### 第二世代のスタンダード環境

gVisorベースのコンテナー
使用できるライブラリーや機能がフレキシブル環境並みに緩和
対応言語も増加

### GAEでのGoの特徴

処理速度が速い
Webアプリの起動で待たされない
リソースの使用時間が短い→課金額の節約になる
コンテナー技術との相性がいい

多くのミドルウェアがGoで開発されている

- Docker
- Kubernates
- gVisor

### デモ！

Building a Go App on App Engineに沿って進める

1. Cloud SDKインストール
2. Goインストール
3. App Engin Goコンポーネントインストール
4. GCPプロジェクト作成
    1. プロジェクト作成
    2. GAEアプリ作成
    3. プロジェクトの請求先情報を設定
5. Webアプリ作成
    1. go-app/ディレクトリ作成
        - `mkdir go-app`
    2. go-app/ディレクトリ配下に移動
        - `cd go-app`
    3. app.yamlファイル作成
        - `vim app.yaml`
        - `runtime: go111`
    4. プログラム作成
        - `vim main.go`
    5. 動作確認
        - 第二世代のGAE/Goは、Gode書いたHTTPサーバーがGAE/Goで動作する
        - ローカルで確認
            - `go fmt main.go`でフォーマットしてくれる
            - `go run main.go`で実行