0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Associate Cloud Engineer Certification Pathの要点メモ

0
Posted at

https://www.skills.google/paths/11?catalog_rank=%7B%22rank%22%3A2%2C%22num_filters%22%3A0%2C%22has_search%22%3Atrue%7D&search_id=81113005
を受講して、大事そうなところやわかりやすかった比較図・選定フローなどをメモしたものです。

Essential Google Cloud Infrastructure: Core Services

ストレージ・データベース

  • サービス一覧

image.png

  • 決定フロー

image.png

Cloud Storage

  • デフォルトではオブジェクトにはバケットのストレージクラスが割り当てられる

  • バケットのストレージクラスは後から変更可能だが、ロケーションタイプは変更不可

  • バケットまたはオブジェクトに設定可能なACLエントリは最大100

  • ACLはエントリで構成され、ACLは権限とスコープで構成される

    • 権限:ユーザーが可能なアクション
    • スコープ:誰がアクションを行えるか(ユーザーまたはグループ)
  • ストレージクラスの決定フロー

image.png

  • Autoclass ストレージクラスを使用するとアクセス頻度に応じて自動でクラスが変更される

image.png

Filestore

  • 特徴

image.png

Cloud SQL

  • 最大64TB
  • 60,000IOPS
  • 最大624GB of RAM
  • 接続方式選定フロー

image.png

  • External IP 接続

    • Cloud SQL Proxyを使用してセキュリティ担保
    • 手順
    1. VMにSSHで接続し、Cloud SQL Proxy をwgetでDL
    2. Proxyを起動 ./cloud_sql_proxy -instances=XXX=tcp:3306 &
    3. localhost(127.0.0.1) で Cloud SQL への接続がListenされる
  • Internal IP 接続

    • プライベートIPのみで接続することでセキュアかつ低レイテンシー
    • CloudSQLインスタンスがVMと同一リージョン・同一VPC内の場合に使用可能
  • Database 選定フロー

image.png

Spanner

  • ペタバイト規模
  • ユースケースはフィナンシャルや在庫管理、LLMなど
  • 選定フロー

image.png

Alloy DB

  • フルマネージド
  • PostgreSQLベース(Google 独自エンジンと組み合わせている?)
  • PostgreSQL比4倍高速なトランザクション処理
  • PostgreSQL比100倍高速な分析クエリ
  • 99.99 SLA
  • Vertex AI 統合

Firestore

  • ネイティブ・Datastore互換モードが存在

image.png

Bigtable

  • Googleの検索、アナリティクス、Map、Gmailなどと同じデータベース
  • とにかく高速
  • スパース(低密度)

image.png

  • Bigtable選定フロー

image.png

Memorystore

image.png

Compute Engine

  • Deletion rule で Keep boot diskを選択するとInstance削除してもDiskは残る
  • DiskからImageを作成し、ImageからInstance Templateを作成できる

VPC

ピアリング

  • オンプレからPublicIPでGoogleに接続可能
  • SLAは無し
    image.png

LoadBalancing

  • ALB

    • Layer7を担当(HTTPSなど)
  • NLB

    • Layer4を担当(TCP・UDPプロトコルなど)
    • Proxy型
      • クライアントからの通信の終端となる
      • バックエンド到達時のIPはNLBのものとなる
    • パススルー型
      • 不可分散のみを行う(リクエストはそのままバックエンドに通過)
      • DSR(Direct Server Return)でNLBを経由せずクライアントに返却
      • バックエンド到達時のIPはクライアントのIPを維持
  • 選定フロー

image.png
image.png

Load Balancing

Resource Management

  • 3つのプロジェクト識別子が存在する
    image.png

  • セキュリティの責任分担

    • Googleとユーザーとで各自が作った物に対して責任を負う
      image.png

Billing

  • Project定義時に請求先アカウントを紐づける
  • BudgetはProject単位 or 請求先アカウント単位で設定可能
  • Quotaには以下2種類が存在する
    • レートに基づく割り当て
    • 数量に基づく割り当て(e.g. VMインスタンス数)

Kubernetes

  • kubectl syntax

image.png

nameはoptional

  • pod status

image.png

  • Unknown

    • pod の状態を取得できない
  • CrashLoopBackOff

    • 予期せぬ起動と再起動を繰り返している状態
  • kubectl exec -it [POD_NAME] -- [command]

image.png

-i (stdin - 標準入力): コンテナに標準入力を開いたままにする。これにより、コマンドを入力できます。
-t (tty - 端末): 擬似端末(Pseudo-TTY)を割り当てる。これにより、コンテナ内のシェルがターミナルとして認識され、プロンプトやコマンドの表示が正しく機能します。

Cloud Run

  • Pub Sub からの実行の場合最大600秒以内に success code (200 or 204 ...etc) で返却しない場合、あるいは error code (400 or 500 ...etc)が返却された場合エラー扱いとなり、 Pub Sub から再度 push される
  • Secret Manager の参照はデプロイ時にコマンドで環境変数かマウントパスに設定するのを推奨

モニタリング

  • Four golden signals
    image.png

  • Monitoring in GKE

    • Google Managed Prometheus(GMP)を使うことを推奨
      • クエリ言語でデータを分析できる
  • Monitoring in Compute Engine

    • Ops Agent を使うことを推奨
      • 3rd party アプリのメトリクスも収集できる
  • Hybrid monitoring and logging

    • BindPlane(Google パートナーの製品)を使うことで以下のデータも収集できる
      • オンプレミス
      • AWS・AzureなどGoogle以外のクラウド
    • 通常のLoggingにかかるコスト以外は追加課金なし
  • Metrics Scope

    • 以下2パターンが存在
      • 1つのメトリクススコープで複数PJを監視
        • メリット
          • 関連PJを単一画面で監視できる
          • 非本番・本番環境の比較が可能
        • デメリット
          • 権限を持っていれば全環境のメトリクスが見れてしまう
      • 1つのメトリクススコープで1つのPJのみを監視
        • メリット
          • 各PJが明確に分離されており権限管理が容易
          • PJリソース・管理リソースが集約される
          • PJ初期設定時の標準機能なので自動化が容易
        • デメリット
          • アプリが1プロジェクトより巨大になるとアプリのパフォーマンスの可視性に限界がくる
  • Data model

    • CloudMonitoring で参照可能なデータはtime seriese(時系列データ)で記録され、以下の構成となっている
      • metric
        • metric 自体のデータ
        • severity(INFOなど)・typeなど
      • resource
        • ログの起因となったリソースの情報
        • resource id, project id, zoneなど
      • metricKind
        • DELTAなど
      • valueType
        • INT64など
      • points
        • 実際の値

sample
image.png

  • 個々のPJではなく、モニタリング用のPJを作って監視するのがベストプラクティス

SLI, SLO, SLA

  • SLI(Service Level Indicator)
    • 信頼性を測定する指標
  • SLO(Service level objective)
    • SLIと組み合わせて定義する目標値
    • 99.999%などで表現されるのが一般的(いわゆるThree Nine)
  • SLA(Service Level Agreement)
    • 顧客に宣言する信頼性目標値
    • およびそれが破られた時の保証方法の定義

image.png

  • SLOはS.M.A.R.T.で定義すべき
    • Specific
      • 曖昧ではなく明確(数値など)で表す
    • Measurable
      • 測定可能な数値であること
    • Achievable
      • 達成可能であること(100%はNG)
    • Relevant
      • 関連性があること。そのSLOを達成することでユーザーの課題解決の助けになるか?
    • Time-bound
      • 目標達成の時間枠(月 or 週 or ...etc)

Logging

  • 生成されるログは以下5種類

    • Platform logs
      • Google Cloud により自動で生成されるもの
      • e.g. VPC Flow logs など
    • Component logs
      • Google が提供するソフトウェアによって生成されるもの
      • e.g. GKEのVM上で生成されたログなど
    • Security logs
      • e.g. Cloud Audit logs など
    • User-written logs
      • 以下のような手段でユーザーにより生成されたログ
        • Ops Agent
        • Cloud Logging API
        • Cloud Logging client libraries
    • Multi-cloud logs and Hybrid-cloud logs
      • Azure, AWS, on-premises ログ
  • ログはデフォルト30日保管、最大3650日

  • adminログはデフォルト400日

image.png

  • Log router sinks
    • 以下のいずれかにフィルタ結果のログを転送可能
      • Cloud Logging bucket
      • BigQuery dataset
      • Cloud Storage bucket
      • Pub/Sub topic
      • Splunk
      • Other project

Audit Logs

  • Admin Activity logs
    • 常に有効&無料
    • 設定やメタデータの変更を記録
  • Data Access logs
    • Project、組織など複数の階層で有効化可能
      • 親PJで有効になっているものを無効化はできない
    • 以下3通りのログを提供
      • Admin read
        • バケットの設定閲覧など
      • Read
        • GCSのファイルDLなど
      • Write
        • GCSのファイルを配置など
    • 特定のユーザー or グループを記録対象外とすることが可能
      • ノイズ・コスト削減
    • ログは自動でGoogle Managedなキーで暗号化されるが、組織の要件を満たせない場合はカスタムキーで暗号化も可能
    • ログストレージを一元化または分割するために、ユーザー定義バケットを作成することを推奨
    • PIIが含まれることが多いため、権限は精査する

Audit ログの例

{
insertId: "-77e5fge38tyo" 
logName: "projects/<projectID>/logs/cloudaudit.googleapis.com%2Fdata_access" 
operation: {
 first: true  
 id: "1581200795118:bquxjob_56996f5_17026e67aa2"  
 producer: "bigquery.googleapis.com"  
}
protoPayload: {
 @type: "type.googleapis.com/google.cloud.audit.AuditLog"  
 authenticationInfo: {
  principalEmail: "cloudysanfrancisco@gmail.com"   
 }

VPC Flow Logs

  • VM, GKE instance のネットワークフローを記録
  • VMからのパケットが記録される
    • egress(VM -> 外部) で拒否されたパケットは捕捉されるが、 ingress(外部 -> VM) で拒否されたパケットは捕捉されない

Firewall Rules logging

  • Firewall Rule のログを記録
    • いくつの接続がルールにマッチしたか
    • 幾つの接続が拒否されたか
    • ...etc

有効化するとログ数が膨大になる可能性があるためコストに注意

Error reporting

  • ログを精査し、指定されたチャネル(Slack, Mailなど)に通知することが可能

ERRORレベル + スタックトレースを含むログを出力するとうことなので独自でアラートを作る必要はなさそう
https://zenn.dev/nekoshita/articles/39c356bba2e991

Cloud Trace

  • レイテンシーを可視化し原因調査などに活用

一覧画面
image.png

詳細画面
Span という概念で時間の経過が表現される
image.png

Cloud Profiler

  • 本番環境のパフォーマンスに影響与えることなく、パフォーマンスを計測できる
  • 無料
  • 多様な言語(Java, Go, Python, Note.js)に対応
  • 他クラウド・オンプレ対応
  • 使用可能なメトリクスは言語によって異なる

image.png

  • walltime
    • ロックやスレッド同期などの待機時間を含め、コードブロックの実行にかかる時間
    • コードブロックの walltime は、CPU時間よりも短くなることはない
  • heap
    • プロファイルが収集された時点でプログラムのヒープに割り当てられているメモリ量
  • Allocated heap
    • プログラムのヒープに割り当てられたメモリの総量
    • 解放されて使用されなくなったメモリも含まれる
  • threads
    • 他のスレッドを待機してスタックしているスレッドに関する情報
    • スレッド数が含まれる

image.png

  • profiler は flame graph(可視化ツール) で表現される

image.png

Challenge Labの説明が雑すぎる・・
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?