Azure Deployment Environmentの環境ライフサイクルをAzure Pipelineで実装してみる

1.2K Views

February 19, 25

スライド概要

昨今ではプラットフォームエンジニアリングが注目され、AzureではAzure Deployment Environments(ADE)がその代表サービスになります。 このセッションでは、Azure Pipelineを活用してADEの環境ライフサイクルを実装する方法について解説します。

profile-image

セキュリティエンジニアです。 主にコンテナセキュリティやクラウドセキュリティの業務に従事。 趣味はタロット。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Azure Deployment Environments(ADE ) の環境ライフサイクルをAzure Pipelineで実装してみる

2.

Agenda  自己紹介  プラットフォームエンジニアリングの概要と重要ポ イント  Azure Deployment Environments(ADE)の概要と仕組み  ADEのライフサイクルをAzure Pipelineで実装してみる

3.

自己紹介  ハンドルネーム:風の時代のエンジニニャ  主な業務  プラットフォームエンジニアリング • プラットフォーム設計構築 • セキュリティ施策  SRE • 監視改善(ダッシュボード作成など) • IaCリファクタリング  趣味 タロット(ほぼ毎日占っています)  SNS/Githubアカウント • X :@windagecat • Github:https://github.com/windagecat

4.

このセクションのゴール 以下3つを理解する  プラットフォームエンジニアリング重要 ポイント  Azure Deployment Environments(ADE)の概要  ADEのライフサイクル(CICD)の実装例

5.

プラットフォーム エンジニアリング の概要と重要ポイント

6.

プラットフォームエンジニアリングとは 開発者にセルフサービス型で、プラットフォームの構築と運用を提供する サービスおよび専門分野を指す。 あらかじめ決められたテンプレートを提供することで、開発者の認知負荷 を軽減し、開発コーディングになるべく集中できるようサポートする。 参考:プラットフォーム・エンジニアリングとは何か?ガートナーが解説するDevOps進化の要点

7.

プラットフォームエンジニアリングメリット (Copilotの回答)       内部開発者プラットフォームの構築: 組織内で標準化された開発環境を提供することで、開発者が効率的に仕事を 進めることができます。 デリバリープロセスの標準化とセキュリティ確保: 重要なデリバリープロセスを標準化することで、セキュリティ リスクを最小限に抑えることができます。 サービスレベルアグリーメントの設定と順守: 社内のサービスレベルを明確にし、それを順守することで信頼性が 向上します。 チームのパフォーマンスメトリクスの監視: チームの成果を監視し、パフォーマンスを向上させるためのデータを 提供します。 開発者エクスペリエンスと生産性の向上: 開発環境が整備されていることで、開発者は自分の仕事に集中でき、全 体の生産性が向上します。 再利用可能なコンポーネントとサービスの活用: アプリケーションの構成要素を再利用可能な形で設計し、新しい プロジェクトでも効率的に活用できます。 要約すると、  標準化による品質確保とセキュリティ強化  認知負荷軽減による開発者の生産性向上

8.

プラットフォームエンジニアリングの重要な ポイント(和多志の個人的見解)  各エンジニアチームが各役割を認識し、横のつながりで連携し ていくこと プラットフォーム プラット フォームチー ム テンプレートの提供 フィードバック フィードバック及 び改善提案 DevOps機能に 関する相談 開発チーム アプリケーション構築/機能改善 アプリエンドユーザーへのヒアリング 開発チームごと のDevOps最適化 フィードバック SRE  インフラクチャやセキュリティ、オブザーバービリティ、 IaC 、CICDなどの様々な技術、および様々な開発手法(ス クラム、ウォーターフォール、アジャイル)をバランスよ く組み合わせる。

9.

Azure Deployment Environments(ADE)の概要 と仕組み

10.

Azure Deployment Environments(ADE)とは Azureで提供されているプラットフォームエンジニアリングサービ ス。 プラットフォームチームが用意したインフラストラクチャーテン プレートを使用して、開発者がセルフサービスで展開できる

11.

ADEの用語 • • • • • • デベロッパーセンター: ADEの最上位のスコープで、開発プロ ジェクトを管理するコレクション プロジェクト:開発チームに関連付けるプロジェクト カタログ: IaC テンプレート一式を整理するリソース Gitプロバイダー:カタログのテンプレート管理するソースレポジ トリ 環境の種類:開発チームがデプロイできる環境の種類 (dev,stage,prodなど) 環境:開発チームがカタログからデプロイしたAzure環境

12.

ADEの仕組み① Gitプロバイダー (Github、Azure Devopsなど) デベロッパーセンター 環境の種類 Dev Stage カタログ 環境定義(テンプレート) ①同期 Prod プロジェクト ②カタログ参照 環境 Dev Stage Prod ④環境デプロイ 開発者ポータル or Azure Developer CLI ③デプロイ操作 操作 開発者

13.

ADEの仕組み② Gitプロバイダー (Github、Azure Devopsなど) デベロッパーセンター 環境の種類 Dev カタログ 環境定義(テンプレート) ①同期 Prod Stage ②カタログ参照 プロジェクト 環境 ③デプロイ操作 ④環境デプロイ Dev Stage CICDツール git push or PR作成 Prod 開発者

14.

ADEの仕組み② Gitプロバイダー (Github、Azure Devopsなど) デベロッパーセンター 環境の種類 Dev カタログ 環境定義(テンプレート) ①同期 Prod Stage ②カタログ参照 プロジェクト 環境 ③デプロイ操作 ④環境デプロイ CICDツール git push or PR作成 環境ライフサイクルを実現 Dev Stage Prod 開発者

15.

ADEのライフサイクルを Azure Pipelineで実装してみる

16.

ADEライフサイクルの概要 branch feat/xxx branch main ③-1プルリクエスト ②開発環境を デプロイ ①コードを修正 し、プッシュ ④本番環境をデプ ロイ(マージ後) ③-2ステージング 環境をデプロイ ④開発/ステージング環境の 削除 (マージ後トリガー) Prod Env Dev Env Stage Env 開発者 使用されていない環境の 削除(スケジュールパイプ ライン)

17.

ADEライフサイクルの概要 branch feat/xxx branch main ③-1プルリクエスト ②開発環境を デプロイ ①コードを修正 し、プッシュ ④本番環境をデプ ロイ(マージ後) ③-2ステージング 環境をデプロイ ④開発/ステージング環境の 削除 (マージ後トリガー) Prod Env Dev Env Stage Env 開発者 使用されていない環境の 削除(スケジュールパイプ ライン) マージされずに破棄された ブランチ(修正を破棄する ケースなど)に紐づく環境を 削除するために作成

18.

パイプラインの詳細  環境作成(create-env_deploy-aca.yaml)  環境削除(delete-env-aca.yaml)  スケジュール削除(delete-env-aca-schedule.yaml)

19.

パイプラインの詳細  環境作成(create-env_deploy-aca.yaml)  環境削除(delete-env-aca.yaml)  スケジュール削除(delete-env-aca-schedule.yaml) 環境作成パイプラインは、ア プリコード(src/)の変更時とPR 作成時にトリガー ブランチポリシー(PRトリガー)

20.

パイプラインの詳細  環境作成(create-env_deploy-aca.yaml)  環境削除(delete-env-aca.yaml)  スケジュール削除(delete-env-aca-schedule.yaml) PRをマージ branch main webhook トリガー サービスフック (Azure DevOps ) Logic App ビルドキュー Dev Env 環境削除(並行job) Stage Env

21.

パイプラインの詳細  環境作成(create-env_deploy-aca.yaml)  環境削除(delete-env-aca.yaml)  スケジュール削除(delete-env-aca-schedule.yaml) 毎日0時にスケジュール実行 開発/ステージング環境名 を取得 環境名が存在する UTC-9時間 取得した環境名数分繰り 返し 環境名からブラ ンチ名を取得 Gitレポジトリに ブランチ名が存 在するか確認 存在する スキップ 存在しない 環境削除 環境名が存在しない 処理終了

22.

パイプラインコードは、Github上に公開し ています! windagecat/ADE-Pipeline-ADO →パイプライン実行に必要な環境構築も Terraform化(一部条件あり)して公開してい るので、ぜひ試してみてください!

23.

まとめ  プラットフォームエンジニアリングでは、各エンジニアチー ムが各役割を認識し、フラットな関係で連携していくことが 大事  Azureで提供されているプラットフォームエンジニアリング サービスはAzure Deployment Environments(ADE)  プラットフォームテンプレートのライフサイクルの実装につ いて、状況に合わせて最適化すること

24.

まとめ  プラットフォームエンジニアリングでは、各エンジニアチー ムが各役割を認識し、フラットな関係で連携していくことが 大事  Azureで提供されているプラットフォームエンジニアリング サービスはAzure Deployment Environments(ADE)  プラットフォームテンプレートのライフサイクルの実装につ いて、状況に合わせて最適化すること すべてはバランス

25.

ご清聴ありがとうございました