1.2K Views
February 19, 25
スライド概要
昨今ではプラットフォームエンジニアリングが注目され、AzureではAzure Deployment Environments(ADE)がその代表サービスになります。 このセッションでは、Azure Pipelineを活用してADEの環境ライフサイクルを実装する方法について解説します。
セキュリティエンジニアです。 主にコンテナセキュリティやクラウドセキュリティの業務に従事。 趣味はタロット。
Azure Deployment Environments(ADE ) の環境ライフサイクルをAzure Pipelineで実装してみる
Agenda 自己紹介 プラットフォームエンジニアリングの概要と重要ポ イント Azure Deployment Environments(ADE)の概要と仕組み ADEのライフサイクルをAzure Pipelineで実装してみる
自己紹介 ハンドルネーム:風の時代のエンジニニャ 主な業務 プラットフォームエンジニアリング • プラットフォーム設計構築 • セキュリティ施策 SRE • 監視改善(ダッシュボード作成など) • IaCリファクタリング 趣味 タロット(ほぼ毎日占っています) SNS/Githubアカウント • X :@windagecat • Github:https://github.com/windagecat
このセクションのゴール 以下3つを理解する プラットフォームエンジニアリング重要 ポイント Azure Deployment Environments(ADE)の概要 ADEのライフサイクル(CICD)の実装例
プラットフォーム エンジニアリング の概要と重要ポイント
プラットフォームエンジニアリングとは 開発者にセルフサービス型で、プラットフォームの構築と運用を提供する サービスおよび専門分野を指す。 あらかじめ決められたテンプレートを提供することで、開発者の認知負荷 を軽減し、開発コーディングになるべく集中できるようサポートする。 参考:プラットフォーム・エンジニアリングとは何か?ガートナーが解説するDevOps進化の要点
プラットフォームエンジニアリングメリット (Copilotの回答) 内部開発者プラットフォームの構築: 組織内で標準化された開発環境を提供することで、開発者が効率的に仕事を 進めることができます。 デリバリープロセスの標準化とセキュリティ確保: 重要なデリバリープロセスを標準化することで、セキュリティ リスクを最小限に抑えることができます。 サービスレベルアグリーメントの設定と順守: 社内のサービスレベルを明確にし、それを順守することで信頼性が 向上します。 チームのパフォーマンスメトリクスの監視: チームの成果を監視し、パフォーマンスを向上させるためのデータを 提供します。 開発者エクスペリエンスと生産性の向上: 開発環境が整備されていることで、開発者は自分の仕事に集中でき、全 体の生産性が向上します。 再利用可能なコンポーネントとサービスの活用: アプリケーションの構成要素を再利用可能な形で設計し、新しい プロジェクトでも効率的に活用できます。 要約すると、 標準化による品質確保とセキュリティ強化 認知負荷軽減による開発者の生産性向上
プラットフォームエンジニアリングの重要な ポイント(和多志の個人的見解) 各エンジニアチームが各役割を認識し、横のつながりで連携し ていくこと プラットフォーム プラット フォームチー ム テンプレートの提供 フィードバック フィードバック及 び改善提案 DevOps機能に 関する相談 開発チーム アプリケーション構築/機能改善 アプリエンドユーザーへのヒアリング 開発チームごと のDevOps最適化 フィードバック SRE インフラクチャやセキュリティ、オブザーバービリティ、 IaC 、CICDなどの様々な技術、および様々な開発手法(ス クラム、ウォーターフォール、アジャイル)をバランスよ く組み合わせる。
Azure Deployment Environments(ADE)の概要 と仕組み
Azure Deployment Environments(ADE)とは Azureで提供されているプラットフォームエンジニアリングサービ ス。 プラットフォームチームが用意したインフラストラクチャーテン プレートを使用して、開発者がセルフサービスで展開できる
ADEの用語 • • • • • • デベロッパーセンター: ADEの最上位のスコープで、開発プロ ジェクトを管理するコレクション プロジェクト:開発チームに関連付けるプロジェクト カタログ: IaC テンプレート一式を整理するリソース Gitプロバイダー:カタログのテンプレート管理するソースレポジ トリ 環境の種類:開発チームがデプロイできる環境の種類 (dev,stage,prodなど) 環境:開発チームがカタログからデプロイしたAzure環境
ADEの仕組み① Gitプロバイダー (Github、Azure Devopsなど) デベロッパーセンター 環境の種類 Dev Stage カタログ 環境定義(テンプレート) ①同期 Prod プロジェクト ②カタログ参照 環境 Dev Stage Prod ④環境デプロイ 開発者ポータル or Azure Developer CLI ③デプロイ操作 操作 開発者
ADEの仕組み② Gitプロバイダー (Github、Azure Devopsなど) デベロッパーセンター 環境の種類 Dev カタログ 環境定義(テンプレート) ①同期 Prod Stage ②カタログ参照 プロジェクト 環境 ③デプロイ操作 ④環境デプロイ Dev Stage CICDツール git push or PR作成 Prod 開発者
ADEの仕組み② Gitプロバイダー (Github、Azure Devopsなど) デベロッパーセンター 環境の種類 Dev カタログ 環境定義(テンプレート) ①同期 Prod Stage ②カタログ参照 プロジェクト 環境 ③デプロイ操作 ④環境デプロイ CICDツール git push or PR作成 環境ライフサイクルを実現 Dev Stage Prod 開発者
ADEのライフサイクルを Azure Pipelineで実装してみる
ADEライフサイクルの概要 branch feat/xxx branch main ③-1プルリクエスト ②開発環境を デプロイ ①コードを修正 し、プッシュ ④本番環境をデプ ロイ(マージ後) ③-2ステージング 環境をデプロイ ④開発/ステージング環境の 削除 (マージ後トリガー) Prod Env Dev Env Stage Env 開発者 使用されていない環境の 削除(スケジュールパイプ ライン)
ADEライフサイクルの概要 branch feat/xxx branch main ③-1プルリクエスト ②開発環境を デプロイ ①コードを修正 し、プッシュ ④本番環境をデプ ロイ(マージ後) ③-2ステージング 環境をデプロイ ④開発/ステージング環境の 削除 (マージ後トリガー) Prod Env Dev Env Stage Env 開発者 使用されていない環境の 削除(スケジュールパイプ ライン) マージされずに破棄された ブランチ(修正を破棄する ケースなど)に紐づく環境を 削除するために作成
パイプラインの詳細 環境作成(create-env_deploy-aca.yaml) 環境削除(delete-env-aca.yaml) スケジュール削除(delete-env-aca-schedule.yaml)
パイプラインの詳細 環境作成(create-env_deploy-aca.yaml) 環境削除(delete-env-aca.yaml) スケジュール削除(delete-env-aca-schedule.yaml) 環境作成パイプラインは、ア プリコード(src/)の変更時とPR 作成時にトリガー ブランチポリシー(PRトリガー)
パイプラインの詳細 環境作成(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
パイプラインの詳細 環境作成(create-env_deploy-aca.yaml) 環境削除(delete-env-aca.yaml) スケジュール削除(delete-env-aca-schedule.yaml) 毎日0時にスケジュール実行 開発/ステージング環境名 を取得 環境名が存在する UTC-9時間 取得した環境名数分繰り 返し 環境名からブラ ンチ名を取得 Gitレポジトリに ブランチ名が存 在するか確認 存在する スキップ 存在しない 環境削除 環境名が存在しない 処理終了
パイプラインコードは、Github上に公開し ています! windagecat/ADE-Pipeline-ADO →パイプライン実行に必要な環境構築も Terraform化(一部条件あり)して公開してい るので、ぜひ試してみてください!
まとめ プラットフォームエンジニアリングでは、各エンジニアチー ムが各役割を認識し、フラットな関係で連携していくことが 大事 Azureで提供されているプラットフォームエンジニアリング サービスはAzure Deployment Environments(ADE) プラットフォームテンプレートのライフサイクルの実装につ いて、状況に合わせて最適化すること
まとめ プラットフォームエンジニアリングでは、各エンジニアチー ムが各役割を認識し、フラットな関係で連携していくことが 大事 Azureで提供されているプラットフォームエンジニアリング サービスはAzure Deployment Environments(ADE) プラットフォームテンプレートのライフサイクルの実装につ いて、状況に合わせて最適化すること すべてはバランス
ご清聴ありがとうございました