AZ-400: Designing and Implementing Microsoft DevOps Solutions 更新情報 (6/15)

※こちらは、自身のはてなブログをQiitaにも転載したものです。最新ははてなブログを参照してください。また、翻訳の修正などがあれば、コメント欄にて教えてください。

- [AZ-400: Designing and Implementing Microsoft DevOps Solutions 更新情報 (6/15)](https://mappie-kochi.hatenablog.jp/entry/2020/06/12/004500)

# はじめに

AZ-400の試験内容が2020年6月15日に更新されるとのことです。そのため今回は AZ-400 の試験内容のアップデートについて見ていきます。

[試験AZ-400：Microsoft DevOpsソリューションの設計と実装–スキルの測定](https://docs.microsoft.com/ja-jp/learn/certifications/exams/az-400)

また、本試験内容の更新について、MicrosoftのTrainingSupportにも関連する投稿がありました。大幅な試験内容の変更であると、伝えられています。[@chiffon_i](https://twitter.com/chiffon_i) さん、情報提供ありがとうございました。

- [AZ-400の試験内容の更新について](https://trainingsupport.microsoft.com/ja-jp/mcp/forum/all/az/541716ad-49f4-4141-b34d-55a42eb185b3)


# Audience Profile

この試験の受験者は、人、プロセス、およびテクノロジーと協力してビジネス価値を継続的に提供する専門知識を持っている必要があります。  
このロールの責務には、コラボレーション、コード、インフラストラクチャ、ソース管理、セキュリティ、コンプライアンス、継続的インテグレーション、テスト、配信、モニタリング、フィードバックの戦略の設計と実装が含まれます。  
この試験の候補者は、Azureの管理と開発の両方に精通している必要があり、これらの分野の少なくとも1つに精通している必要があります。


# Skills Measured

NOTE: 測定された各スキルの下に表示される箇条書きは、そのスキルの評価方法を示すことを目的としています。 このリストは、完全なものではありません。  

NOTE: ほとんどの場合、試験はプレビュー機能をカバーしていません。一部の機能は、GA（一般提供）の場合にのみ試験に追加されます。  


# Develop an Instrumentation Strategy (5-10%)

## ロギングの設計と実装

* ログフレームワークの評価と構成  
* ログの集計と保存の戦略を設計 (例: Azureストレージ)  
* Azure Monitorを使用したログ集計の設計  
* ログへのアクセス制御の管理 (ワークスペース中心/リソース中心)  
* クラッシュ分析の統合 (App Center Crashes、Crashlytics)  

## テレメトリの設計と実装

* 分散トレースの設計および実装  
* アプリケーションパフォーマンスインジケーターの調査  
* インフラストラクチャパフォーマンスインジケーターの調査  
* 主要なメトリックの定義および測定 (CPU、メモリ、ディスク、ネットワーク)  
* 主要なメトリックアラートの実装 (メール、SMS、webhooks、Teams/Slack)  
* ユーザー分析の統合 (例: Application Insights funnels、Visual Studio App Center、TestFlight、Google Analytics)  

## ロギングおよびモニタリングソリューションの統合

* コンテナー監視の構成および統合 (例: Azure Monitor、Prometheus)  
* 監視ツールの構成と統合 (Azure Monitor Application Insights、Dynatrace、New Relic、Naggios、Zabbix)  
* プラットフォーム監視ツールからフィードバックループを作成 (例: Azure Diagnostics VM 拡張機能、Azure Platform Logs、Event Grid)  
* 監視プラットフォームへのアクセス制御を管理  


# Develop a Site Reliability Engineering (SRE) strategy (5-10%)

## 実用的なアラート戦略の開発

* アラートのベースとなるメトリックの特定と推奨  
* 適切なメトリックを使用してアラートを実装  
* 適切なログメッセージに基づいてアラートを実装  
* アプリケーションのヘルスチェックに基づいてアラートを実装  
* メトリックの組み合わせを分析  
* 劣化したシステムをユーザーに通知するための通信メカニズムの開発  
* 自己復旧活動のアラートを実装 (例: スケーリング、フェイルオーバー)  

## 障害予測戦略の設計  

* 負荷および障害状態に関するシステム動作を分析  
* さまざまな条件下でシステムがいつ失敗するかを計算  
* システムのベースラインメトリックの測定  
* 障害予測戦略に適したツールの推奨  

## ヘルスチェックの設計と実装

* システムの依存関係を分析しヘルスチェックに含める必要のある依存関係を判断  
* サービスのSLOに基づいて正常な応答タイムアウトを計算  
* 部分的なヘルス状況を考慮した設計手法  
* ヘルスチェックをコンピューティング環境と統合  
* さまざまな種類のヘルスチェックを実装 (liveness、起動、シャットダウン)  


# Develop a security and compliance plan (10-15%)

## 認証と承認の戦略を設計

* アクセスソリューションの設計 (Azure AD Privileged Identity Management (PIM), Azure AD
Conditional Access, MFA)  
* Azure AD グループを使用したチームの編成  
* サービスプリンシパルとマネージドIDの実装  
* サービス接続の構成  

## 機密情報管理戦略の設計

* vault ソリューションの評価および構成 (Azure Key Vault, Hashicorp Vault)  
* セキュリティ証明書の生成  
* シークレットストレージと検索戦略を設計  
* シークレットファイルをリリースの一部として展開するための計画の策定  

## セキュリティとコンプライアンスの強化

* セキュリティのための依存関係スキャンの自動化 (コンテナーのスキャン、OWASP)  
* コンプライアンスのための依存関係スキャンの自動化 (ライセンス: MIT、GPL)  
* リスクの評価と報告  
* ソースコードコンプライアンスソリューションの設計 (例: GitHub security、パイプラインベースの解析、Git
フック、SonarQube)  

## ガバナンス施行メカニズムの設計

* Azure ポリシーを実装し組織の要件を適用  
* コンテナスキャンの実装 (静的解析、マルウェア、クリプトマイニング)  
* Azure Container Registryタスクの設計と実装 (例: Azure Policy)  
* セキュリティインシデントに対応するための画期的な戦略の設計  


# Manage source control (10-15%)

## 最新のソース管理戦略の構築

* 異なるソース管理システムの統合/移行  
* 認証戦略の設計  
* 大きなバイナリファイルを管理するための設計アプローチ (例: Git LFS)  
* リポジトリ間共有の設計アプローチ (例: Git サブモジュール、パッケージ)  
* ワークフローフックの実装  

## ソースコードの分岐戦略の計画および実装

* プルリクエスト (PR) ガイドラインの定義による作業項目の相関の強制  
* ブランチのマージ制限の実装 (例: ブランチポリシー、ブランチの保護、マニュアル など)  
* ブランチ戦略の定義 (例: trunkベース、featureブランチ、releaseブランチ、GitHub Flow)  
* PR ワークフローの設計と実装  
* PR コード品質の一貫性のための静的コード分析の実施  

## リポジトリの構成

* ソース管理リポジトリの権限の構成  
* git-tagsでのリポジトリの整理  
* 大容量のリポジトリを処理するための計画  
* すべてのリポジトリ状態でのコンテンツリカバリー計画
* ソース管理からデータを削除  

## ソース管理とツールの統合

* GitHubをDevOpsパイプラインに統合  
* GitHubをID管理ソリューションに統合 (Azure AD)  
* GitOpsの設計  
* ChatOpsの設計  
* 人間が消費するためのソース管理成果物の統合  


# Facilitate communication and collaboration (10-15%)

## デプロイおよびリリース情報をビジネス関係者に伝達する

* Azure Boards、Azure Pipelineを組み合わせたダッシュボードの作成 (Azure DevOpsのカスタムダッシュボード)  
* コスト管理コミュニケーション戦略の設計  
* リリースパイプラインと作業項目の追跡を統合 (例: Azure DevOps、Jira)  
* GitHubをリポジトリとしてAzure Boardsと統合  
* ユーザー分析の伝達  

## DevOpsプロセスドキュメントの生成

* 新入社員のためのオンボーディングプロセスの設計  
* 外部の依存関係の評価と文書化 (例: 統合、パッケージ)  
* アーティファクトの評価と文書化 (例: バージョン、リリースノート)  

## チームメンバーとのコミュニケーションの自動化

* 監視ツールをコミュニケーションプラットフォームと統合 (例: Teams、Slack、ダッシュボード)  
* コミュニケーションプラットフォームを使用して主要なメトリック、アラート、重大度について関係者へ通知 (例: Eメール、SMS、Slack、Teams)  
* ビルドとリリースをコミュニケーションプラットフォームに統合 (例: ビルドの失敗、リリースの失敗)  


# Define and implement continuous integration (20-25%)

## 自動ビルドの設計

* ビルドパイプラインを外部ツールとの統合 (例: 依存関係とセキュリティのスキャン、コードカバレッジ)  
* Quality Gatesの実装 (例: コードカバレッジ、国際化、ピアレビュー)  
* テスト戦略の設計 (例: 統合、ロード、ファズ、API、カオス)  
* 複数のツールの統合 (例: GitHub Actions、Azure Pipeline、Jenkins)  

## パッケージ管理戦略の設計

* パッケージ管理ツールの推奨 (例: GitHub Packages、Azure Artifacts、Azure Automation Runbooks Gallery、Nuget、Jfrog、Artifactory)  
* リンクされたフィードを含むAzure Artifacts実装の設計  
* コードアセットのバージョン管理戦略の設計 (例: SemVer、日付ベース)  
* パッケージの依存関係の評価、更新、および報告の計画 (GitHub Automated Security Updates、NuKeeper、GreenKeeper)  
* パッケージのバージョン管理戦略の設計 (例: SemVer、日付ベース)  
* デプロイメントアーティファクトのバージョン管理戦略の設計  

## アプリケーションインフラストラクチャ管理戦略の設計

* アプリケーションインフラストラクチャの構成管理メカニズムの評価  
* 環境に必要な状態構成の定義と適用  

## ビルド戦略の実装

* ビルドエージェントインフラストラクチャの設計と実装 (コスト、ツールの選択、ライセンス、保守性を含む)  
* ビルドのトリガールールを開発と実装  
* ビルドパイプラインの開発  
* ビルドオーケストレーションの設計 (複数のビルドで構成される製品)  
* ビルドプロセスに設定を統合  
* 複雑なビルドシナリオの開発 (例: コンテナ化されたエージェント、ハイブリッド、GPU)  

## ビルド戦略の維持

* パイプラインの状態の監視 (失敗率、期間、不安定なテスト)  
* ビルドの最適化 (コスト、時間、パフォーマンス、信頼性)  
* CI負荷を分析しビルドエージェントの構成と容量を決定  
* パイプラインの状態の管理  
* 並行して実行するエージェントとジョブの数の特定  
* テスト失敗の調査  

## 組織全体でビルドを標準化するプロセスの設計

* 自己ホスト型ビルドエージェントの管理 (VMテンプレート、コンテナ化 など)  
* 再利用可能なビルドサブシステムの作成 (YAMLテンプレート、Task Groups、Variable Groups など)  


# Define and implement a continuous delivery and release management strategy (10-15%)
 
## デプロイスクリプトとテンプレートの開発

* デプロイメントソリューションの推奨 (例: GitHub Actions、Azure Pipelines、Jenkins、CircleCI など)  
* コードとしてのインフラストラクチャの設計と実装 (ARM、Terraform、PowerShell、CLI)  
* アプリケーションデプロイプロセスの開発 (コンテナ、バイナリ、スクリプト)  
* データベースデプロイプロセスの開発 (移行、データ移動、ETL)  
* リリースプロセスの一部としての構成管理の統合  
* 複雑なデプロイでの開発 (IoT、Azure IoT Edge、モバイル、App Center、DR、マルチリージョン、CDN、ソブリンクラウド、Azure Stack など)  

## オーケストレーション自動化ソリューションの実装

* リリース成果物に応じたリリースターゲットの組み合わせ (例: インフラストラクチャ、コード、アセット など)  
* 依存関係のデプロイメントで信頼できる順序を確保するためのリリースパイプラインの設計  
* 共有リリースの構成とプロセスの整理 (YAMLテンプレート、Variable Groups)  
* リリースゲートと承認プロセスの設計と実装  

## デプロイ環境戦略の計画

* リリース戦略の設計 (ブルー/グリーン、カナリア、リング)  
* リリース戦略の実装 (デプロイメントスロット、ロードバランサー構成の使用、Azure Traffic Manager、機能の切り替え など)  
* デプロイメント環境に適切な望ましい状態ソリューションの選択 (PowerShell、DSC、Chef、Puppet など)  
* 展開中のダウンタイムを最小限に抑えるための計画 (VIPスワップ、ロードバランサー、ローリングデプロイ など)  
* 優先度の高いコード修正に対応するための修正プログラムパス計画の設計  


# 元の学習ガイドと新しい学習ガイドの比較

| 目的 - AZ-400 | 客観的なマッピング | 目的 - AZ-400 (NEW) |  
| :-- | :-- | :-- |  
| **DevOpsストラテジーのデザイン (20-25%)** ||  
| DevOpsツールの移行および統合戦略の推奨 | 密接にマップ | [パッケージ管理戦略の設計](#パッケージ管理戦略の設計)  [ビルド戦略の実装](#ビルド戦略の実装)  [最新のソース管理戦略の構築](#最新のソース管理戦略の構築)  |  
| アジャイル作業管理アプローチの設計および実装 | 密接にマップ | [デプロイおよびリリース情報をビジネス関係者へ伝達](#デプロイおよびリリース情報をビジネス関係者へ伝達) |  
| 品質戦略の設計 | n/a ||  
| 安全な開発プロセスの設計 | 密接にマップ | [セキュリティとコンプライアンスの強化](#セキュリティとコンプライアンスの強化) |  
| ツール統合戦略の設計 | 密接にマップ | [自動ビルドの設計](#自動ビルドの設計)  [チームメンバーとのコミュニケーションの自動化](#チームメンバーとのコミュニケーションの自動化)  [ソース管理とツールの統合](#ソース管理とツールの統合) |  
| **DevOps開発プロセスの実装 (20-25%)** ||  
| バージョン管理戦略の設計 | 密接にマップ | [最新のソース管理戦略の構築](#最新のソース管理戦略の構築)  [ソースコードの分岐戦略の計画および実装](#ソースコードの分岐戦略の計画および実装) |  
| ソース管理の実装と統合 | 密接にマップ | [ソースコードの分岐戦略の計画および実装](#ソースコードの分岐戦略の計画および実装)  [ソース管理とツールの統合](#ソース管理とツールの統合) |  
| ビルドインフラストラクチャの実装と管理 | 密接にマップ | [ビルド戦略の実装](#ビルド戦略の実装) |  
| コードフローの実装 | 密接にマップ | [ソースコードの分岐戦略の計画および実装](#ソースコードの分岐戦略の計画および実装) |  
| モバイルDevOps戦略の実装 |||  
| アプリケーション構成とシークレットの管理 | 密接にマップ | [機密情報管理戦略の設計](#機密情報管理戦略の設計) |  
| **継続的インテグレーションの実装 (10-15%)** |||  
| コード品質とセキュリティポリシーの管理 | 密接にマップ | [自動ビルドの設計](#自動ビルドの設計) |  
| コンテナー構築戦略の実装 | 密接にマップ | [パッケージ管理戦略の設計](#パッケージ管理戦略の設計)  [自動ビルドの設計](#自動ビルドの設計) |  
| ビルド戦略の実装 | 密接にマップ | [ビルド戦略の実装](#ビルド戦略の実装)  [自動ビルドの設計](#自動ビルドの設計) |  
| **継続的デリバリーの実装 (10-15%)** |||  
| リリース戦略の設計 | 密接にマップ | [デプロイスクリプトとテンプレートの開発](#デプロイスクリプトとテンプレートの開発)  [オーケストレーション自動化ソリューションの実装](#オーケストレーション自動化ソリューションの実装) |  
| リリース管理ワークフローの設定 | 大まかにマップ | [デプロイ環境戦略の計画](#デプロイ環境戦略の計画) |  
| 適切なデプロイパターンの実装 | 密接にマップ | [デプロイ環境戦略の計画](#デプロイ環境戦略の計画) |  
| **依存性管理の実装 (5-10%)** |||  
| 依存関係管理戦略の設計 | 密接にマップ | [パッケージ管理戦略の設計](#パッケージ管理戦略の設計) |  
| セキュリティとコンプライアンスの管理 | 密接にマップ | [セキュリティとコンプライアンスの強化](#セキュリティとコンプライアンスの強化) |  
| **アプリケーションインフラストラクチャの実装 (15-20%)** |||  
| インフラストラクチャと構成管理戦略の設計 | 大まかにマップ | [デプロイ環境戦略の計画](#デプロイ環境戦略の計画) |  
| コードとしてのインフラストラクチャの実装 (IaC) | 密接にマップ | [デプロイスクリプトとテンプレートの開発](#デプロイスクリプトとテンプレートの開発) |  
| Azure Kubernetes Serviceインフラストラクチャの管理 | n/a ||  
| インフラストラクチャのコンプライアンスとセキュリティの実装 | 大まかにマップ | [自動ビルドの設計](#自動ビルドの設計) |  
| **継続的フィードバックの実装 (10-15%)** |||  
| イシステムフィードバックメカニズムの推奨と設計 | 密接にマップ | [ロギングの設計と実装](#ロギングの設計と実装)  [ロギングおよびモニタリングソリューションの統合](#ロギングおよびモニタリングソリューションの統合)  |  
| システムフィードバックを開発チームにルーティングするプロセスの実装 | 密接にマップ | [チームメンバーとのコミュニケーションの自動化](#チームメンバーとのコミュニケーションの自動化) |  
| フィードバックメカニズムの最適化 | 密接にマップ | [実用的なアラート戦略の開発](#実用的なアラート戦略の開発)  [障害予測戦略の設計](#障害予測戦略の設計)  [ヘルスチェックの設計と実装](#ヘルスチェックの設計と実装) |