【Google Cloud】Google Cloud Platform 試してみよう

# インフラ環境
- Titan
    - 独自チップ
    - サーバ起動過程で動作し、ホストのブートファームウェアフラッシュに改ざんがないかなどの確認の中で利用される
    - Titanセキュリティキーとして、２段階認証プロセスによってIT管理者などの高い権限を持つユーザを保護するデバイスにも生かされている
- Linuxベースの独自OS 
    - 無駄なコンポーネントを排除＝軽量高速、セキュアな実行環境を実現
    - 展開されている Googleの各サービスは、基本的にすべて独自のコンテナ技術上で動作
- 独自ネットワーク
    - CLOSトポロジーネットワーク（車内名称：Jupiter）では、２分割待機幅で１ペタビット／秒を実現
    - 光ケーブル
        - 海底ケーブルとの説ゼクでブローバルスケールのネットワーク構成
    - 安定した通信品質と幅広い選択肢の提供
- セキュリティ
    - 多層セキュリティモデル
        - デフォルトで複数のレイヤで暗号化
        - 各ストレージデバイスでの暗号化
        - データベースでの暗号化
        - 分散ファイルシステムレイヤでの暗号化
            - チャンク単位に分割され、それぞれ別の暗号鍵で暗号化され保存される
            - チャンクに更新があった場合は元の鍵を再利用せず、新しい鍵を使用してチャンクを更新する
    - パフォーマンス劣化なし

# サービス提供
2019/6/17時点

- リージョン：20（東京、大阪あり、ディザスタリカバリ可能）
- ゾーン：61
- PoP（Point of Presence：通信事業者との接続点）：130

## サービスの地理的特徴
- 特定のリージョンやゾーンを指定して利用するリソースだけでなく、マルチリージョンリソースや、グローバルリソースも利用可能
- 様々な場所からサービスを利用するユーザに最適なリソースを使ってサービスを提供する

|リソースの種類|主な特徴|具体例|
|:---|:---|:---|
|ゾーンリソース|単一のゾーン内で動作して単体ではゾーン障害に対する耐障害性がない|Google Compute Engineの単一インスタンス|
|リージョンリソース|単一のリージョン内の複数ゾーン間での冗長性が担保されている|Google App Engineのサービス|
|マルチリージョンリソース|リージョン内及びリージョン間での冗長性が担保されていて、レイテンシと整合性モデルのトレードオフはプロダクトによって異なり明記されている|Cloud Spanner|
|グローバルリソース|ロケーションに依存せずグローバルで単一のエンドポイントや単一のエンティティなどを利用できる|Cloud Pub/Sub|

## グローバルリソース
### Virtual Private Vloud（VPC）
- 特定のリージョンに日も付かないグローバルなリソース
- プライベートアドレスで世界中のリージョンに接続されたVCPネットワークがデフォルトで使用出来る
- 光ケーブル網上に論理的に構成済み
- 十分な帯域と高品質なグローバルネットワークが使用出来る

# サーバーレス・No-Ops指向
- サービスでやりたいこと以外のことを極力やらずにシステムを開発・運用出来る
    - 例：Webアプリケーションを作る場合
        - どんなサービスを提供するかだけを考えて開発出来る
        - 動かすために必要なVMインスタンスの台数見積もり、OSの環境設定、ネットワーク設定などは不要
    - 例：データベース分析の場合
        - 分析したいデータを保存してクエリを書くだけ
        - データ分析基盤の構成、データ構造、チューニングを考える必要がない

# 提供サービス
- コンピュート

    |サービス名|説明|
|:---|:---|
|Compute Engine|仮想マシンや仮想マシン用ストレージ、ネットワークサービス|
|App Engine|スケーラビリティの高いサーバーレス・No-OpsのWebアプリ向けバックエンド|
|Google Kubernetes Engine|Kubernetesのマネージドサービス|
|Cloud Functions|イベントドリブンで処理・実行が可能なサーバレス環境|

- データベース

    |サービス名|説明|
|:---|:--|
|Cloud Spanner|データをグローバルで複製・同期可能なリレーショナルDBと NoSQLの特性を備えた DB|
|Cloud SQL|MySQL/PostgreSQLのマネージドサービス|
|Cloud Bigtable|低レイテンシな HBase互換の NoSQLDB|
|Cloud Memorystore for Redis|インメモリ型データストアである Redisのマネージドサービス|

- ビッグデータ

    |サービス名|説明|
|:---|:--|
|BigQuery|ビッグデータ分析用並列分散データウェアハウス|
|Cloud Dataflow|ストリーム／バッチデータ処理のマネージドサービス|
|Cloud Dataproc|Spark/Hadoopのマネージドサービス|
|Cloud Pub/Sub|グローバルかつリアルタイムに集めるデータを保管・処理するメッセージングサービス|

- 機械学習

    |サービス名|説明|
|:---|:--|
|AI Platform Training|機械学習のモデルをトレーニングするためのマネージドサービス|
|Cloud Speech-to-Text|音声をテキストに変換するAPIサービス|
|Cloud Vision API|画像認識用APIサービス（ラベル付、文字抽出、顔検出）|
|Cloud AutoML|高品質かつカスタマーニーズに合わせた独自の機械学習モデル構築サービス|

# プロジェクト
- リソースや APIの管理を行う
    - アクセス権限
    - リソース、APIの利用上限値
    - 請求先アカウント
        - 支払い方法

# アカウント
- Cloud IAM
    - アクセス権限
- Googleアカウント
    - 開発者、管理者
    - G Suiteアカウント
    - IDaaS（Identity as a Service）サービスの Cloud Identityのアカウント
- サービスアカウント
    - アプリケーション実行アカウント
        - アクセス権限
- Googleグループ
    - Googleアカウントとサービスアカウントをグループ化
        - ポリシー

# GCPのはじめかた
- Web UI
    - Cloud Console（Webユーザインターフェース）
        - Webブラウザからアクセス
        - プロジェクトの作成や割り当て上限値の更新（基本的な操作が可能）
        - モニタリング機能、障害情報など
- CLI
    - Cloud SDK/Cloud Shell（コマンドラインインターフェース）
        - gcloud、gsutil、bqコマンドラインツールなど
        - Compute Engine、Cloud Storage、BigQueryなどのプロダクトやサービスにコマンドラインからアクセス可能
- API
    - REST API
        - Python、Goなどプログラミング言語からGCPのプロダクトやサービスにアクセスできる
        - Googleから各言語向けのクライアントライブラリが提供されており、開発者はこれらのライブラリを使用してアプリケーションを開発できる
       
## Googleアカウントの作成
持っていたので省略

## Cloud Consoleへのアクセス
『https://console.cloud.google.com』にアクセス
<img width="1230" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/eee4289b-82b5-a712-8b2d-975454669db3.png">

12ヶ月無料トライアルを登録する
<img width="1358" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/005fd873-f363-fa12-ee5c-a9460afd1a93.png">

<img width="1042" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/76c82505-81b5-69b2-75a2-bf5402920866.png">

個人情報をもろもろ入力して『同意』すると登録完了

<img width="559" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/c1d65e23-aa8f-4ebd-c387-7b41ea936e1d.png">
<img width="1363" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/4ece6f2d-4566-9e3c-baf5-78d8ed06cd72.png">

無料枠について：https://cloud.google.com/free/

## プロジェクトの作成
<img width="995" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/a3b92af9-289a-35ea-2f9c-f977e3caa21c.png">
<img width="756" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/9e35b970-8989-d22d-a028-ae0aeff4585c.png">
<img width="567" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/2d464ab7-0459-b4d3-835f-23640be38776.png">
<img width="746" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/d7cb40b0-2db5-055f-ef84-c4286478b3a9.png">

<img width="660" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141308/2a382636-98b6-a9af-aa86-0458cc12917b.png">