Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Deployment EnvironmentsによるPlatform Engine...

Azure Deployment EnvironmentsによるPlatform Engineering

Microsoft Azure なんでも会 summer #2で登壇させていただきました。
https://wazug.connpass.com/event/360822/

以下のようなことを話しました。
・Azure Deployment Environments × GitHub/Azure DevOpsによるIDPへの開発環境の配布
・作成される環境の妥当性や品質の担保の方法
・GitHub Copilot×MCPを使ったIaCの設計について

Avatar for yuriemori

yuriemori

August 08, 2025
Tweet

More Decks by yuriemori

Other Decks in Technology

Transcript

  1. Yurie Mori(森 友梨映) • Sr.Consultant(DevOps Engineering)@Avanade • Microsoft MVP for

    Developer Technologies(DevOps) 2024~ • Microsoft MVP for DevOps & Cloud Security 2025~ • Zennでの記事執筆 • 登壇(Microsoft AI Tour Tokyo2025, DevOps Days Tokyo 2025 etc.) • 書籍執筆 • お仕事 • エンタープライズへのDevOpsソリューション( Azure DevOps/GitHub )の導入・構築 • Skills • GitHub, Azure DevOps, GitHub Advanced Security, Azure, IaC(bicep), Defender for Cloud • Please follow me
  2. 2020:Thoughtworks Technology Rader Vol.22 • より多くの企業が、迅速かつ効率的に新しいデジタル ソリューションを展開するために、社内プラットフォーム の構築を進めています。この戦略で成功している企 業は、社内プラットフォームにもプロダクトマネジメント の手法を適用しています。これは、社内の利用者

    (開発チーム)への共感を持ち、設計段階から協 働することを意味します。プラットフォームプロダクトマ ネージャーはロードマップを作成し、プラットフォームが ビジネスに価値をもたらし、開発者体験を向上させ ることを保証します。 Internal Developer Platform(IDP)が 効率的なソリューション展開において重要
  3. 技術の発展による開発基盤構築/運用の難易度Up • True DevOps - “you build it, you run

    it” - has been the guiding methodology behind many development teams for years. However, the harsh reality is that most developers don’t like dealing with infrastructure. It isn’t just a source of significant cognitive load, but it also takes time away from their core job of writing, debugging, and running applications. • This is where Internal Developer Platforms (IDPs) present a significant advantage. By Chris Stepehenson (CTO@Humanitec) https://platformengineering.org/talks-library/devops-is-dead-long-live-platform-engineering • DevOpsは理想的だが、現実として多くの開発者はインフラ対応を好まない。インフラ対応は認知負荷が大きいだけでなく、 開発者のコアな仕事であるアプリケーション開発に集中する時間を奪ってしまう。 • だからこそInternal Developer Platforms (IDPs)には大いなるアドバンテージがある • クラウドネイティブには複雑さとの大きなトレードオフがあります。これらの機能を導入する際に見落とされがちなのが、管理コス トです。抽象化されたシステムと動的な制御は、複雑性の出現と非階層的な通信パターンという新たな課題をもたらします。 By Charity Majors、Liz Fong-Jones、George Miranda: Observability Engineering
  4. DevOpsから見たPE:DevOps-as-a Service • This blog argue that platform engineering is

    essentially an evolution of DevOps into a more structured and service-oriented model, providing a standardized and scalable approach to implementing DevOps practices across organizations. • (中略) Platform engineering represents the evolution of DevOps into a more structured and service-oriented model, effectively embodying the principles of DevOps-as-a-service. By Mark Hornbeek: https://devops.com/platform-engineering-the-evolution-to-devops-as-a-service/ • プラットフォーム・エンジニアリングは本質的にDevOpsをより構造化されたサービス指向モデルへと進化させたものであり、組 織全体でDevOpsプラクティスを実装するための標準化されたスケーラブルなアプローチを提供するものだと主張する。 • (中略)プラットフォーム・エンジニアリングは、DevOpsをより構造化されたサービス指向モデルへと進化させたものであり、 DevOps-as-a-serviceの原則を効果的に体現している
  5. Platform Engineeringの主要な概念 •開発者を“顧客”と捉え、プラットフォームをプロダクトとして提供し、継続的に改善とサポートを行う Platform as a Product •開発者が安全かつ効率的にプロダクトを構築・運用できる標準化された開発プロセスやツールチェーンの提供 Golden Path

    •開発者が自分の用途に応じてプラットフォームをスピーディーに構築 Self-Service •自由と統制のバランスを保つ仕組みの構築(例:テンプレートによるガバナナンスやコストの最適化) ガードレール設計 開発者の体験(DevEx)を起点に再現性・セキュリティ・生産性を両立するための基盤を構築する
  6. ADEの構成 • dev/staging/productionなどの環境断面の定義 • IaCカタログの定義 • Developer Centerから環境断面の定義/カタログ を継承 •

    このプロジェクトはプロダクトやサービス単位で作成 • プロジェクトでのカタログ連携も可 • Managed DevOps PoolのエージェントのVMイ メージ、DevBoxのVMイメージもここで管理される • ポータル上で環境断面とカタログを選択 • Environment nameを定義(※ここで はdev001) 開発者 • カタログで定義された環境が構築される ソース管理 連携 ※Developer portalにアクセスするには Deployment Environment Userのロール が割り当てられていることが必要 Platform Engineerのメンテナンス範囲
  7. Step1. ADE側でDev CenterとProjectを構成 1. Developer Centerを作成する 2. Developer Center用のmanaged idの構成

    3. Environment typeの定義(Dev, Staging, Productionなど) 4. Projectを作成する 5. Projectで利用するEnvironment Typesを選択 6. 開発チームがDeveloper PortalでProjectで管理されている環境、カタログを 利用できるようにDeployment Environment Userのロールを付与
  8. Step2. ソース管理(Azure DevOps/GitHub)で IaCカタログを作成 1. Reposの作成 ※プロダクトのリポジトリとは別で ADE連携用のrepos作成を推奨 2. IaCファイルの作成:bicep/terraform/ARMで

    環境に必要なAzureリソース群を定義 3. IaCの検証 4. lintで構文エラーの有無をチェック 5. What-if検証 6. テスト用RGにきちんと作成されるかを検証 7. environment.yamlを作成し、template pathに2で作成したIaCファイルのパスを定義して push ↑environment.yamlの定義サンプル 出展:https://learn.microsoft.com/ja-jp/azure/deployment- environments/concept-environment-yaml
  9. Step3. カタログをADEに連携 1. Azure Deployment Environmentsの Developer Center/Projectのカタログで[+追 加]を押下 2.

    カタログが存在するAzure DevOps/GitHubの organization、repos、ブランチ、 environment.yamlが存在するフォルダパスを設 定 3. 「自動的に同期する」に すると environment.yamlが更新されたら自動で同期 される(なのでCI/CDの構成は不要)
  10. 開発者としてDev Portalから環境を作成 • https://devportal.microsoft.com/ にアク セス • New Environmentを押下 •

    環境の名前、タイプ、ベースになるカタログを選択し て作成 環境タイプ ベースになるカタログ
  11. 作成される環境の妥当性はどう担保する? 1. 環境の構成前にガードレール設計をちゃんとやる 2. どこからどこまでを開発者が環境作成時に自由に設定できるようにするか? 3. Developer Center側で作成できるリソースに対して制限を設ける 4. environment.yamlで参照されるIaCの品質(そもそもちゃんと動くか、Azure

    リソースの命名に関する制約違反を許容するようになってないか、セキュリティ的な 脆弱性がないか) 5. 基本的にはコードで環境、Azureリソースの定義を行うので、品質やセキュリティの 担保のプラクティスはIaCのDevSecOpsにフォロー 6. 標準的でセキュアなクラウドアーキテクチャの設計
  12. IaCのテスト観点 • PR-Check, CIのワークフローで自動テスト • lintによる構文エラーの有無のチェック:そもそも書き方が正しいか • What-if検証:parameterを設定したときに想定通りに動くか(最低限ここまではPR前に担保) • az

    deployment group createでテスト用RGにデプロイ:実際の環境でIaCの定義通りに作成 されるか • ADEにデプロイ後に確認 • ソース管理ReposとAzure Deployment Environmentsが正常に同期できるか: environment.yamlが正しく書けていたら同期ができるはず • Developer portalから同期したカタログを選択したとき、正しく環境が作成されるか デバッグしやすいようにステップごとに検証ポイントを設定してテスト (しないとデバッグがめちゃくちゃ大変)
  13. Microsoft LearnのMCP×Coding Agent によるIaC設計のサポート • GitHub CopilotのCoding AgentにMS LearnのMCP を設定して、Coding

    AgentがMS Learnの情報 を参照しながら作業できるよ うにする • これによって、ベースラインアー キテクチャやベストプラクティス を参照してAgentが作業し てくれる
  14. References • Thoughtworks Technology Radar Vol. 22 • https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2020/05/tr_technology_rada r_vol_22_en.pdf

    • What is platform engineering? • https://platformengineering.org/blog/what-is-platform-engineering • DevOps.com - Platform Engineering: The Evolution of DevOps • https://devops.com/platform-engineering-the-evolution-to-devops-as-a-service/ • クイックスタート: Azure Deployment Environments を構成する • https://learn.microsoft.com/ja-jp/azure/deployment-environments/quickstart-create-and-configure- devcenter • Azure Deployment Environments の主要な概念 • https://learn.microsoft.com/ja-jp/azure/deployment-environments/concept-environments-key-concepts • environment.yaml のパラメーターとデータ型 • https://learn.microsoft.com/ja-jp/azure/deployment-environments/concept-environment-yaml • Azure デプロイ環境カタログのベスト プラクティス • https://learn.microsoft.com/ja-jp/azure/deployment-environments/best-practice-catalog-structure • コードとしてのインフラストラクチャ (IaC) 向け DevSecOps • https://learn.microsoft.com/ja-jp/azure/architecture/solution-ideas/articles/devsecops-infrastructure-as- code
  15. コマーシャル SRE Magagine9号にDevOps, SRE, Platform Engineeringの成立の歴史と三者間の関係を整理 した記事を寄稿しました。 「DevOps, SRE, Platform

    Engineering: 理 想の開発環境をめぐる思想と実装の旅」 Platform Engineering Meetup Online#4 8/20(水) 19:00-21:00 登壇します↓ 「信頼できる開発プラットフォームをどう作るか? Governance as Codeと継続的監視が導く Platform Engineering」