Google Cloud (GCP)資格受ける前に必読：Professional Cloud DevOps Engineer 編

皆さんこんにちは！株式会社 iret Global Solutions 事業部の浜田です。今回はGCP最近日本語化されて受験者数が増えてきたGoogle Cloud (旧GCP)のDevOpsについて受ける前に知っておいた方が良いことを書いていきたいと思います。


<h1>前提条件

本記事は既に基本的なGCPのサービス、VPC Google Compute Engine, Cloud Functions 等を知っていることを前提としています。

<h1>試験の概要

他の試験と同様、試験時間は2時間で問題数は50問です。AWSは65問あるのに対しGCPは少し問題数が少ないのでありがたいですね。

https://cloud.google.com/learn/certification/cloud-devops-engineer?hl=ja

下記のリンクが試験ガイドになります。

https://cloud.google.com/learn/certification/guides/cloud-devops-engineer?hl=ja


<h1>主に聞かれること

さて、人によってはDevOpsのイメージがつかないかもしれませんが実際試験で聞かれることは<strong>SRE, CI/CDの構築、運用の３つです。</strong>今から一つ一つ説明しておくのでご心配なく。

<h1>SREとは

さてSREになりますが正式名称はSite Reliability Engineeringとなっており正直これが1番肝になってきます。SREの試験と言っても過言ではありません。そんなSREが何なのかというとサービスを構築するにあたってGoogleが提唱するルールみたいなものです。要は可能な限りSREに沿ってシステムを構成していくとGoogle的にベストな物が出来上がるといったものになっています。そんなSREですがあらゆる要素から成り立っているので一部を抜粋させて頂きます。

<h6>自動化</h6>
 まぁこれは機械に任せた方がヒューマンエラーを防げるしエンジニアは他のことに注力できるよねっていう考え方ですね。自動化に関してはGCPだけでなくAWSやAzureも強く提唱しているイメージがあるので試験ではこの辺りを絞ると大分選択肢が絞れると思います。具体的なGCPのリソースで言うとこの後説明するCI/CDパイプラインやGoogle Cloud Deployment Manager が聞かれるかもしれません。


<h6> モニタリングとアラート</h6>
SREは常にリアルタイムでサービスを監視して、有事の際にすぐに通知するといったオペレーション体制に重きを置いています。具体的なサービスで言うとGoogle Cloud MonitoringやGoogle Cloud Loggingといった物が問われる確率が高いですね。

<h6>インシデント管理</h6>
インシデント管理というのは簡単に説明すると異常が発生してサービスが停止した時にダウンタイムとサービスの中断時間を最小限に抑え、復活後に分析して再発防止に努められるような設計をしましょうといった要素になります。僕の時はロールバック戦略の他にインシデントではなかったですがカナリアやBlue/Green、ローリングにトラフィック分割などのデプロイ戦略について聞かれた記憶があります。




<h6>キャパシティプランニング</h6>
キャパシティプランニングとは、システムが予想されるトラフィック負荷を処理できるようにし、必要に応じてスケールさせることで、リソースの空き容量を少なすぎず多すぎず常に最適な状態にしておくことです。


<h3> SLOs, SLIs, SLAsについて</h3>

次にSREsを説明する上で常に出てくるSLOs, SLIs, SLAsについて説明します。<strong>これらの用語の意味を理解しておかないとなかなか合格は困難になってくるのでしっかり覚えておきましょう。

<strong>SLOs </strong>(Service Level Objectives)

SLOsは主に、対象のサービスがどれだけ優位性やパフォーマンスを保つ必要がある要素を数値化して設定した目標みたいなものです。このSLOsの数値が肝となってサービスの質や構成が決まっていきます。
例としてはウェブアプリケーションを持っているとして、その稼働時間のSLOを月の99.9％と定義したとします。これは、サービスが開始されてから月に99.9％の割合で稼働している必要があるということです。

 <strong>SLIs </strong>(Service Level Indicators)

SLIsは、シンプルにいうとSLOが満たされているかどうかを判断するためデータや指標です。SLIsのデータを元に予め設定しておいたSLOs を満たしているか確認します。先述したウェブアプリケーションの例だと、サービスが99.9%稼働しているか確認するための「HTTPリクエストの平均応答時間」の数値といったものがSLIとなってきます。



<strong>SLAs </strong>(Service Level Agreements) 

SLAsは、会社側とお客さん側で取り決めたSLOに関する合意です。SLAを明確にして契約に取り掛かるといった感じです。こちらも先ほどのウェブアプリケーションの例に置き換えると、SLAは「月間99.9％の稼働時間」をサービスのSLOを達成できなかった場合の企業側に対する罰則や対応策だったりの取り決めに当たります。

まとめると、SLOはサービス品質または信頼性の定義する目標値、SLIは実際のパフォーマンスを測定する指標やデータ、SLAはSLOとそれらを満たさない場合の対応を取り決める正式な契約事項です。



<h1>CI/CD</h1>
CI/CDとは「Continuous Integration（継続的インテグレーション）/ Continuous Delivery（継続的デリバリー）」の略称で、何か特定の技術を指すものではなく、ソフトウェアの変更を常にテストし、自動で本番環境に適用できるような状態にしておく開発手法のことです。GCPではCI/CDを構築するために以下のようなサービスが提供されています。

<br>
<br>

 <strong>Cloud Build</strong>
Cloud BuildはGCP上でCI/CDを行うための中核を担うサービスです。
テストやビルドはGCP上にプロビジョニングされたコンテナ内で行われ、
Cloud FunctionsやCloud Runといった様々なコンピューティングサービス上にデプロイすることができます。

https://cloud.google.com/build?hl=ja

<br>
<br>
 
<strong>Cloud Source Repositories</strong>
Cloud Source Repositories は、Google Cloud が提供しているプライベート Git リポジトリです。CI/CD 構築の際はよくGithubかこのCloud Source Repositoriesが使われる印象です。

https://cloud.google.com/source-repositories/docs?hl=ja


 <strong>Artifact Registry</strong>
Container Registryの進化版です。MavenやNPM などのコンテナイメージと言語パッケージを1 か所で管理してよりCI/CDとの相性が良くなりました。<strong>もし試験の選択肢でContainer RegistryかArtifact Registryの2択で迷ったらArtifact Registryの方が良さそうです。</strong>

https://cloud.google.com/artifact-registry?hl=ja


 

<h1>オペレーションによく使われるサービス</h1>


<strong>Cloud Monitoring</strong>
これはAWSで言うcloud Watch のようなもので主にリソースの使用状況や健康状態を数値化して教えてくれます。よく、SLIやSLOを定義するために使われたりします。

https://cloud.google.com/monitoring?hl=ja

 <strong>Cloud Logging</strong>
Cloud Loggingは Google Cloud上のシステム等が生成したログを収集・保管・管理するリソースです。ログの保管先はCloud Loggingのログバケット、Cloud Storage、BigQueryなどがあります。

https://cloud.google.com/logging?hl=ja

<strong>Cloud Trace</strong>
Cloud Trace は、Google Cloudが提供する分散トレーシングシステムで、アプリケーションのパフォーマンス問題を特定、解析等ができるサービスです。 例としては、リクエストを受け取った後にシステム内で行われる各処理にどれぐらいの時間がかかったか、どんなクエリが実行されたかなどを知ることができます。また、ボトルネック等を検出できます。

https://cloud.google.com/trace?hl=ja

<strong>Error Reporting</strong>
Error ReportingはCloud Loggingに記録されたエラー情報をもとに原因が同じと推測されるエラーをグルー化して類似したエラーを自動的にリアルタイムに分類してくれます。エラーが発生したときの原因の切り分けや分類をある程度までは自動で行ってくれルためエラーの原因追及や再発防止に役立ちます。

https://cloud.google.com/error-reporting?hl=ja

<strong>Cloud Profiler</strong>
Cloud Profiler は、本番環境のアプリケーションから CPU 使用率やメモリ割り当てなどの情報を継続的に収集てくれるプロファイラです。収集した情報から情報の生成元であるソースコードが特定されるので、リソースを消費しているアプリケーション部分を特定してくれます。アプリケーションの特定が難しい場合でも、パフォーマンスの特徴をを見分けるときにもよく使われます。

https://cloud.google.com/profiler/docs/about-profiler?hl=ja

<h1>最後に</h1>
さて、いろいろ長々と書いていましたが一番大事なのは問題を解くことです。先述した試験ガイドから範囲の項目をよく調べ、下記の公式試験やUdemy等から練習問題を解き続けてください。

https://docs.google.com/forms/d/e/1FAIpQLSeHlfS9VksepK1crk8WIWTJW_kR1Gti8uf3_w8mfqU1fBNDHw/viewform?hl=ja

また、他のGCP資格も受けたい人は個人的なランキングも載せているので参考に是非。

https://qiita.com/sina-cloud/items/bbe1d263c6b69954867f

それでは皆さん、ご武運を。