• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

google cloud professional cloud developer

date: 2021-03-28 excerpt: google cloud professional cloud developer認定

tag: cloud


google cloud professional cloud developer認定

  • 模擬試験を解いてみて
    • 全体的な質問でdata engineering的な側面を持っている
    • machine learning engineer的な側面は少ない
  • HipLocalについて
    • HipLocalはアメリカの架空の会社でGCPのユースケースにハマるような会社であるとされている
    • 説明コンテキストが書ききれないなどの事情で、HipLocalでは~のような前提がつくことがある

ノート

  • IAM
    • 粒度
      • 環境ごと、アプリケーションごとにプロジェクトを 1 つ
  • cloud tasks
    • 概要
      • 非同期のタスク実行
  • cloud pub/sub
    • subscriptionを複数設けることでcloud storage, bigquery等に分割分岐できる
    • ロギング目的でリアルタイムに様々な箇所で集計&分析できるように用いられる

範囲

  • セクション 1: スケーラビリティ、可用性、信頼性に優れたクラウドネイティブ アプリケーションの設計
    • 1.1 高パフォーマンスのアプリケーションとAPIを設計
      • マイクロサービス
        • 基本的にマイクロサービスでデザインする
      • IaaS(Infrastructure as a Service)、CaaS(Container as a Service)、PaaS(Platform as a Service)のスケーリング速度特性とトレードオフ
        • CaaSはポータビリティが高い
      • Google Cloud サービスの地理的分布(レイテンシ、リージョン サービス、ゾーンサービスなど)
        • 高いパフォーマンスが要求されるとき同一
      • Cloud Storage、Cloud Bigtable、Cloud Spanner、Cloud SQL を使用する書き込みレートが高いアプリケーションのキー構造を定義
        • SQLはオンプレ、BigtableはIoT(time), SpannerはSQL, Storageはblob
      • ユーザーセッション管理
        • Cloud Firestore(NoSQL)で実現可能
      • キャッシュソリューション
        • memorystore(redist)
      • APIサービスをデプロイ、保護する
        • cloud run等, DLP APIなどでもできる
      • ゆるく結合された非同期アプリケーション(Apache Kafka、Pub/Subなど)
        • dataflowにつなぐなど
        • cloud functionにpub/subからトリガーできる 
      • プラットフォーム停止時の正常なシャットダウン
        • consoleや内部で停止やAPIで停止
    • 1.2 安全なアプリケーションを設計
      • 該当規則に適用される実装要件(データ消去など)
        • 暗号化を行う、storageの寿命を設定する、internetに公開しない
      • サービスとリソースを保護するセキュリティメカニズム
        • ハードウェア暗号化機能等
      • アプリケーションのバイナリとマニフェストを保護またはスキャンするセキュリティメカニズム
        • コンテナをスキャンする機能
        • webの脆弱性をスキャンする機能 
      • アプリケーション シークレットとキーの保存とローテーション(Cloud KMS、HashiCorp Vault など)
        • 鍵を登録してそれを利用する
        • apiはapi呼び出し時に行う
      • Googleサービスに対する認証(アプリケーションのデフォルト認証情報、JSON Web Token(JWT)、OAuth 2.0 など)
        • ライブラリやAPIとして提供されている?
      • ユーザー、グループ、サービスアカウントのIAMロール
        • 最小スコープ
      • サービス間の通信(サービスメッシュ、Kubernetesネットワークポリシー、Kubernetes名前空間など)を保護
      • 最小限の特権アクセスでサービスを実行する(Workload Identityなど)
        • workload identifyはkubernetesのpodに割り当てられるサービスアカウント
        • まとめてpodの権限を割り当てることができる
      • 証明書を利用した認証(SSL、mTLS など)
        • ロードバランサに割り当てるなど
    • 1.3 アプリケーションデータを管理
      • Google が管理するデータベース(Firestore、Cloud Spanner、Cloud Bigtable、Cloud SQLなど)のデータベース スキーマを定義
        • Bigtableだけ癖があり、キーのクロスでパフォーマンス改善ができる
      • 以下のようなユースケースの考慮事項に基づいてデータストレージオプションを選択
        • オブジェクトへの時間制限付きアクセス
          • storage
        • データ保持に関する要件
          • storageの暗号化等
        • 構造化データと非構造化データの比較
          • SQL, Spanner vs Firestore storage
        • 強整合性と結果整合性の比較
          • datastoreは結果整合性
          • 上手くバランスを取る必要がある
        • データ容量
          • Cloud SQLは限界がある
        • Cloud Storageのデータへのアクセス頻度
          • 色々種類がある
    • 1.4 アプリケーションのモダナイゼーション
      • マネージドサービスを使用する
        • 原則マネージドサービス
      • モノリスをマイクロサービスにリファクタリング
        • API, REST
      • ステートレスで水平方向にスケーラブルなサービスの設計
        • k8s等 
  • セクション 2: アプリケーションのビルドとテスト
    • 2.1 ローカル開発環境を設定
      • ローカルアプリケーション開発向けのGoogleCloudサービスをエミュレートする
        • コンテナ等で再現する
      • GoogleCloudプロジェクトを作成する
      • コマンドラインインターフェース(CLI)、Google Cloud Console、Cloud Shellツールを使用する
      • デベロッパーツールを使用する(Cloud Code、Skaffold など)
    • 2.2 効率的なコードを記述
      • アルゴリズムの設計
      • 最新のアプリケーションパターン
      • ソフトウェア開発方法論
      • コードのデバッグとプロファイリング
    • 2.3 テスト
      • 単体テスト
      • 統合テスト
      • パフォーマンステスト
      • 負荷テスト
    • 2.4 構築
      • ソースコントロール管理
        • gcp内部のgit
      • コードから安全なコンテナイメージを作成
        • cloud build
      • デプロイアーティファクトを構成するサービス(Cloud Build、Container Registryなど)を使用して、継続的インテグレーションパイプラインを開発する
        • masterブランチの更新に対応させるなど
      • 継続的インテグレーション パイプラインの有効性を確認、改善
  • セクション 3: アプリケーションのデプロイ
    • 3.1 対象のコンピューティング環境(Compute Engine、Google Kubernetes Engine など)に適したツール(Cloud Build、Spinnaker、Tekton、Anthos Configuration Manager など)を使用して適切なデプロイ戦略
      • Blue/Greenデプロイ
        • ver2をデプロイして問題がなかったらver1のトラフィックをver2に振り返る 
      • トラフィック分割デプロイ
        • webuiで分けられる
      • ローリングデプロイ
      • カナリア デプロイ
    • 3.2 Compute Engine にアプリケーションとサービスをデプロイ
      • アプリケーションを仮想マシン(VM)にインストールする
      • VMのサービスアカウントを管理する
      • アプリケーションをブートストラップする
      • アプリケーションのログと指標をエクスポートする
      • Compute EngineのVMイメージとバイナリを管理する
    • 3.3 Google Kubernetes Engine(GKE)にアプリケーションとサービスをデプロイ
      • コンテナ化したアプリケーションをGKEにデプロイする
      • Kubernetes RBACとGoogle Cloud IAMの関係を管理
      • Kubernetes名前空間を構成
      • ワークロードの仕様(リソース要件など)
      • Cloud Buildを使用してコンテナイメージを作成
      • ユーザートラフィックとその他のサービスへのアプリケーションによるアクセス可否の構成
      • コンテナのライフサイクルを管理する
      • Kubernetesのリソースと構成を定義する
    • 3.4 Cloud Functionsの関数をデプロイ
      • Google Cloud サービスからのイベントを介してトリガーされるCloud Functions(Pub/Sub、Cloud Storageオブジェクトなど)
      • HTTPによって呼び出されるCloud Functions
      • Cloud Functionsの保護
        • IAMで制限できる
    • 3.5 サービス アカウントの使用
      • 最小権限の原則に従ってサービスアカウントを作成する
      • サービスアカウントの秘密鍵ファイルをダウンロードして使用する
  • セクション 4: Google Cloudの統合
    • 4.1 アプリケーションにデータサービスとストレージ サービスを統合
      • さまざまなデータベース(SQLなど)のデータの読み込みおよび書き込み
      • データストア(Cloud SQL、Cloud Spanner、Firestore、Cloud Bigtable など)に接続する
      • データを非同期で(Pub/Sub などから)公開または使用するアプリケーションを作成する
      • Cloud Storageのオブジェクトを保存、取得する
    • 4.2 アプリケーションにコンピューティングサービスを統合
      • GKEとCompute Engineでのサービスディスカバリを実装する
        • k8sはDNSを変更することでサービスディスカバリで機能しようとする
      • インスタンスメタデータを読み取ってアプリケーションの構成を取得する
        • http://metadata.google.internal/computeMetadata/v1/hogehoge
      • OAuth2.0ウェブフローとIdentity-Aware Proxyを使用してユーザーを認証する
        • googleの認証機能を利用してapp engine等にリーチさせる**
      • Workload Identityを使用してCloud APIsに対する認証を行う
        • k8sの典型パターン
    • 4.3 アプリケーションにCloud API
      • Cloud APIを有効化する
      • 以下の点を考慮に入れて、サポートされているオプション(Cloudクライアントライブラリ、REST APIまたはgRPC、API Explorerなど)を使用してAPI呼び出しを行う
        • 一括処理リクエスト
        • 戻りデータの制限
        • 結果のページ分け
        • 結果のキャッシュ保存
        • エラー処理(指数バックオフなど)
          • 一般的なエラーハンドリング
        • サービスアカウントを使用してCloud API呼び出しを行う
  • セクション 5: アプリケーション パフォーマンス モニタリングの管理
    • 5.1 Compute Engine VMを管理
      • シリアルポートを使用してカスタムVMイメージをデバッグする
      • 失敗したCompute Engine VMの起動を診断する
      • VMからCloud Loggingにログを送信する
      • ログを表示して分析する
      • 利用リソースの推移を点検する
    • 5.2 Google Kubernetes Engine のワークロードを管理。
      • ロギングとモニタリングを構成する
        • gkeのcloud operationがデフォルトで対応可能(クラスタの管理画面)
      • コンテナのライフサイクル イベント(CrashLoopBackOff、ImagePullErr など)を分析する
        • kubectl get pods --namespace=...してcrashloopbackoffしたpodをkubectl describe pod ... --namespace nginx-crashloopで確認できる
      • ログを表示して分析する
        • cloud loggingから確認できる
        • メトリックス等はcloud monitoring
      • カスタム指標を作成してエクスポートする
        • cloud monitoringでカスタムメトリクスを作成してそれをscalingするトリガーにできる
      • 外部指標とそれに対応するアラートを使用する
      • ワークロードの自動スケーリングを構成する
    • 5.3 アプリケーションの性能
      • モニタリングダッシュボードを作成する
      • カスタム指標とログベースの指標を作成する
      • Cloud Debuggerを使用する
        • pythonで本番環境でインポートしてデータを吐き出す
      • エラーを分析するためにスタックトレースを確認する
      • Google Cloudからログをエクスポートする
      • Google Cloud Consoleにログを表示する
      • アプリケーションのパフォーマンスを確認する(Cloud Trace、Prometheus、OpenTelemetry など)
        • 確認
      • 実行中のアプリケーションのモニタリングとプロファイリングを行う
      • ドキュメント、フォーラム、Google Cloudサポートを利用する


cloud Share Tweet