GCPサービスの学習メモ

## 自己紹介
初めまして。私は都内でwebエンジニアをしています。

今の会社にインターンとして経て、入社しました。

業務では、Nuxtjs, Golang, Kubernetesを用いて運用保守開発や

最近はPandasを用いてデータ分析など日々苦戦している若輩者です。

## 背景

GCPの学習し始めた時のメモが眠っていたので、ここに供養させて頂きます。

## 対象としている人

GCPについて何もわからない人が、サービスの概要を掴むために役立てると思います。

# [Google Cloud の概要](https://www.cloudskillsboost.google/focuses/2794?locale=ja&parent=catalog)

コンピューティングとストレージをはじめ、データ分析や機械学習、ネットワーキングまで幅広いサービスと API が利用できる
- Google Console
  - 開発ツールである、ウェブコンソール Cloud Consoleのこと
- プロジェクト ID
  - Google Cloud のリソースを 1 つにまとめているエンティティ
    ex) 仮想マシンのプール、データベース セット、それらを接続するネットワークなど
  - プロジェクトには各種設定と権限も含まれており、これを使用して、セキュリティ ルールと誰がどのリソースにアクセスできるかが指定できる
## [サービス](https://cloud.google.com/products#top_of_page)
7 つのカテゴリで構成されている
### コンピューティング
- どのような種類のワークロードにも対応する各種マシンタイプ
### ストレージ
- 構造化データ、非構造化データ、リレーショナル データ、非リレーショナル データに対応したデータ ストレージとデータベースのオプション。
### ネットワーキング
- アプリケーション トラフィックを均衡化する機能、セキュリティ ルールを規定する機能を持つサービス。
### オペレーション
- クロスクラウドのロギング、モニタリング、トレースなど、サービスの信頼性を維持するために欠かせない一連のツール。
### ツール
- デプロイとアプリケーション ビルド パイプラインを管理するデベロッパー向けの各種サービス
### ビッグデータ
- 大規模なデータセットの処理と分析を可能にするサービス。
### 人工知能
- Google Cloud 上で特定の AI タスクと機械学習タスクを実行する一連の API。
## App Engine
- アプリとバックエンド用のサーバーレスアプリケーション
## Cloud Build
- サーバーレス CI / CD プラットフォームでビルド、テスト、デプロイを行う。
- メリット
  - 完全にサーバーレスなプラットフォーム
  - 柔軟性
  - セキュリティとコンプライアンス
- 機能
  - 非常に高速なビルド
  - デプロイを自動化
  - マルチクラウドのサポート
  - デプロイを数分で完了
  - 強固なプライバシー保護対策
## Google Cloud Armor
- サービス拒否攻撃やウェブ攻撃からのアプリケーションとウェブサイト保護
  - OWASP の 10 大リスクを軽減 (クロスサイト スクリプティング（XSS）や SQL インジェクションなど)
  - L3 と L4 に対するsエンタープライズ級の DDoS 防御
## Cloud Storage
- 信頼性が高く安全なオブジェクト ストレージ
  - 保存できるデータ量に制限はない。
  - オンプレミス環境と比較して 99% 高速
  - 99.999999999% の年間耐久性を実現
## Secret Manager
- API キー、パスワード、証明書、その他の機密データを保存。
- メリット
  - 最小権限の実装が容易
  - ライフサイクル管理が簡単になる
  - 組み込みの強力な監査
- 特長
  - レプリケーション ポリシー
  - Cloud IAM との統合
  - 監査ロギング
  - デフォルトで暗号化
## IAM
- どのリソースに対してどのようなアクセス権（ロール）を持つかを定義することにより、アクセス制御を管理
- ソースに対するアクセス権を直接エンドユーザーに付与することはなく、複数の権限をロールにまとめて、認証されたプリンシパルに付与する
- 許可ポリシーは IAM ポリシーとも呼ばれ、どのプリンシパルにどのロールが付与されるかを定義し、適用する
- アクセス管理モデル
  - プリンシパル
    - リソースへのアクセスが許可されている Google アカウント（エンドユーザー）、サービス アカウント（アプリケーションまたはコンピューティング ワークロード）、Google グループ、Google Workspace アカウントまたは Cloud Identity ドメイン
    - ユーザー、サービス アカウントまたは Google グループに関連付けられているメールアドレス、あるいは Google Workspace アカウントまたは Cloud Identity ドメインのドメイン名がプリンシパルの IDになる
  - ロール
    - 権限のコレクション
    - 権限によって、リソースに対して許可されているオペレーションが決まる
    - リンシパルにロールを付与すると、そのロールに含まれるすべての権限が付与される
  - ポリシー
    - 1 つ以上のプリンシパルを個々のロールにバインドするロール バインディングの集合
    - リソースに対してどのようなアクセス権（ロール）を誰（プリンシパル）に許可するのかを定義する場合、許可ポリシーを作成して、そのポリシーをリソースに接続する
- サービス アカウント
  - 個々のエンドユーザーではなく、アプリケーションまたはコンピューティング ワークロードのアカウント
## [ロールと権限](https://cloud.google.com/iam/docs/understanding-roles/#primitive%5C_roles)
- Google Cloud リソースに対して特定の操作を実行できるようにする一連の権限が含まれている
- viewer (read only)
  - 既存のリソースやデータを表示する（ただし変更は不可能）など、状態に影響しない読み取り専用アクションに必要な権限。
- editor
  - すべての閲覧者権限と、状態を変更するアクション（既存のリソースの変更など）に必要な権限。
- owner
  - すべての編集者権限と、次のアクションを実行するために必要な権限
  - プロジェクトおよびプロジェクト内のすべてのリソースの権限とロールを管理する、プロジェクトの課金情報を設定する。
## static ipaddress
- 静的外部 IP アドレス
  - プロジェクト用に予約される IP アドレス
  - 変更されない固定外部 IP アドレスが仮想マシン（VM）インスタンスに必要な場合に使う
- エフェメラル IP アドレス
  - リソースの存続期間を超えて保持されない IP アドレス
- IP アドレスを解放
  - アドレスが不要になったら、そのアドレスを解放できます。解放するとその IP アドレスは一般 IP プールに戻され、Compute Engine の他のユーザーが使用できるようになる
## uptime checks 公開の稼働時間チェック
- Cloud Monitoring のサービス
  - お使いのアプリケーション、サービス、または URL に要求を送信して、システムの正常性をチェックするようサービスを設定
  - システム正常性が悪化したときに通知される
期待どおりに動作しているかどうかをユーザーまたは外部システムの観点から判断するために使用する
稼働時間チェックは、リソースが応答するかどうかを確認するためにそのリソースに送信されるリクエスト
- 次のコンポーネントから構成
  - 作成した稼働時間チェック構成
  - リクエスト実行システム
## alert_policy
- リソースまたはグループが正常に動作しているかどうかを判断する一連のルール
- メトリックしきい値を呼び出す論理的条件および稼働時間チェックをする
- ex) Web サイトの平均応答待機時間は 2 分当たり 5 秒を超えてはいけないというルールを作成できる
## API とサービス
ビジネス管理から機械学習にまで及ぶさまざまな分野の API が 200 以上用意されている
ex) Youtube API, Gmail API, Google Map API
[API設計ガイド](https://cloud.google.com/apis/design/)