Google Cloud Certified - Professional Cloud Architect を取得するために（５／６）

#概要
Google Cloudの認定資格の一つであるProfessional Cloud Architectを取得するまでの軌跡をリアルタイムで記事として記録していく。

#試験受験日
2019年2月5日（火）

#過去の記事
[第１回](https://qiita.com/shuichiro/items/a87f021f05fb8d558756)
[第２回](https://qiita.com/shuichiro/items/97e11704c46b10831cca)
[第３回](https://qiita.com/shuichiro/items/fe243a3e00a0965991a4)
[第４回](https://qiita.com/shuichiro/items/992fe9396e30967d5d17)

#やったこと
##書籍によるトレーニング
100%読み終えた。仮想企業の課題とそれの解決をGCPのサービスで設計するもので、一通りトレーニングをした身としては非常に良く理解できた。通信制御のためのタグの設定が理解できていなかったので少し追加でトレーニングをしようと思う。

##公式ドキュメントによるトレーニング
未トレーニングだったサービスを一通り読み理解できたと思う。理解度を確認するために以下に一覧をまとめてあるが、結果的に今あるサービスの一覧が出来上がった。試験直前に一通り読み返して本番に困らないようにする。
読み返してみるとFirebaseがないことに気づいた。あれはまだGCPに統合されてないらしい。

##公式模擬試験の受験
実施してみた。20問中10問正解という微妙な結果。正直なところもうちょっととれるものだと思っていたので良い目覚ましになった。
出題の仕方やどんな問題が出るのかを予め把握できたのはありがたい。YAML形式で書かれたファイルの問題もあり、Deployment Manager等の少し速足でトレーニングした個所の弱点が浮き彫りになった。App Engineの特性を問うものやStorageのストレージクラスに関する問題もあったが、書籍でトレーニングした部分だったので正解できた。

#GCPの理解度確認
トレーニングの理解度を確認するためにGCPにどのようなサービスがあるのかまとめていく。
サービスの一覧は[公式ドキュメント](https://cloud.google.com/docs/)のトップよりサービス的なもののみ抜き出した。一覧は2019年1月4日現在のもの。

##サービス
###コンピューティング
####App Engine  
#####サービス概要
 インターネット公開するWebサービスを作成するプラットフォーム、Java,PHP,Python,Goで書いたサービスが稼働する。プラットフォームはGCPによりフルマネージドされるため開発者が運用を意識するコストが極端に減る。 
#####特記事項 
StandardモードとFlexibleモードがありStandardモードの方が制約が多いが、高速に動作する。  
####Compute Engine
#####サービス概要
仮想マシン。ある程度決められたリソースの組み合わせの中から必要なスペックを選択して作成される仮想マシン。リソースを自由に設定できるが高額になるプランもある。ディスクは永続とローカルがあり、永続は仮想マシン停止後もデータが残りづづける。ローカルは停止されたとき削除される。永続ディスクはSSDかHDDが選択可能で、ローカルディスクはSSDのみ使用可能である。  
#####特記事項 
メンテナンス時に停止不要なライブマイグレーション機能がある。永続ディスクはスナップショット取得可能である。
####Kubernetes Engine  
#####サービス概要
Kubernetesクラスタの実行プラットフォーム、GCPによりフルマネージドされるのでKubernetesクラスタを作成しておけば自動でノードの復旧を行ってくれる。  
#####特記事項
下記のオペレーション系サービスとの連携も可能である。 

####Cloud Functions 
#####サービス概要
イベント起動ベースのNode.jsの実行プラットフォーム、GCPによりフルマネージドされるため開発者が運用を意識するコストが極端に減る。HTTPリクエストやCloud Pub/Sub、Cloud Storage等をイベントとして使用することができるのでStorageのオブジェクトに変更があった際に処理をさせることが可能である。
#####特記事項
Goもベータ版でサポートされている。 


###ストレージ
####Cloud Storage
#####サービス概要
ファイルを格納できるオンラインストレージ、バケットを作成しデータを格納できる。クラスを選択できマルチリージョン単一リージョンの選択が出来る。アクセス頻度によりRegional、Nealine、Coldlineを選択出来る。バージョニングも可能である。
#####特記事項
アクセス制御はリスト（ACL）にて行うこともできる。
####Cloud Spanner
#####サービス概要
マルチリージョンでスケール出来、かつ整合性がとれたデータを読出し・格納ができるデータベースである。ただしSQLは使用できず提供されるAPIによってのみデータの読出し・格納が出来る。自動採番機能はない。
#####特記事項
データが偏らないように物理レイアウトを意識した設計が必要である。
####Cloud SQL
仮想RDBMS、MySQLやPostgreSQL等を動かせるサービス。フェールオーバーやレプリケーション等複雑になりがちなRDBの設定を行ってくれる。自動バックアップの設定も可能である。
#####サービス概要
接続エンドポイントがグローバルIPになるので、適切な接続管理が必要になる。
####Cloud Bigtable
#####サービス概要
仮想NoSQLデータベース、GCPによりフルマネージドされ自動的にスケールされる。アクセス数によらない高いスループットが期待できる。ディスクにはSSDとHDDが選択可能である。
####Cloud Datastore
#####サービス概要
仮想NoSQLデータベース、負荷に応じて自動的にスケールされて処理速度が変化しないのが特徴である。PythonやJavaのオブジェクトをそのまま格納することが出来る。
#####特記事項
SQLライクなクエリが実行できるがJOINが使えない、サブクエリが使えない、複数の不等号を使った検索処理が行えないといった制約がある。
####Cloud Firestore ベータ版
#####サービス概要
仮想NoSQLデータベース、サーバ管理が不要なサーバレスとして提供されるサービスである。格納できるデータ型が特定されている。

####Cloud Memorystore ベータ版
#####サービス概要
仮想Redisクラスタ、高速なデータストアが実現できるインメモリデータストレージサービスである。独自にRedis環境を構築することなく利用できる。



###ネットワーキング


####Cloud DNS
#####サービス概要
DNS、独自ドメインの名前解決を行えるようになる。一般的なDNSで利用されるレコードが使用可能である。 
####Cloud Interconnect
#####サービス概要
オンプレミス環境とGCPを直接専用線で接続するサービスであり、大容量かつ高速な通信を行いたい場合に使用する。
####CDN Interconnect 
#####サービス概要
GCPとCDNプロバイダを直接接続するサービスである。Googleと提携しているプロバイダと直接接続することでCDNへ配信したいコンテンツの送信するレイテンシが低減される。

####Cloud Load Balancing
#####サービス概要
仮想ロードバランサー、HTTP(S)通信を複数の仮想マシンへロードバランスしてくれる。HTTPだけでなくSSLやTCP通信もロードバランスが出来るが、使用できるポートは限られている。
####ダイレクト ピアリング
#####サービス概要 
Googleネットワークに直接接続するサービスである。Googleが定める技術要件を満たせるIXPが必要である。
####Cloud Content Delivery Network
#####サービス概要
Googleのエッジポイントへコンテンツをキャッシュしてくれるサービスである。キャッシュされるコンテンツの元をCloud Load Balancingを指定するとキャッシュが行われるようになる。
####バーチャル プライベート ネットワーク（VPN） 
IPSec VPNを使用しインターネットを経由しGCPと接続するサービスであり、通信量があまり多くない場合に使用する。
####Virtual Private Cloud（VPC）
#####サービス概要
仮想ネットワーク、このネットワークにCompute Engineの仮想マシンを繋ぐことになる。VPCはリージョンをまたいで作成出来、VPCの中にサブネットワークを構築することが出来る。これによりリージョンをまたいでもプライベートネットワークで通信ができる。通信制御はファイヤーウォールで送信元・送信先と通信ポートの設定し行う。送信元・送信先はアドレスではなくタグで行われるので仮想マシン等はタグ付けが必要になる。VPC同士の接続も可能である。
#####特記事項
ポート25、465、587の送信は禁止されている。
###ビッグデータ


####BigQuery
#####サービス概要
DWS、データの保存とクエリエンジンによる検索が可能である。リソースが実質的に無限大である。データセットの中にテーブルを作り、テーブルにデータを格納する。ビュー機能もありクエリによって論理的にテーブルの作成が可能である。実行結果が返ってくるまで待つインタラクティブクエリと実行結果がいつになるか解らないバッチクエリの二種類があり、必要に応じて使い分ける必要がある。
#####特記事項
 課金体系が検索をした量によるので注意が必要である。
####Cloud Composer
#####サービス概要
Apache AirFlow仮想クラスタ、GCPによりフルマネージドで提供され環境構築や運用保守の工数が大幅に削減できる。ジョブ管理システムでジョブの定義はPyrhonでソースとして管理ができる。DataflowやDataprocなどのサービスを組み合わせが何がどこまで完了しているかを視覚的に確認することが出来るようになる。
####Cloud Dataflow 
データ処理サービス、Cloud Pub/Subやストレージサービスを入力ソースとしデータの加工を行いBigQuery等に出力することが出来る。実行時にのみCompute Engineが作成され処理を行い、処理が終わると削除される。作成されるCompute Engineは最小と最大のノード数が指定でき不可に応じて自動的にスケーリングされる。Cloud Dataflowの定義はJavaかPythonを用いて作成する。 GCPが用意したテンプレートを使うことで、Pub/Sub to BigQuery等を容易に行うことも出来る。 
####Cloud Dataproc
#####サービス概要
Apache Hadoop/Spark仮想クラスタ、GCPによりフルマネージドで提供され環境構築や運用保守の工数が大幅に削減できる。クラスタに対し「Hive」等でDWHを構築できるようになる。スケーリングは容易に行えるが、負荷に応じた自動スケーリングには対応していないので注意が必要である。
#####特記事項
並列処理にGPUを利用することも可能である。
Cloud Strageの中身を直接ジョブで扱うことができるコネクタも用意されている。
BigQueryの読み書きするコネクタも用意されている。


####Cloud Datalab 
#####サービス概要
Jupyter Notebook仮想環境、インタラクティブにデータの可視化・機械学習による分析が行える環境を簡単に構築できる。上記ストレージサービスや下記機械学習サービスと連携できるライブラリが充実している。作成したコード（Python・SQL）はCloud Source RepositoriesにPushして保存しておくことが可能である。
#####特記事項
Pythonライブラリが必要になった場合はpipを使用してインストールすることが可能である。
Auto Shutdown機能によりインスタンス停止を忘れた場合でも自動的にインスタンス停止をしてくれる。

####Cloud Pub/Sub
#####サービス概要
メッセージングサービス、メッセージを中継してくれる。送信するパブリッシャー、受診するサブスクライバーに分かれPub/Subを経由してメッセージをやり取りすることでお互いの状態を確認することなくメッセージのやり取りができるようになる。メッセージの順序制御は行われないので、サブスクライバー側で考慮する必要がある。
#####特記事項
 ストリーミングデータの入り口となりうるサービスである。

###機械学習
####Cloud TPU ベータ版
#####サービス概要
Compute EngineにTPUを接続するサービスである。TPUはTensorFlowの実行に特化したプロセッサーでTensorFlowでの学習や予測を高速で行ってくれる。使えるリージョンが限られており、利用する際は注意が必要である。

####Cloud Machine Learning Engine
#####サービス概要
機械学習モデルの開発・実行環境、TensorFlowの学習・実行環境を提供してれる。学習をするための学習用リソースと学習させたモデルを実行する予測用リソースに大きく分けられる。流れとして以下の流れになる。
1. 学習用リソースとデータで学習させたモデルを作成する
2. 予測用リソースで学習させたモデルを使用して未知のデータの分析をする（学習用モデルをサービス化する）
####Cloud Vision API
#####サービス概要
Googleが学習させた学習済モデルを使用できるAPI、画像データを解析して情報を抽出してくれる。検出した情報と画像の位置を教えてくれる。

#####特記事項
画像データから検出してくれるのは以下の通り。
1. 写真に含まれる文字列
2. 映っているものが何か
3. 顔や物の境界
4. 顔とその表情（感情）
5. 総合的な色の割合
6. よく知られているランドマーク
7. 商品や企業ロゴ
8. 不適切なコンテンツ
9. 画像に含まれるもの（上記2）の類似画像のURL


####Cloud Speech-to-Text API
#####サービス概要
Googleが学習させた学習済モデルを使用できるAPI、音声データをテキストデータに変換してくれる。110以上の言語に対応している。専門用語等の特定の単語をヒントとして登録することが出来る。

#####特記事項
ストリーミングによる解析も可能である。
1分以上の音声の場合、非同期での解析を使用することになる。

####Cloud Text-to-Speech APIベータ版
#####サービス概要
テキストと音声合成マークアップ言語（SSML）をMP3やWAVファイルなどの音声データに変換してくれるAPI、SSMLで単語間の間や略語を略さずに音声データに変換することが出来る。

####Dialogflow Enterprise Edition
#####サービス概要
チャットボットのような対話型のインターフェース実装のためのAPI、あらかじめ決められたワードに返事を返すAPIを定義することができる。

####Cloud Natural Language API
#####サービス概要
Googleが学習させた学習済モデルを使用できるAPI、テキストデータの構造と意味を解析してくれる。テキストから名詞や固有名詞を抽出したり、内容がネガティブなものかポジティブなものかを分析してくれる。
テキストはHTTPSでAPIを叩いて渡したり、Cloud Storage経由で渡すこもの可能である。

####Cloud Talent Solution
#####サービス概要
Googleが学習させたデータを元に求職者に対する高品質な求人情報を返すサービスである。転職求人サイトなどに導入することによりキーワード検索よりマッチする求人情報を提供することが出来るようになる。

####Cloud Translation API
#####サービス概要
Googleが学習させた学習済モデルを使用できるAPI、テキストデータを翻訳してくれる。110以上の言語に対応し、翻訳元の言語が解らない場合も自動て判定してくれる。翻訳元と翻訳先の言語の種類にもよるがニューラル機械翻訳が可能な組み合わせの場合、フレーズベース機械翻訳よりも自然な形で翻訳してくれる。

####Cloud Video Intelligence API
#####サービス概要
Googleが学習させた学習済モデルを使用できるAPI、Cloud Vision APIの動画版である。動画データより映っているものや不適切なコンテンツを検出してくれる。

####Cloud AutoMLベータ版
#####サービス概要
自然言語処理、写真、翻訳を機械学習させる仕組みを一通り提供してくれるサービスである。上記Natural Language、Vision API、Translation APIをオリジナルのデータを使って学習させて拡張させる事が出来る。

###モノのインターネット（IoT）


####Cloud IoT Core
#####サービス概要
ラズパイ等のセンサーに近いIoT機器からGCPへの通信を暗号化してくれるサービスである。デバイスの管理も行うことが出来、デバイスから送られてきたデータをPub/Subへ流すことでIoT機器とGCPの橋渡しを行ってくれる。


###ID とセキュリティ
####Cloud Identity and Access Management
#####サービス概要
各種リソースへのアカウントによる権限制御できるサービスである。ロールと呼ばれる役割で各個別のIDに対して権限を割り当てることができる。サービス使用料の請求だけを管理できる請求先アカウントの設定も可能である。
Googleアカウント、G-Suiteアカウントがアカウントとして使用できる。
App Engine等の各サービスにもサービスアカウントが設定され、それぞれの権限設定も可能である。

####Cloud Identity-Aware Proxy
#####サービス概要
Googleの認証機能を使用できるサービス、認証済のGoogleアカウントかどうかを証明してくれるためこのサービスを経由してWEBアプリケーションを作成するとGoogleアカウントの認証のみで本人確認が行えるようになる。
各リソースへのアクセス権限も設定できる。

####Cloud Key Management Service
#####サービス概要
暗号鍵の管理を行うサービス、サービス経由で暗号鍵を取得することでデータの秘匿性を強化することが出来る。

####Cloud Data Loss Prevention API
#####サービス概要
個人情報を自動で見つけるAPI、見つけた個人情報を削除や暗号化することもできる。画像にある個人情報を削除することも可能である。

####Cloud Armor
#####サービス概要
Load Balancingに対するセキュリティサービスである。DDoS攻撃のブロックやファイヤウォールのようなIPアドレスのホワイトリスト許可・ブラックリスト拒否が出来る。

####Cloud Security Command Center
#####サービス概要
GCP内のリソースやデータに対するセキュリティリスクを透過的に診断を行ってくれるサービスである。Googleやそのパートナー企業が得ているスキルを元にGCP内のサーバの状態やデータからセキュリティ的な診断を行い可視化してくれる。

####Cloud Security Scanner
#####サービス概要
App Engine上で実装されるWEBサービスのセキュリティ診断を行ってくれるサービス。言語は特定される。Compute Engineのセキュリティ診断もあるが現在はα版である。

###オペレーション


####Stackdriver Logging
#####サービス概要
運用監視サービスであるStackdriverの一部の機能である。ミドルウェアやアプリケーションのログを自動で収集し表示する機能がある。
エージェントをインストールすることでAWS EC2のリソースも監視することが可能になる。

####Stackdriver Monitoring
#####サービス概要
運用監視サービスであるStackdriverの一部の機能である。サーバの死活監視やメモリ・CPU等のリソース使用状況を自動で収集し表示する機能がある。
条件を設定してアラートをメールやSlack等に通知する機能もある。

####Stackdriver Error Reporting
#####サービス概要
運用監視サービスであるStackdriverの一部の機能である。アプリケーションのエラーを収集し表示する機能がある。エラーが発生した際に通知する機能もある。

####Stackdriver Trace
#####サービス概要
運用監視サービスであるStackdriverの一部の機能である。アプリケーションのレイテンシ情報を収集し表示する機能がある。ボトルネックになっているアプリケーション・サービスが何なのかを把握するのに役に立つ。

####Stackdriver デバッガ
#####サービス概要
運用監視サービスであるStackdriverの一部の機能である。サービスと言語の組み合わせが特定されるが本番稼働中のアプリケーションに影響を与えずにローカル変数のキャプチャが行えるデバッグ機能である。ログ出力文の追加も可能である。

####Stackdriver Profiler Beta
#####サービス概要
運用監視サービスであるStackdriverの一部の機能である。言語が限定されるが、アプリケーションが消費しているリソースの状況を動的に情報を収集し表示する機能である。CPU使用率やスレッド数、ヒープメモリの量などを動的に収集できるので将来的な必要リソースを見積もるのに役に立つ。

###デベロッパー ツール


####Cloud SDK
#####サービス概要
GCPを操作するコマンドラインツールである。LinuxからWindowsまで様々のOSに対応している。Cloud Shellには最初からインストールされている。

####Container Registry
#####サービス概要
GCP上で動くDockerコンテナリポジトリ、Dockerイメージをインターネットに公開することなくKubernetes Engineから利用することが可能になる。

####Cloud Build
#####サービス概要
YAML形式で記述した一連の流れをビルドするサービスである。ビルドしたファイルはCloud Storageへ保存することが出来る。コンテナはContainer Registryへ格納される。

####Cloud Source Repositories
#####サービス概要
GCP上で動くソースリポジトリ、サービスの中で使用されたコードを保存・管理ができる。

####Cloud Tools for IntelliJ
#####サービス概要
IntelliJ IDEA向けのツール、IntelliJ IDEAでApp Engineのプロジェクトが作りやすくなる。ツールからデプロイすることも可能である。

####Cloud Tools for PowerShell
#####サービス概要
PowerShell上でCloud SDKのようなことが出来るようになるツールである。

####Cloud Tools for Visual Studio
#####サービス概要
Visual Studio上でGCP上で動くASP.NETが作成・デプロイできるようになるツール、ASP.NETはCompute Engine上へデプロイされる。

####Cloud Tools for Eclipse
#####サービス概要
Eclipse向けのツール、EclipseでApp Engineのプロジェクトが作りやすくなる。ツールからデプロイすることも可能である。

####Cloud API
#####サービス概要
GCPの各サービスを操作するAPIを管理してくれるサービスである。どのサービスが何回使われたかなどを可視化してくれる。

####Cloud Shell
#####サービス概要
WEBで動くシェルコンソール、GCPの操作に必要なCloud SDKがあらかじめインストールされているのですぐにGCPを操作することが出来る。起動と停止が自動で行われる。

####Cloud Tools for Android Studio
#####サービス概要
Android Studio向けのツール、Android StudioでApp Engineのプロジェクトが作りやすくなる。

###データ移行


####Storage Transfer Service
#####サービス概要
Cloud Storageへファイルを同期させるサービス。ASW S3や別のプロジェクトにあるCloud Storageからファイルを取得することが出来る。ファイルの転送が終わった際に入力元のファイルを削除することも可能である。スケジュール実行することもでき、実行履歴を後から確認する機能もある。

####Transfer Appliance
#####サービス概要
1ペタバイト以上のファイルをCloud Storageへ格納するサービス。ネットワークを介さずにCloud Storageへ素早くファイルを格納できる。

####Google BigQuery Data Transfer Service 
#####サービス概要
Googleが展開する別のサービス（YouTube等）の情報をBigQueryへ転送するサービスである。あらかじめスケジュールして自動実行することが出来る。

###Resource Manager


####Deployment Manager
#####サービス概要
YAML形式で書かれたテキストに従い、Compute Engineを作成してくれるサービスである。

####Cloud Marketplace
#####サービス概要
GCPで稼働するプロダクトがたくさんあるマーケットプレイスである。メジャーなOSSプロダクトはあらかじめセットアップされたものもあるため、すぐに利用できる。

####Resource Manager
#####サービス概要
GCPのリソースを階層化して管理するサービスである。GCPのリソースとユーザを会社単位や部署単位の階層化されたグループが作成でき、IAMと組み合わせて適切なアクセス制御が行えるようになる。

####Cloud Billing
#####サービス概要
GCPの支払いを管理するサービスである。支払いだけを管理する請求先アカウントの設定や予算とアラートの設定も可能である。


#感想
ある程度試験の準備はできたと思う。いくつか触ったことのないサービスがあるので触ってみるのと、[GCP活用事例](https://cloud.google.com/customers/?hl=ja)があるのでいくつかピックアップしてどんなサービス構成で使っていたのかを予測してモデリングすることで理解を深めていきたいと思う。
次回が試験チャレンジ前の最終更新になるのでしっかりトレーニングしていきたい。

#次回記事投稿予定
2019年2月2日（土）