1K Views
May 10, 25
スライド概要
近年、ソフトウェア開発の効率化と標準化を実現するために、プラットフォームエンジニアリングが注目を集めています。
Azureでは、その代表的なサービスとしてAzure Deployment Environments (ADE) が提供され、開発チームがスムーズに環境を構築し、管理できるようになっています。
このセッションでは、プラットフォームエンジニアリングの基本概念と、それを支えるADEの活用方法について説明します。
プラットフォームエンジニアです。 セキュリティやSRE、インフラなど多岐にやっています。 趣味はタロット。
プラットフォームエンジニアリン グとAzure Deployment Environmentの 活用方法
Agenda ◼ ◼ 自己紹介 プラットフォームエンジニアリングについて ⚫ プラットフォームエンジニアリング(PE)の概要 ⚫ PEが注目されている背景 ⚫ PEのメリット ⚫ DevOpsやSREとの相違点 ⚫ プラットフォームエンジニアリング大事だと思うこと(私個人的見 解) ◼ Azure Deployment Environments(ADE)の概要と活用方法 ⚫ ADEの概要と活用方法 ⚫ CICD統合の利用シナリオにおける具体的な実装例
自己紹介 ◼ 名前:折田菜津子 ◼ 会社:株式会社 エーピーコミュニケーションズ(先月入社してばかり) ◼ 主な業務 ⚫ プラットフォームエンジニアリング • 開発者向けのガードレール策定(自動化含む) ◼ 趣味 タロット(ほぼ毎日1枚引きしています)
このセクションのゴール 以下3つを理解する ⚫ プラットフォームエンジニアリングの大 まかなイメージ ⚫ Azure Deployment Environments(ADE)の概要 ⚫ ADEの活用方法
プラットフォームエン ジニアリングについて
プラットフォームエンジニアリング(PE)の概要 開発者がセルフサービス型でプラットフォームの構築や運用を行えるよう支援するサービ スや専門分野を指す。内部開発プラットフォーム(IDP)は、APIやクラウドインフラ、 CI/CDツール、モニタリングなどの幅広い機能を備えており、プラットフォームチームと いう専門チームがこれを提供することで、開発プロセスを効率化し、開発者の負担を軽減 する。
PEが注目されている背景 ◼ システムの複雑化と開発者の認知負荷増大 ◼ DevOpsの課題 ◼ DXの推進によりスピーディーな開発が求められている
PEが注目されている背景 ◼ システムの複雑化と開発者の認知負荷増大 ◼ DevOpsの課題 ◼ DXの推進によりスピーディーな開発が求められている 近年、コンテナ、マイクロサービス、サーバーレスなどの技術が急速に普 及し、開発の柔軟性は向上した。しかし、その一方で、開発者が扱うべき ツールや知識の範囲が拡大し、システム構成の複雑化が進んでいる。これ により、開発者はアプリケーション開発に加え、インフラの管理や運用、 セキュリティ対策、ツールの連携など、多岐にわたる業務を担う必要が生 じ、「認知負荷」が増大した。
PEが注目されている背景 ◼ システムの複雑化と開発者の認知負荷増大 ◼ DevOpsの課題 ◼ DXの推進によりスピーディーな開発が求められている DevOpsの導入により、開発と運用の協力体制が強化され、ソフトウェア開 発のスピードと品質は向上した。開発者がDevOps基盤の構築や運用まで担 うことが求められるケースが増え、結果として業務負担が過度に増加する 問題も指摘されている。
PEが注目されている背景 ◼ システムの複雑化と開発者の認知負荷増大 ◼ DevOpsの課題 ◼ DXの推進によりスピーディーな開発が求められている DXの推進に伴い、企業は市場の変化に迅速に対応できるソフトウェア開発 を求められている。スピーディーかつ高品質な開発を実現するためには、 開発者が負担を感じることなく、効率的に作業できる環境が必要。
PEが注目されている背景 ◼ 構成の複雑化と開発者の認知負荷増大 ◼ DevOpsの課題 ◼ DXの推進によりスピーディーな開発が求められている 解 決 開発者の負担を軽減し、コーディングに集中できる環境を整えるプラット フォームエンジニアリングが、今注目を集めています。
PEのメリット 1.開発者の生産性向上 • インフラ管理の負担軽減で、開発に集中できる環境を整備 • 作業の自動化により、開発の効率を向上 2.ソフトウェアデリバリーの迅速化 • 標準化されたツールで、アイデアからリリースまでの時間を短縮 • CI/CDの活用で、スムーズな継続的デリバリーを実現 3.ガバナンスとセキュリティの強化 • セキュリティ対策やコンプライアンスをプラットフォームに組み込み、安全性を確保 4.運用効率の向上 • インフラ管理を集約し、開発者が運用作業の負担から解放 5.コスト削減 • 共通基盤の活用と自動化で、開発・運用コストを最適化 6.開発者の満足度向上 • 環境整備により、開発者のエンゲージメントと定着率を向上 7.スケーラビリティと柔軟性の向上 • クラウド技術を活用し、ビジネスの成長に柔軟に対応可能
DevOpsやSREとの相違点 ⚫ DevOpsより開発者の負担を軽減できる DevOpsでは、開発者が開発効率を向上させるために、CI/CD基盤や運用基盤 (Ops)を自ら整備するケースがある。一方、プラットフォームエンジニア リング(PE)では、これらの基盤をプラットフォームチームが用意してくれ るため、開発者は自身のコーディングやアプリケーション開発に専念できる。
DevOpsやSREとの相違点 ⚫ SREの要素が一部として包含されている SREはシステムの信頼性と品質を向上させることを目的としているが、プ ラットフォームエンジニアリング(PE)では、それだけに留まらず、 開発効率の向上やセキュリティ強化を含む、自動化されたプロセスを実現す ることを目指す。 プラットフォームエンジニアリング セキュリティ 強化 信頼性と品 質の確保 開発効率の向上
プラットフォームエンジニアリング大事だと思 うこと(私個人的見解) プラットフォームエンジニアリングは、(知っている限り)成功事例もなくまだ確率していない 分野だが、大事なことは開発者の利便性と制約のバランスと私個人的に考えている。 開発者からのフィー ドバックの反映 標準化されたテンプ レートの活用による品 質の一貫性 バランス 利便性 制約 セキュリティとコンプ ライアンスの強化 開発者の認知負荷軽減 開発者が快適に開発できる環境を整えなければ、モチベーションの低下を招き、結果として エンドユーザーへのサービス品質や企業の利益率にも悪影響を及ぼす。さらに、プラット フォームのセキュリティ対策や品質の一貫性が不十分だと、これもサービスの信頼性低下に つながる。 なので、両方のバランスが大事!
バランスをとるためには?(私個人的見解) ⚫ 各エンジニアチームがある程度役割を認識しつつ、横の つながりで連携していくこと プラット フォームチー ム プラットフォーム テンプレートの提供 開発チーム フィードバック 開発チームからの フィードバック及び DevOps標準化の支援 DevOps標準化 に関する相談 アプリケーション構築/機能改善 アプリエンドユーザーへのヒアリング ヒアリング フィードバック SRE ⚫ 一人一人が自分の役割を自覚したうえで、バランスを取ろうと努 力すること。 例)・開発利便性も考慮したガードレール策定 ・プラットフォームテンプレートのライフサイクルの実装
Azure Deployment Environments(ADE)の概要 と活用方法
ADEの概要と活用方法
Azure Deployment Environments(ADE)とは Azureで提供されているプラットフォームエンジニアリングサービ ス。 プラットフォームチームが用意したインフラストラクチャーテン プレートを使用して、開発者がセルフサービスで展開できる
ADEの構成 デベロッパーセンター Gitプロバイダー (Github、Azure Devopsなど) 環境の種類 カタログ ①同期 Dev Stage プロジェクト 環境定義(テンプレート) Prod ②カタログ参照 環境 開発者ポータル or Azure Developer CLI Dev ④環境デプロイ Stage Prod ③デプロイ操作 操作 開発者 • • • • • • デベロッパーセンター: ADEの最上位のスコープで、開発プロジェクトを管理す るコレクション プロジェクト:開発チームに関連付けるプロジェクト カタログ: IaC テンプレート一式を整理するリソース Gitプロバイダー:カタログのテンプレート管理するソースレポジトリ 環境の種類:開発チームがデプロイできる環境の種類(dev,stage,prodなど) 環境:開発チームがカタログからデプロイしたAzure環境
ADEの利用シナリオ •サンドボックス環境の提供: 開発者が新しい技術やインフラ設計を 試すための自由な環境を構築 •オンデマンドテスト環境: 新機能のテスト用にアドホックな環境を 迅速に作成 •トレーニング・ハンズオンラボ: ワークショップやハッカソン向け の一時的な環境を提供 •CI/CD統合: 開発、テスト、ステージング、運用環境を継続的イン テグレーション・デリバリー(CI/CD)パイプラインに組み込む
ADEの利用シナリオごとの活用方法 (サンドボックス、テスト、ラボ) Gitプロバイダー (Github、Azure Devopsなど) デベロッパーセンター 環境の種類 sandbox test 閲覧者 共同作成者 カタログ 環境定義(テンプレート) ①同期 lab 閲覧者 環境作成者ロール プロジェクト ②カタログ参照 環境 sandbox Test 開発者ポータル or Azure Developer CLI 開発者 ③デプロイ操作 lab 操作 ④環境デプロイ ロール ロール割り当て
ADEの利用シナリオごとの 活用方法(CICD統合) Gitプロバイダー (Github、Azure Devopsなど) デベロッパーセンター 環境の種類 カタログ ①同期 Stage Dev 共同作 成者 環境作成 者ロール 共同作 成者 共同作 成者 環境定義(テンプレート) Prod 共同作 成者 閲覧者 閲覧者 追加のアク セス ②カタログ参照 プロジェクト CICDツール 環境 ③デプロイ操作 開発者 git push or PR作成 ④環境デプロイ Dev 共同作 成者 共同作 成者 Prod Stage 共同作 成者 共同作 成者 閲覧者 閲覧者 CICDサービスアカウントに ロール割り当て 環境作成者以外の追加のロール割り当て
CICD統合の利用シナリオにおける 具体的な実装例
Azure Pipelinesによる環境ライフサイクルの実装 branch feat/xxx branch main ③-1プルリクエスト ④本番環境をデプ ロイ(マージ後) ②開発環境を デプロイ ③-2ステージング 環境をデプロイ ①コードを修正 し、プッシュ ④開発/ステージング環境の 削除 (マージ後トリガー) Prod Env Dev Env Stage Env 開発者 使用されていない環境の 削除(スケジュールパイプ ライン)
Azure Pipelinesによる環境ライフサイクルの実装 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) ⚫ ADEはサンドボックス、ラボ、テスト、CICD統合など様々 な利用シナリオで活用できる
ご清聴ありがとうございました