GCPの全体像をざっくり把握する

Assosiate Cloud Engineer 取得の勉強中にやった内容です。取得してしまうと、1ヶ月くらいで忘れてしまったので、残しておきます。

QwikLabs等でいきなり実際に触ってみるのも勉強になるのですが、個人的には全体像を掴んでからの方が、
より効率的に学習を進められた印象があります。




## サービス
他のクラウドサービス同様に、GCPでも非常に多くのサービスが提供されています。
大雑把すぎる感はありますが、演算を行うコンピューティング、
データの永続化を行うストレージやデータベース、インターネット等と繋げたりするネットワーキング、
管理ツール群や、その他のAPI、等のように分類することができると思われます。
あとは、各カテゴリで要件に応じたサービスを選択、組み合わせるイメージかと思います。
(LB + GCE + Cloud SQLとか、GKE + Cloud Spannerとか。)

![無題のプレゼンテーション.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525959/fd1f57b1-ff90-125b-a14a-9da6546997f2.png)


### コンピューティング

|サービス|概要|
|:--|:--|
|Compute Engine(GCE)|IaaSサービス。|
|Kubernetes Engine(GKE)|Kubernetesのマネージドサービス。|
|App Engine(GAE)|PaaSサービス。Go、PHP、Java、Python、Javascript、.NET、Rubyなどのランタイムを使用可能。|
|Cloud Functionns|FaaSサービス。Javascript、Python、Goのランライムを使用可能。|
|Cloud Run|Knativeのマネージドサービス。コンテナをサーバレス環境で実行できるようになる。フルマネージドコンテナまたはGKE上でコンテナを実行することを選択可能。|


### ストレージ

|サービス|概要|
|:--|:--|
|Compute Storage|オブジェクトストレージサービス。リージョン指定や複数リージョンに配置し、可用性を高めることが可能|
|Compute Storage(Nearline)|長期保管を目的とした、廉価なストレージ。最低30日間保管が必要。レイテンシ性能は劣る。|
|Compute Storage(Coldline)|より長期の保管を目的とした、より廉価なストレージ。最低90日間保管が必要。レイテンシ性能はより劣る。|


### データベースおよびデータ分析

|サービス|概要|
|:--|:--|
|Cloud SQL|リレーショナルデータベースのマネージドサービス。MySQL、PostgreSQL、SQL Serverから選択可能。|
|Cloud Spanner|ミッションクリティカル向けリレーショナルデータベースのフルマネージドサービス。高度なスケーラビリティ、可用性をもつ。|
|Cloud Bigtable|NoSQLデータベースサービス。Google検索やGoogleマップ、Gmailなどでも使用されている。|
|Cloud Firestore|Webアプリケーションやモバイルアプリケーション向けのNoSQLデータベース。|
|BigQuery|データウェアハウスのフルマネージドサービス。SQLで情報の操作が可能。|


### ネットワーキング

|サービス|概要|
|:--|:--|
|Cloud Load Balancing|高性能な負荷分散サービス。|
|Cloud DNS|DNSサービス。|
|Cloud CDN|コンテンツキャッシュ。|


### 管理ツールなど

|サービス|概要|
|:--|:--|
|Cloud IAM|GCPの各種リソースへのアクセス権限を管理する。|
|Cloud Repositry|プライベートなGitリポジトリのマネージドサービス。|
|Container Registry|Dockerコンテナイメージを管理する。|
|Cloud Build|アプリケーションやコンテナなどの継続的なビルド、テスト、デプロイを行う。|
|Cloud Deployment Manager|IaCツール。|
|StackDriver|アプリケーションやサービスの監視やログ収集、トレース等を行う。|
|Cloud Console|WebベースのGUI管理コンソール。|
|Cloud Shell|コマンドラインの管理ツール。|


### その他(APIなど)

|サービス|概要|
|:--|:--|
|Cloud Pub/Sub|メッセージングサービス。|
|AutoML|カスタム機械学習モデルをトレーニングする。|
|Vision AI|画像から分析情報を抽出する。|
|Cloud Natural Language API|自然言語処理。非構造化テキストから情報を抽出する。|
|Cloud Transration|言語翻訳。|
|IoT Core|IoTデバイス管理のフルマネージドサービス。|
|Anthos|ハイブリッドクラウドやマルチクラウド環境を提供する。|


## リージョンとゾーン
クラウドサービスのデータセンターは、エリアごとに分割されて運用されており、
GCPにおける単位は、リージョンおよびゾーンとなります。

![無題のプレゼンテーション (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525959/f5e17564-6889-efda-4549-dbd0e8e6a9d7.png)

|項目|概要|
|:--|:--|
|リージョン|世界のどの地域にあるかを示したもの。複数のゾーンで構成される。サービスレベル確保のためには、大規模災害でリージョン全面ダウンが起こる可能性を考慮したリソース配置が必要。|
|ゾーン|GCPのリソースが配置される、リージョン内のさらに細かい拠点。障害ドメインとみなされるため、サービスレベル確保のためには、ゾーン全面ダウンを考慮したリソース配置が必要。|


また、各種リソースは、配置・実行されるロケーションがある。
![無題のプレゼンテーション (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525959/df797702-acb8-59cd-dae5-6fb5e0c781ba.png)


|項目|概要|
|:--|:--|
|ゾーンリソース|ひとつのゾーン内で、配置・実行されるリソース|
|リージョンリソース|リージョン内のすべてのゾーンで、配置・実行されるリソース。|
|マルチリージョンリソース|複数のリージョンで、配置・実行されるリソース。|



## プロジェクトとアカウント
各種サービスから実際にリソースを作って、使っていくことになる訳ですが、
GCPでは「プロジェクト」という単位で、リソース等をまとめます。

![無題のプレゼンテーション (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525959/9ab6051d-c7d9-5d3d-91c4-abc2c14d4f0b.png)


|項目|概要|
|:--|:--|
|プロジェクト|GCPのリソースをまとめる単位。|
|課金アカウント|課金用のアカウント。1プロジェクトに対して、1つ割り当てられる。|
|ユーザアカウント|GCPを操作したりするのに必要なGoogleアカウント。|




## 権限の割り当て
GCPリソースへの権限の割り当ては、Cloud IAMによって、以下のように実現される。

![無題のプレゼンテーション (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525959/61a51507-360b-1a70-423f-90d204f338d3.png)


|項目|概要|
|:--|:--|
|メンバー|Googleアカウントやグループ、G-Suiteドメイン、またはサービスアカウント。|
|役割|権限をまとめたもの。Admin⇒管理者、Editor⇒編集者など|
|ポリシー|役割をメンバーに割り当てて、誰にどのような権限を付与したかを定義したもの。|


GCPでは、「組織」や「フォルダ」でプロジェクトをグループ化して管理することが可能。
ポリシーは継承させることができる。

![無題のプレゼンテーション (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525959/e4ec3323-c679-372b-b1a9-fa74825ef4d2.png)


## 課金
基本的に、利用した分に対して課金されます。
課金の種類は、以下のような要素に依存します。

![無題のプレゼンテーション (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525959/100e46d3-afb2-a9b3-7f68-6d5b91a9f3d9.png)


|項目|例|
|:--|:--|
|リソースの使用時間|GCEインスタンスの起動時間、Functionsの関数処理時間、など|
|データサイズ|Cloud Storageのバケツ使用サイズ、Cloud SQLへの保存データサイズ、など|
|ネットワーク転送量|GCEインスタンスから外との下り通信量、など|
|データ処理量|BigQueryのデータ処理量|


## コンプライアンス
クラウド導入にあたって、各国の各種規制や基準を満たしていることは重要になってきます(例えば、日本の金融機関であれば、FISCなど)。

[GCPのコンプライアンス対応](https://cloud.google.com/security/compliance?hl=ja)


## GCPの操作
GCPのコンソールには、GUIとCLIがある。

|項目|概要|
|:--|:--|
|Cloud Console|Webベースの管理コンソール|
|Cloud SDKまたはCloud Shell|コマンドラインベースの管理インターフェース。gcloud等の管理コマンドが提供される。|