AWS,Azure,GCPの3大クラウドのDevOps試験に合格してみての個人的比較

以下の記事でAWS、Azure、GCPの3大クラウド(?)のアーキテクト試験について書きましたが、今度はDevOps試験も制覇したので同じ視点で書いていこうと思います。

[AWS,Azure,GCPの3大クラウドのアーキテクト試験に合格してみての個人的比較](https://qiita.com/yomon8/items/f812079d0ce631f73d45
)


今回、取得したのは以下の3試験です。全部DevOpsというワードがついています。

- AWS Certified **DevOps** Engineer - Professional
- Microsoft Certified Azure **DevOps** Engineer Expert （※ 後述しますが試験ではなく認定名です
- Google Cloud Certified - Professional Cloud **DevOps** Engineer

#「そもそもDevOpsって何だっけ？」と考えさせられる
私は普段の仕事でもいわゆるDevOpsという分野には良く関わります。CI/CDのパイプライン作ったり、TerraformやCloudformation作ったり、監視モニタリングの設計したり等々。名刺の肩書きがDevOpsエンジニアだった時期もあります。

そういった仕事やっている中で、漠然と「DevOps」という言葉の意味を理解している気でいました。

ただ、改めて「DevOpsって何？」と聞かれると文脈や時期によって違う気がして、「DevOpsとはこれです」とは自信を持って答えられない部分もありました。

では、DevOpsと名前のついた3試験を合格してみて結果どうだったかと言うと、「そもそもDevOpsって何だっけ？」という部分は余計に強くなったと思います。

以前記事に書いた、[3大アーキテクト試験の比較](https://qiita.com/yomon8/items/f812079d0ce631f73d45
)はクラウドというサービス全体を見るアーキテクトという視点からか、それぞれ特色はあるものの出題範囲としては似通っていました。それに比べると、DevOps試験はDevOpsに対する各社の考えが明らかに試験内容にも反映されていました。

それでは、それぞれの試験について書いていこうと思います。

------
# AWS DevOps Engineer Professional

## 試験について

この3試験では、間違いなくAWSのDevOps試験が一番有名です。Googleで検索すれば、合格者によるブログ情報が沢山見つかると思いますので、ここでは細かくは書きません。

## 試験で聞かれること

内容もオーソドックス（に感じる）でCodeCommit、CodeBuild、CodeDeploy、CloudFormation、SystemsManagerなどなど、これらのサービスをどう使うかが問題として出てきます。以下の試験ページに書いてあることも違和感無しです。

```
- 認定によって検証される能力
  - AWS で継続的デリバリーのシステムと手法を実装して管理する
  - セキュリティコントロール、ガバナンスプロセス、コンプライアンス検証を実装し、自動化する
  - AWS でのモニタリング、メトリクス、ログ記録システムを定義し、デプロイする
  - 高可用性、スケーラビリティ、自己修復機能を備えたシステムを AWS プラットフォームで実装する
  - 運用プロセスを自動化するためのツールの設計、管理、維持を行う
```
引用元： https://aws.amazon.com/jp/certification/certified-devops-engineer-professional/

実際にこれらのサービスに近いサービスはAzureでもGCPでも提供されていて、このAWSの知識を応用すると、他のクラウドでも同類のサービスの使い方を、「AWSのアレと同じね」と比較的スムーズに取得することができるのではないでしょうか。

-----

AWSのDevOps試験内容から感じるのは、AWSのSolution Architect試験と同じ方向性で `「DevOps系のクラウドサービスの正しい使い方」` なのではと感じました。クラウドのサービスを使うエンジニアの認定試験であることを考えればとても正攻法なイメージです。

全部使っているけど、どのDevOps試験から取るか悩むという場合は、一番最初はAWSがオススメな気がします。


-----
# Azure DevOps Engineer Expert

## 試験について
Azureの認定は、複数試験の合格を前提としているものが多くあり、DevOps試験も以下の図のように複数試験の合格が必要です。

DevOpsの認定を取るには、まずは前提となっている以下の2試験のどちらか片方の合格が必要です。

- AZ-103 Azure Administrator Associate(インフラ分野の試験
- AZ-203 Azure Developer Associate(開発分野の試験

その上で、以下のDevOpsの試験に合格すると「Azure DevOps Engineer Expert」として認定されます。

- AZ-400 Azure DevOps Solutions

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/d8b6acd8-7ea7-a914-8f6b-429ffda44631.png)

ちなみに、AZ-400のDevOps試験は出題範囲のドキュメントも全て英語ですし、日本語提供されてる本試験も自動翻訳レベルなので実質英語が必須の試験といえます。技術英語なのと問題数少ないので英語得意でなくても大丈夫だとは思います。

## 試験で聞かれること
上記の通り、複数試験の合格が必要となっている認定なので、求められているものを考えるためには前提試験も含めてみるべきかなと思いました。

私は、「AZ-203 Azure Developer Associate」を前提試験として合格してから、AZ-400 DevOpsの試験に臨みました。

AZ-203 Azure Developer Associateはコード(C#かPowerShell)の穴埋めや、順序入れ替え的な問題が3割程度出題されるような試験です。ある程度の開発の経験がある人からすれば基礎的な内容ではありましたが、私が受けた色々なクラウド試験の中では確実に一番開発スキルが問われる試験でした。出題形式が多肢選択だけでないMicrosoftの試験だからできる出題方法だと思います。（受験側は疲れますが）

他にも、サーバーレスアプリケーションの開発や、CosmosDBの話や、Azure AD絡めた認証・認可やセキュリティ周りなどサービスの使い方が出題されていて、正に盛りだくさんな試験でした。

DevOps試験は、恐らくこの試験を前提に置いていることもあってテクニカルな内容以外も多く出題されました。以下の出題分野で言うと「DevOpsストラテジーのデザイン (20-25%)」や「DevOps開発プロセスの実装 (20-25%)」という分野です。具体的にはGitのブランチ戦略とか、AgileやScrumの進め方などが出題されました。これだけで半分くらいの割合になります。

```
評価されるスキル
- DevOpsストラテジーのデザイン (20-25%)
- DevOps開発プロセスの実装 (20-25%)
- 継続的インテグレーションの実装 (10-15%)
- 継続的デリバリーの実装 (10-15%)
- 依存性管理の実装 (5-10%)
- アプリケーションインフラストラクチャの実装 （15-20%）
- 継続的フィードバックの実装 (10-15%)
```
引用元：https://azure.microsoft.com/ja-jp/services/devops/

逆にテクニカル部分はほとんどが[Azure DevOps](https://azure.microsoft.com/ja-jp/services/devops/)についてでした。CI/CDの昨日だけでなく、[Azure Boards](https://azure.microsoft.com/ja-jp/services/devops/boards/)という、開発管理のアプリケーションレイヤーも含まれます。こういった、Team Foundation Serverからの流れがあり、利用のためにチーム開発の管理手法などの知識が必要になるのが、他のクラウドのDevOps試験との大きな違いの一つかなと思います。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/4364ff21-529c-3575-b5ed-55e3879fb6c7.png)

AWSは自社サービス以外の内容はほとんど試験に出ません。GCPはGCPがオススメするOSSが良く出ます。AzureはOSSに加え、サービス内で連携する外部サービスが出ます。結果、試験対象のクラウド外の技術内容が一番出るのがAzureな気がします。

----

AzureのDevOps試験内容から感じるのは、前提試験で、DevかOps側で手を動かせることを担保した上で、 `DevOps系のサービスの現場導入の前提知識` を問われている試験に感じました。



-----
# GCP Professional Cloud DevOps Engineer
## 試験について
こちらの試験、確か今月(2020/3)リリースされたばかりです。受験できるようになるの待ってたので、リリースされて早速受けに行ってきました。

当然、日本語化されておらず、英語のみの試験で、かつ文章量も比較的多く、私のような英語レベルだと時間ギリギリの試験でした。

試験に合格するとプレゼントがもらえるのもGCPの試験の特徴です。5000～10000円くらいのモノが多くて結構使えるものがあります。今回はpatagoniaのベストを選びました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/be4a5917-f7dd-5b43-c1c2-5b10e83aeba8.png)



## 試験で聞かれること
### 試験名はSREでも良いくらい
受けてみるとわかるのですが、「この試験ってSREの試験だっけ？」という内容です。例えばインシデントが発生した際のSREとしての行動などが出題されます。「あなたは、SREチームに属しています」とか「あなたはSRE principalsの元で動いている組織にいます」的な書き出しで、「インシデント起きたけど、次はどんな次のアクション取る」みたいな問題が1/3くらい出てきます。

試験の帰りに出題分野見てみると、確かに試験内容の一番最初にSREのことが書いてありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/91bc8b23-b95d-48d9-9874-c3e32a7efc5a.png)
引用元： https://cloud.google.com/certification/cloud-devops-engineer



家に帰ってGoogleの方が書いたOreillyのSRE本読み返してみると、こんなコラムがあります。

>「DevOps？それともSRE？」
>> DevOpsは、SRE の中核的な方針のいくつかを、幅広い組織、管理の構造、個人に対して一般化したものと捉えることもできるでしょう。同様に、SRE をDevOps に独特の拡張を少し加えたプラクティスと捉えることもできるでしょう。


DevOps⊂SREという考え方です。恥ずかしながら、「似たような分野あるなー」くらいでSREとDevOpsの関係を見ていたので、勉強になりました。
もう少し具体的に言えば以下のような場面で、SREとして動くには？が想像できるかどうかを問われた出題に感じました。

最近では `class SRE implements DevOps` という風にも発信を始めているようです。
https://www.devsamurai.com/ja/sre-vs-devops/

https://cloud.google.com/blog/ja/products/gcp/incident-management-at-google-adventures-in-sre-land

### CI/CDはKubernetes前提
他のクラウドの試験でもCI/CDは主な出題分野の一つなのですが、コンテナのCI/CDは一部でしかなく、どちらかと言えばVMへのソースコードのデプロイや、Azure App ServiceやElastic BeanstalkへのデプロイがCI/CDのメインシナリオだったと思います。

GCPのDevOps試験では徹頭徹尾、Kubernetesを前提としたCI/CDしか出てないと思います。（k8s以外もあったかもしれませんが忘れるくらい少ない）

GCPの他の試験でもそうですがKubernetes知らないと合格できない内容が多いなという印象です。


------
個人的にGCPのDevOps試験内容から感じるのは `GCPの考えるSREの仕事(DevOps含む)` です。

あくまで私の感想で言えば、GCPの試験に出てくるシステムは全部Kubernetes。Kubernetesシステムに対するDevOps系サービスの使い方。それを行うチームはSREの原則をもとに行動をすべし。

他のクラウドの試験で出ていた分野がGCPの別試験、Professional Cloud Developerでカバーされているという理由もあるのかもしれません。そうだとしても強いメッセージ性を感じる認定試験でした。



# 最後に
最後に各社のDevOpsの説明の引用を載せておきます。これを読んだ上で、もう一度試験内容見てみるとニュアンスがもう少し深まる気がして面白いです。

[AWS - DevOps とは?](https://aws.amazon.com/jp/devops/what-is-devops/)
>DevOps では、従来型のソフトウェア開発と、インフラストラクチャ管理プロセスを使用するよりも速いペースで製品の進歩と向上を達成し、企業がアプリケーションやサービスを高速で配信できるように、文化的な基本方針、プラクティス、ツールが組み合わされています。この高速化により、企業は顧客により良いサービスを提供し、市場競争力を高めることができます。

[Azure - DevOps とは何ですか?](https://azure.microsoft.com/ja-jp/overview/what-is-devops/)
>開発 (Dev) と運用 (Ops) を組み合わせたものである DevOps は、人、プロセス、テクノロジを統合したもので、お客様に継続的に価値を届けます。

[GCP - DevOps](https://cloud.google.com/devops?hl=ja)

>DevOps とは、ソフトウェア デリバリーの速度とサービスの信頼性の向上、ソフトウェアの関係者間で共有するオーナー権限の構築を目的とする、組織的で文化的な仕組みです。





# 参考

AWSは書いてないですが、個別の試験の体験記は、以下の自分のブログの方に記載してます。

[Google Cloud Certified Professional Cloud DevOps Engineerを取得してきました](https://yomon.hatenablog.com/entry/2020/03/19/091043)
[AZ-203 Developing Solutions for Microsoft Azureを合格してきた](https://yomon.hatenablog.com/entry/2020/02/microsoft_az203_cert)
[AZ-400 Microsoft Azure DevOps Solutions に合格してきた](https://yomon.hatenablog.com/entry/2020/02/az400_cert)