Ponz Dev Log

ソース派のシステムエンジニアの開発日記

GCP Professional Data Engineer認定取得しました

GCP Professional Data Engineer認定試験に合格してきました! 認定取得にあたり、取得するまでのポイントや試験のことを書いておきます。

cloud.google.com

事前に準備したこと

  • Coursera   - 各サービスのコンセプトやらユースケースを細かく詳しくレクチャーしてくれる。
    • 分量が多いので、概要を掴むくらいを期待するなら重すぎるかも。   - 間に手を動かすパートと小テストがあったから少しは自信がつく

www.coursera.org

  • qwiklabs   - 手を動かす用. アカウントは制限時間ありで用意してくれる

押さえるべきサービス

データに関するサービスだけでなく、セキュリティやログ出力設定まで聞かれます(システムを作る/使う上では基本だもんね)。

ざっと列挙するだけでも以下のサービスを一通り抑える必要がありました。 もちろん、現時点で使っているサービスがあるならそれを掘り下げると良い。自分みたいにほとんど知らないなら、チュートリアルの一つ目だけやって触るだけでもしたほうがいいです。

特にBigQuery, IAM, ストレージ/データベースサービスの使い分け, 機械学習の方法(特徴量エンジニアリングとか)は押さえておく必要がありました。

  • IAM (Identity and Access Management)
    • 権限, 職掌分離を行うサービス。他のクラウドベンダーのIAMとほぼ同じ機能。
  • BigQuery
    • いわゆるデータウェアハウス, 引くレベルで高速にデータをSQLで探索できる。
    • テーブルやビューの作成を作成してデータを保存できるけど、データの検索に重きを置いている印象。
  • Google Cloud Storage
    • ストレージサービス。アクセス頻度やオブジェクトを置くリージョンによって最適なストレージタイプが異なる。(ここはAmazon S3と同じかも)
    • ストレージタイプはリージョンマルチリージョン/ 単一リージョン / 低頻度アクセス用 / アーカイブ用の4タイプ。
  • Cloud Pub/Sub
    • Publish-Subscribe型のメッセージングサービス。
    • プッシュ通知的なpush型, キュー的なpull型の2タイプあり。
  • Cloud Dataflow
    • データ処理のパイプライン(複数のデータ処理を順序づけて/ 並列にして実行する1セット)を構築するサービス。
    • ストリーミングもできるし、バッチ処理もできる。
    • GCPのサービス間(Pub/Sub -> BQ, GCS(Avroファイル) -> BigTable)の転送するだけならば事前に用意されたテンプレートを使えばOK!
    • カスタムの処理を組み込む場合は Apache Beam SDK(Java or Python)で書いてデプロイする。
  • Cloud Datalab
    • Jupyter Notebookのホスティングサービス。
    • Git連携(ungit)だけでなくBigQuery, ML EngineといったGCPのサービスとの連携もできる。
  • Cloud Dataproc
    • Spark / Hadoopホスティングサービス。
    • 一度クラスターを立てたらずっと起動したままではなく、一定時間未使用のまま経過したらクラスターをシャットダウンできるのでお財布に優しい!
    • 既存のSpark / Hadoopで組んだサービスをクラウドに移行するならDataprocに移すのが良いとされる。
  • Cloud Dataprep
    • GUIベースのデータ変換、データクリーニングサービス。
    • BigQueryのテーブルやGCSにおいたCSV等のデータの中身の欠損値を除去したり、テーブルJOINしたりできる。
    • 操作はレシピという形で実行されるけど、実態はDataflowのジョブのようです。
  • Cloud ML Engine
  • Vision API
    • 学習済みの画像認識機械学習モデルをAPI経由で呼び出せるサービス。
    • Amazon RekognitionやWatson Visual Recognitionに相当
    • 認定試験も問題を見る限り、自分でTensorflowでモデル作るよりも既に学習済みのモデルあるならそっち使った方が早いよという意図で扱っているようです。
  • Stackdriver Logging / Monitoring
    • 名前の通り、ログやモニタリングのサービス。
    • ほとんどのサービスでは組み込みでStackdriver Loggingでログを見れるようにはなってる。
  • Cloud Bigtable
    • ワイドカラム型のスキーマを持ったNoSQLデータベース。
    • 読み込み、書き込みのレイテンシが早い。
    • IoT機器からのデータの保存先で使ったり、時系列データをストリーミングして書き込んだ後に分析用にBQへデータを流し込むといったユースケースが考えられる。
  • Cloud SQL / Cloud Spanner
  • Cloud Composer
    • Apache Airflowベースの構成管理, ワークロード管理ツール
    • AWSのCloudFormation + Step Functionを合わせたような印象だけど、複数のサービスを組み合わせたジョブスケジューラーとして最適かも。
  • Cloud Storage Transfer Service
    • 特定のデータソースに格納されたデータをGCSに転送するサービス。
    • データソースには、HTTP/HTTPSのエンドポイントをもつソース / Amazon S3(!?) / GCSが使える!

試験受験したとき

大きく分けて以下2種類。出題数的には前者8割、後者2割でした。ケーススタディは試験の公式サイトに載っているやつそのままです。

  • 特定のユースケースに沿って、どのサービスをどのように使うか
  • ケーススタディに沿って各課題に対するソリューションとしてどのサービスを使うか

時間は2時間ありましたが、1.5時間で一通り解き終わりました。全部見直しするには少し時間が足りなかったです。。。 認定試験のサイトだとケーススタディを猛烈プッシュしていましたが、実際には各サービスについての一問一答形式が多くて焦ります。AWSの試験を受けたことがある方には同じ形式の出題だったと言えば分かりますかね笑

また、ケーススタディはビジネス要件(履歴データを集約して予測分析したい、本番環境を柔軟にスケールさせたい)、技術要件(出来るだけマネージドサービスを使う、Hadoopワークロードはそのまま移行したい etc...)が出題として問われたり、時にはヒントになっていました。 ただ、受験した会場特有なのか分かりませんが、左に問題、右にケーススタディの構成や要件が表示という2窓構成でした。めっちゃ見づらかった。。。

認定試験を通しての学び

Kubernatesを触るために最初に使い始めたGCPでしたが、今回の認定試験の学習を通してデータ分析や分析基盤の構築について学べました。 特に以下のことについては今まで触ったことのあるクラウド(IBM Cloud, AWS)以上に理解できたと自信を持てます。

  • 分析用途のデータ処理パイプライン構築にはどのようなサービスを組み合わせれば良いか。
  • 機械学習サービスは他のクラウドベンダーのAIとは何が違うのか。どのように使うのか。事前に使えるモデルは何か。
  • 分析に使うデータウェアハウスのBigQueryの特徴。
  • ストレージの使い分け。

個人的にはデータをSQLで分析するBigQueryやDataflow, Dataprepと他のクラウドで処理したデータを連携させたりできないかとアイデアを膨らませるいいきかっけになったかと。 例えばAWSGCPの2つを使ってアプリのログのデータ分析をマルチクラウドできるんじゃないか? (冗長かもしれないけど)

  • AWS ECSで動くアプリケーションのログをCloudWatch Logsに集約
  • CloudWatch Logsのログ生成をAmazon SNSのトピックに流し込む
  • SNSをサブスクライブするLambda経由Kinesis Firehoseにデータを入れる
  • Kinesis FirehoseからAWS S3にログをストリーミングで直接保存
  • Cloud Storage Transfer ServiceでS3からGCSにログデータを転送
  • DataflowでGCSからBigQueryに流し込む
  • BigQueryで分析

後日談

認定通ったら社内のPrimary Job Role Specialtyが Application Developer: Google Cloud Microservicesになってました⸜(* ॑꒳ ॑*  )⸝笑 今後はGCP Associate Engineer取ってみたいですね。あとはAWS SAAも!