この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
AZ-400はDevOpsソリューションの設計と実装がテーマの試験で、前提となる試験(AZ-104 or AZ-204)とこの試験に合格することで DevOps Engineer Expert の資格を取得することができます。
これまで開発経験は全くありませんでしたが、なんとか合格することができましたで今後受験を考えている方に向けて有効と思われるポイントを紹介していきたいと思います。
AZ-400の出題範囲についてはざっくりと把握していることを前提とします。
試験のアウトラインおよび Microsoft公式のラーニングパスはこちらをご確認ください。
【注意】
開発経験が全くない人向けの内容です!具体的には リポジトリやプルリクエスト ってなに? くらいのレベルを想定しています。
また内容は試験勉強を進めるための大前提となっています。より深い知識はMS Learnを活用しましょう。
どのような問われ方をするか?
DevOps全体の流れを把握していることを前提として、何かしらのシチュエーションにおいて最適な解を選択する問題が多く出題されていた印象でした。以下に例題と回答に至るプロセスを記載します。
例:Azure Piplineを使用している状況においてリリースがシステムのパフォーマンスに影響を及ぼしている。条件を満たした場合にのみ運用環境に展開されるようにしたい。どんな機能を使うか?
例:Azure Piplineを使用している状況においてリリースがシステムのパフォーマンスに影響を及ぼしている。条件を満たした場合にのみ運用環境に展開されるようにしたい。どんな機能を使うか?
まずはこの問題がどんなシチュエーションなのかを考えてみます。
”リリース”とありますので、リリースパイプラインに関することが問われています。パイプラインは1つ以上のステージで構成されており、さらにステージの構成要素として 展開前の条件 ⇒ 展開プロセス ⇒ 展開後の条件 という流れとなっています。
今回は ”条件を満たした場合にのみ展開” とあるので展開前に問題がないことを確認できる「ゲート」という機能を使うことが答えとなります。
実際は4択問題が多いので経験がある方であればピンとくるかもしれませんが、私はここまで把握しないと回答にたどり着くことができませんでした・・・。
まず覚えておくこと
まずDevOpsの流れをおさえてどこでどんなサービスが使われるのかを覚えると良いと思います。 上記の例題のように基本的に何かしらの状況において出題されるため、問題を読んで次のことを抑えられれば意図をつかみやすくなると思います。
・その問題がDevOpsの流れのどの部分にあたるのか?
・どんなサービスを使おうとしているのか?
次にDevOpsの大まかな流れを説明します。
DevOpsの大まかな流れ
この図はすでにDevOps環境は整っており、開発者がソースコードを変更したときの流れを表しています。リポジトリやパイプラインといった用語が出てきますが後程解説します。
開発者 ⇒ リポジトリ | 開発者はVisual Studioなどを使ってローカルリポジトリでソースコードを変更します。それをリポジトリにコミットします。 |
リポジトリ ⇒ ビルドパイプライン | リポジトリへのソースコードのチェックイン(など)をトリガーにして、ビルドパイプラインを起動します。 ソースコードから成果物がビルドされます。これが継続的インテグレーション(CI)です。 |
パッケージ管理 ⇒ ビルドパイプライン | ビルドで使用するパッケージを取得します。 |
ビルドパイプライン ⇒ リリースパイプライン | 継続的インテグレーション(CI)によりリリースパイプラインがトリガーされます。アプリケーションがデプロイされます。これが継続的デリバリー(CD)です。 |
リリースパイプライン ⇒ テスト | アプリケーションの受入テストが実行されます。 ※試験には出題されませんでした。 |
テスト ⇒ Webアプリ | アプリケーションがWeb Appなどにデプロイされます。 |
Webアプリ ⇒ 監視 | Application Insightsなどにより正常性、パフォーマンス、使用状況のテレメトリを収集します。 |
監視 ⇒ 開発者 | アプリケーションの運用を、収集したテレメトリにより監視・分析します。 |
開発者 ⇔ バックログ | 作業の計画・追跡をします。 |
DevOpsサービスについて
続いてDevOpsの流れでに登場した役割と対応している代表的なサービスについて説明します。
役割 | Azure DevOps | その他のサービス | 説明 |
リポジトリ | Azure Repos | Github、Subversion | ソースコードの入れ物です。 Azure ReposやGithubは”分散型”と呼ばれ複数の開発者による平行作業が可能になっています。 |
ビルドパイプライン | Azure Pipelines | Jenkins | ソースコードは書いたままでは動きません。コンピューター上で動かすためのいくつかの処理がビルドです。複数の工程があり人力で行うのは非常に手間のようです。これを自動化してくれるのがビルドパイプライン、いわゆる継続的インテグレーション(CI)です。 |
リリースパイプライン | Azure Pipelines | Octopus Deploy | アプリケーションのデプロイを自動化してくれるのがリリースパイプライン、いわゆる継続的デプロイ(CD)です。 リリースはデプロイに至るまでは通常複数のステージに分かれており、ステージの前後に承認やゲートを構成しておくことで展開を止めたり通知を行ったりすることができます。 |
パッケージ管理 | Azure Artifacts | GitHub Package Registry | ビルドやリリースに必要なパッケージと呼ばれるツール(正確には違うかもしれません)を管理するところです。例えばJavaのビルドにはMavenというものが必要で、これをAzure Artifactsに登録しておく必要があります。 |
おわりに
開発経験がない方がAZ-400の勉強の足掛かりになればと思い記事を書いてみました。DevOpsの流れを地図のように考えて現在地を確認するという方法が効果的でしたので、機会があれば是非お試しください。