たろログ2

実験的運用により、記事品質が乱高下することがあります。予めご了承ください。

2022-05-12 Google Cloud Certificate

Google Cloud Certificate Professional Cloud Developer を取得するために、学習を進めている。会社との間で合意した今期 (1月 ~ 6月) の目標というところが大きい。

学習自体は 2021年の 12月頃から始めたが、しばらくの間中断していた。

そのため、この日は以前実施した学習内容の振り返りから始めた。

Google Cloud Certificate

まず、 Google Cloud Certifications にどのような試験が存在するのかを確認した。

自分が受験する試験として、 Professional Cloud Developer が最適であることを再確認する意味もあった。

Google Cloud Certification には、以下のような Professional 資格がある。

  • Cloud Architect

  • Cloud Developer

  • Data Engineer

  • Cloud DevOps

  • Cloud Security Engineer

  • Cloud Network Engineer

  • Collaboration Engineer

詳細については、 Certifications | Google Cloud を参照。

GCP Google Developer Proffesional

次に、 Cloud Developer の試験概要を確認した。 「HipLocal」という仮想の企業を例にした問題が出題されるということなので、この「HipLocal」のケーススタディを行った。

HipLocal は、ご近所コミュニティアプリ。地理的に近い人々がコミュニティを作り、交流することを促進するアプリケーション。

現在はご近所コミュニティのみを対象としたアプリケーションであるが、今後はオンライン上の仮想コミュニティや、オンライン上で誕生したご近所コミュニティについても対象としていきたいと考えている。この理想像は、少し現在の discord っぽいなと思った。

また、現在拠点はアメリカのみであり、海外進出も行いたいと考えている。海外進出を行う場合、海外ごとに拠点を作り、その拠点の運用チームを新たに組織する予定である。

このチームは、海外拠点のシステムの運用管理 (パフォーマンス監視、分析、対処) を行う。

システム構成は、自社オンプレミスと GCP 環境の混在である。

既存の APIGoogle Cloud の Compute Engine インスタンス上にデプロイされている。

アプリケーションのステータス情報は、 GCP 上の MySQL インスタンス上に保管されている。

アプリケーションのロギングは現状なく、手動デプロイが行われている。

また、監視は稼働時間がメトリクスとして設定されており、稼働時間が一定時間を下回った場合にアラートが発報される。これについては、メトリクスを応答割合に変更するのが適切ではないかと考える。

以前に Cloud Developer の模擬試験は解いたことがあり、その際聞いたこともないような GCP サービスの名称をメモしていた。

まず、それら GCP サービスの概要を簡単に知ることから開始した。

Cloud Debugger

アプリケーションの停止や速度低下を伴うことなく、稼働中の本番アプリケーションにおいてデバッグ (アプリケーションの状態の確認) ができるアプリ。

logging 用の行を追加することなくデバッグすることができる。

PHP であれば、 composer require で Cloud Debugger のライブラリを読み込むだけで使える。

Cloud Trace

分散システムにおいて、トレーシングを行うためのサービス。

例えばレスポンスに遅延が起こっている際に、分散システムのそれぞれの構成要素のどこがボトルネックになって遅延が起こっているのかを追跡し、ボトルネックを特定することができる。

こちらについても、 PHP であれば pecl による拡張のインストールと、 composer によるライブラリのインストールを行うだけで利用できる。

Cloud Profiler

本番環境において、アプリケーションのプロファイリングを行うことができる。

  • CPU Time

  • Heap

  • Allocated Heap

  • Contention

  • Threads

  • Wall Time

例えば、 Python であれば pip インストールするだけで利用できる。

Big Query

Multicloud data warehouse。

データの管理、分析が行える。分析については、組み込みの様々な機能を利用することができる。

大量のデータを格納し、それに対して SQL を用いて分析を加えることを得意とする。

Big Table

Scalable NoSQL Database

Firestore

NoSQL Database であり、 Realtime Database でもある。

Realtime Database とは、その状態が頻繁に変化する workloads をリアルタイムに処理するために利用されるデータベース。

Native mode では、 Firebase としての様々な機能が利用できる。

Datastore モードでは Firestore ではなく Datastore として動作する。利用できる API なども、 Firestore のものは使えなくなり、反対に Datastore のものが利用できるようになる。

Memory Store

Redis や Memcachedクラウドインフラストラクチャ上で利用できる。

Cloud DataProc

is managed Hadoop

is a way to run Hadoop, Spark, Hive, and Pig on GCP

扱うデータについて、事前にそのサイズがわかっている場合に適する。

Cloud Pub / Sub

supports many-to-many asynchronous messaging.

Application components make push / pull subscription to topics.

Cloud DataFlow

Apache Beam というプログラミングモデルのアプリケーションを動作させるものである。

Apache Beam : ETL, batch, stream などの「data processing pipelines」を定義したり、実行するためのプログラミングモデル。

これについてはまだわかっていないため、ここでは割愛。

Cloud Tasks

タスクの作成と実行が行える。

例えばバックグラウンドでの DB 更新がレスポンス速度におけるボトルネックとなる場合において、これを Task としてキューに突っ込むことでレスポンス速度を向上させることができる。

Task は、Cloud Tasks によって非同期に処理される。

Cloud Composer

is a fully managed workflow orchestration service.

enabling you to create, schedule, monitor, and manage workflows that span across clouds and on-premises data centers.

Clouds と on-premises のデータセンターにまたがるようなワークフローを作成、スケジュール、監視、管理することを可能とする。

Apache Airflow というオープンソースのプロジェクトが元となっている。

Cloud Build

Deployment Manager : .yaml の形式でテンプレートを定義し、その定義に従ってリソースをデプロイすることができる。

gcloud instance create ... コマンドを使って Compute Engine のインスタンス作成を自動化していたが、これを yaml で定義する感じ。

実際にハンズオンをやってみたが、すでにデプロイしたリソースについて設定を変更することが容易なのに驚いた。

gcloud コマンドを利用するよりも便利だと思ったので、今後はこちらを利用しようと思う。

Cloud Function

FaaS (Function as a Service) と呼ばれる。

Create Single-purpose function that respond to event.

Cloud Endpoint

helps you create and maintain APIs。

バックエンドに Docker を利用している場合などにおいて、 nginx のリバースプロキシを簡単に構築できるイメージ。

Apigee Edge

企業が従量課金制の API などを作成するときに使える。

利用統計、課金の機能に加え、 Developer potal の機能も提供する。

App Engine

standard と、 flexible がある。

standard はサンドボックス環境のため、いくらかそれによる制限が生じる。

  • 特定の runtime しか使えない

  • ディスクへの書き込みができない

  • サードパーティのライブラリについて、一部利用できないものがある

flexible の実態は Compute Engine (実際、コンソールから確認できる) なので、ランタイムを Dockerfile に定義することで任意のランタイムが使え、また設定を変更すれば SSH などもできる。

ただし、スケーリングの粒度が大きくなる、価格が比較的高くなる、ランタイムのアップデート等の管理を自分で行わねばならない等のデメリットが生じる。

Cloud Datalabs

Jupyter notebook を GCP 上で動かす。

Cloud Machine Learning Platform

TensorFlow を GCP 上でホストするイメージ。

TensorFlow についてはさっぱりわかっていないので、簡単に学んでおくこと。

Machine Learning APIs

以下のような様々な API が存在し、簡単に Machine Learning の機能を利用することができる。

  • Cloud Vision API

  • Cloud Speech API

  • Cloud Neural Language API

  • Cloud Translation API

  • Cloud Video Inteligence API

Cloud DataProc, Cloud Dataflow, Big Table の使い分け

Cloud DataProc : 事前にサイズがわかっているような固定のデータの分析に適する

Cloud Dataflow : 事前にサイズがわからない、変動するデータ、もしくはリアルタイムに与えられるデータの分析に適する

Big Table : Ad-hoc に、 SQL を用いて分析するのに向く。