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)

#やったこと
##書籍によるトレーニング
90%ほど読み終わり。各サービスについては概ね理解することが出来た。9章以降は書籍の筆者が考える仮想の会社が持つ課題を以下にGCPを活用して解決するかの記述があり、GCPのサービスをいかに連携して活用するかが記載されておりサービス活用のイメージしやすくなった。

##公式ドキュメントによるトレーニング
書籍になかったサービスについて公式ドキュメントを使用してトレーニングを行った。コンピューティングとストレージに関してはベータ版サービスも含めて理解できたと思う。理解度は書籍と同様に下記にまとめていく。

##公式模擬試験の受験
未実施

#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
#####サービス概要
ファイルを格納できるオンラインストレージ、バケットを作成しデータを格納できる。クラスを選択できマルチリージョン単一リージョンの選択が出来る。アクセス頻度により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 
#####サービス概要
(未トレーニング)
####Cloud Load Balancing
#####サービス概要
仮想ロードバランサー、HTTP(S)通信を複数の仮想マシンへロードバランスしてくれる。HTTPだけでなくSSLやTCP通信もロードバランスが出来るが、使用できるポートは限られている。
####ダイレクト ピアリング
#####サービス概要 
(未トレーニング)
####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
#####サービス概要
(未トレーニング)
####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 ベータ版
#####サービス概要
(未トレーニング)

####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ベータ版
#####サービス概要
(未トレーニング)

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

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

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

####Cloud Prediction API
#####サービス概要
(未トレーニング)

####Cloud AutoMLベータ版
#####サービス概要
(未トレーニング)

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


####Cloud IoT Core
#####サービス概要
(未トレーニング)
###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
#####サービス概要
(未トレーニング)

####Cloud Armor
#####サービス概要
(未トレーニング)

####Cloud Security Command Center
#####サービス概要
(未トレーニング)

####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
#####サービス概要
(未トレーニング)

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

####Cloud Build
#####サービス概要
(未トレーニング)

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

####Cloud Tools for IntelliJ
#####サービス概要
(未トレーニング) 

####Cloud Tools for PowerShell
#####サービス概要
(未トレーニング)

####Cloud Tools for Visual Studio
#####サービス概要
(未トレーニング)
####Cloud Tools for Eclipse
#####サービス概要
(未トレーニング)
####Cloud API
#####サービス概要
(未トレーニング) 
####Cloud Shell
#####サービス概要
(未トレーニング)
####Cloud Tools for Android Studio
#####サービス概要
(未トレーニング) 
###データ移行


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

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

####Google BigQuery Data Transfer Service 
#####サービス概要
(未トレーニング)
###Resource Manager


####Deployment Manager
#####サービス概要
(未トレーニング)

####Cloud Marketplace
#####サービス概要
(未トレーニング)

####Resource Manager
#####サービス概要
(未トレーニング)

####Cloud Billing
#####サービス概要
(未トレーニング)


#感想
書籍だけではトレーニングが出来ない部分も公式ドキュメントで補えるのはありがたい。ベータ版のサービスだと英語版のドキュメントしかない場合が多いので、理解するのに少し時間がかかってしまった。
サービスは一通り理解できたので次回は模擬試験に挑戦してみたいと思う。

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