Microsoft Ignite 2024 レポート1: Pre-day Sessionで学んだPlatform Engineering関連情報

# はじめに
2024年11月にアメリカのシカゴで開催のMicrosoft Ignite 2024に、初めて現地参加してきました！序盤は少し寒いくらいでしたが、Day 3の昼間は雪がけっこう降っていて寒かったです。Ignite 2025はサンフランシスコ開催のようですので、シカゴと比べて寒さは心配なさそうですね。

今回は現地参加レポートの第一弾として、Ignite 2024のメイン会議の前日(Pre-day/Day 0)に聞いてきたPlatform Engineeringに関するセッション内容を紹介します。この記事がPlatform Engineeringについて知るきっかけになれば嬉しいです。

:::note info
同じく現地参加した弊社同僚も以下の記事にて、Ignite 2024の概要、会場の雰囲気、Pre-day Labの体験内容を紹介しています。こちらもぜひチェックしてみてください！
:::
https://qiita.com/melksg/items/2b068ebae4da071eb35c

# 聴講したセッションの概要
## Pre-day Labs and Sessions
Ignite 2024では、11月19日(火)～22日(金)のメイン会議に対し、メイン会議前日の11月18日(月)をPre-day(Day 0)と呼んでいました。

Pre-dayでは現地参加した人がBadge(参加証)および記念品(リュックと水筒)を受け取ったり、事前申し込み制・有料のオプションとしてPre-day Labs and Sessionsを聴講したりできます。Pre-day翌日の朝に行われるKeynoteは、みんなが良い席を狙って朝から並ぶので、Pre-dayにBadgeをもらっておいた方がスムーズにメイン会議を迎えられます！

Pre-day Labs and Sessionsは13:00～17:00までの時間帯で行われました。ハンズオンで技術を体験できるLabsか、プレゼンを聞くSessionsのタイプがあり、事前申し込みしておいた1つのテーマに参加できます。

## Pre-day session
### 参加経緯
私は普段の業務でDevOpsというキーワードの案件に携わることが多いです。アプリ開発者向けにCI/CD環境を整備したり、クラウドインフラをInfrastructure as Code (IaC) で自動構築する仕組みを考えたりしています。

今回、私は "Platform Engineering for Modern App Development with GitHub and Azure" というPre-dayセッションを聞いてみました。Platform EngineeringはDevOpsから派生した分野ということで、自分の業務に直接生かせる内容が聞けるかなと期待しました。

:::note warn
実際には、AI系のセッションに参加してAIを勉強したかったのですが、AI系は早々に事前申し込みが締め切られているようでしたので断念しました...。早めに申し込んだほうが選択肢が広がります！
:::

ちなみにPre-dayセッション会場の様子はこんな感じで、（おそらく）今年のIgniteのテーマカラーである紫を基調とした照明で照らされていておしゃれでした。「現地来たぞ！」とテンションが上がりましたね。奥のパーティションから登壇者が順番に出てきて発表していました。
![ignite_preday_session.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850264/7dfb073a-cf83-e045-d479-806303e51152.png)


### Platform Engineeringとは？
Platform Engineeringに明確な定義はないようですが、参考までに、Microsoftのドキュメントでは以下のように紹介されています。
> プラットフォーム エンジニアリングは、安全で管理されたフレームワーク内の改善された開発者エクスペリエンスとセルフサービスを通じて、各開発チームのセキュリティ、コンプライアンス、コスト、およびビジネス化までの時間に関する価値を向上させることを目的として、DevOps 原則から構築されたプラクティスです。製品ベースの考え方のシフトと、それをサポートするための一連のツールやシステムの両方です。
> 引用元： https://learn.microsoft.com/ja-jp/platform-engineering/what-is-platform-engineering

例えば、アプリ開発者が使用する開発環境をどうやって容易に提供するかが、Platform Engineeringの検討対象となります。特に、開発者が自分自身で環境を簡単に用意できる「セルフサービス」として提供できることが理想的なようです。

開発者による申請をもとに、インフラエンジニアが仮想マシンを作って、ソフトウェアをインストールして...、というのでは時間がかかってしまって大変です。開発者が「セルフサービス」で開発環境を選んで自動構築し、開発に集中できるのが理想、ということですね。

# セッション内容ハイライト
聴講したPre-dayセッションは、Platform Engineering関連のAzure機能を広く伝えつつ、Igniteメイン会議で行われるPlatform Engineering関連セッションにつなげる、という建付けでした。具体的には、主にStart Right、Stay Right、Get Rightという3点に分けたお話があったので、その一部の内容を紹介します。

## Start Right Templates
アプリ開発者がスムーズに開発を始めるために、インフラエンジニアはどのようなAzureサービスを利用して開発環境を準備できるのか？について紹介されていました。

話されていた内容を抜粋して紹介します。
* 課題：アプリ開発者がアプリの開発を始めるまでに、インフラチームやセキュリティチームと様々なやり取りが必要で、開発着手までがそもそも長くなりがち
  * 開発ワークステーション(例：コーディング環境)の準備：
    * 開発用ノートPCを用意
    * 開発に必要なツール類のインストール
    * ソースコードやクラウドリソースへのアクセス権付与を依頼
    * 他
  * 開発・試験用のアプリ実行環境構築
    * インフラエンジニアにアプリ要件を伝達
    * アプリ開発環境が構築されるのを待つ
    * 設定不備があれば正しく設定されるのを待つ
    * （同様のことが試験環境構築でも起こる...）
    * 他
* Azure機能による効率化：開発者がセルフサービスで環境を構築・利用できるように、以下のAzureサービスを活用可能
  * Microsoft Dev Box: 
    * アプリ開発者に開発ワークステーションを迅速に提供するためのサービス
    * アプリ開発に必要なツール（SDKやバージョン管理システム）がインストールされたワークステーションをアプリ開発者が選択し、セルフサービスでデプロイ・利用
    * ※今回、この機能については紹介程度で、詳細は語られなかった
  * Azure Deployment Environments (ADE): 
    * アプリ開発者にアプリ実行環境（開発環境、試験環境）を迅速に提供するためのサービス
    * 「IaC作っといたよ！使ってね！」というだけでは、IaCの使い方がわからないアプリ開発者は困るので、そのような状況を改善
    * テンプレートカタログ(IaCで構成)と環境構成（サブスクリプション、権限、シークレット）をアプリ開発者が選択し、セルフサービスで開発環境や試験環境をデプロイ・利用
    * 今回のセッションはADEの紹介がメインで、TerraformやAKSに関連したデモも実施された（デモで使用されたコードは「[こちら](https://github.com/danielsollondon/platform-engineering/tree/main/ade/ignite2024)」で公開されている）
* 将来的なビジョンも含めたデモ
  * Copilot（対話型の生成AIチャットアプリ）を使って、要望をもとにADEの環境を自動構築
  * 例えば、「サンドボックス環境を作りたい」とCopilotに入力すると、CopilotがADEのテンプレートを検索
    * 使用するテンプレートを回答すると、Copilotが環境をデプロイ開始
    * デプロイ工程自体は、GitHub Actionsで自動化されたフローが組まれていて、裏でそれが走っているとのこと

## Stay Right Governance
セルフサービスで環境構築できるようにする中で、例えばセキュリティ設定などで意図しない設定をされてしまうと困ります。「正しい環境を維持する」手段として、Azure Policyが紹介されていました。

Azure Policy自体は特に新しいAzureサービスではないですが、Platform Engineeringで柔軟な環境構築を目指す際に有用な「ガードレール」として役立つということです。

話されていた内容を抜粋して紹介します。
* 課題
  * 環境は絶えず変わっていくので、「正しい環境」も進化して変わっていく
  * 環境は成長し、複雑になっていく
  * 手作業で環境の正しさを確認および是正することは困難になる
* 解決策：Azure Policy
  * Azure Policyは、正しい状態を維持するためのガードレールを整備するための手段
  * 各Azureリソースを一定の設定値に強制することで、適切な設定値から逸脱しないように調整
* Azure Policyの利用を始める
  * Azure Policyでは2,500以上の組み込みポリシーが提供されているので、まずはこれらを活用
  * カスタムポリシーを作るなら、Azure Policy定義の記法 (Policy as Code)の練習が必要
    * Azure Policyの利点は、Azure Resource Manager (ARM)と統合されているので、ARMを知っていればポリシーを書きやすいこと
  * いきなりすべての環境にポリシーを適用すると、意図しない結果になることがあるので注意
    * まずはテスト環境にポリシーを適用するなど、段階的に適用していくことも大切

## Get Right Alignment
MicrosoftおよびAzureでは、環境のセキュリティやコンプライアンスの改善に役立つ考え方や機能があり、キーワードベースで複数の概念・機能が紹介されていました。

話されていた内容を抜粋して紹介します。
* Secure Future Initiative (SFI): 
  * Secure by design、Secure by default、Secure operationsという原則をもとに、セキュリティ改善に向けた手法・プラクティスを整理
  * Microsoftの[こちらのサイト](https://www.microsoft.com/ja-jp/trust-center/security/secure-future-initiative)にて詳しく紹介
* GitHub Advanced Security: 
  * 以下のようなセキュリティ関連機能を紹介
    * Secret Scanning
    * Dependabot
    * Security Campaign
* Managed Identities: 
  * アプリの資格情報をクラウド利用者側で管理せず、Microsoft Entraでセキュアに管理

## メイン会議の関連セッション
Pre-dayセッションの終わりに、関連するメイン会議のセッションが紹介されていました（下表の通り）。

いずれの動画も、本記事投稿時点で[IgniteのWebサイト](https://ignite.microsoft.com/en-US/sessions)にてアーカイブ動画が公開されているようですので、興味あればぜひチェックしてみてください！（セッションコードで動画を検索するのが便利です）

|セッションコード|セッションタイトル|
|---|---|
|BRK146|Streamline AI App development with Azure App Platform|
|BRK148|Beyond VDI: Get secure cloud dev environments with Microsoft Dev Box|
|BRK151|Platform engineering: creating scalable and resilient systems|
|BRK139|Getting the most out of Azure DevOps and GitHub|
|BRK140|Accelerate and secure development with DevSecOps and AI|
|BRK152|GitHub Copilot and VS Code: Your AI thought partner|

# Pre-dayセッションを聴講してみて
## セッション内容について
Platform EngineeringはDevOpsから派生した、さまざまな知識やプラクティスで構成される領域であり、今回のPre-dayセッションでも様々な話題について語られていました。個人的には、Azure Deployment Environmentsなどの便利そうなサービスを新たに知ることができましたし、1つのセッションでたくさん学べるお得な機会となりました。

面白かったのは、今年のIgniteの他のセッションは、ほぼAIばかりという印象だったのに対し、このPre-dayセッションはAIにはそこまで触れていなかったことです。DevOpsやPlatform Engineeringで扱う領域は幅広く、開発プロジェクトや組織によってもアプローチが異なるので、AIで効率化するにもまだまだ課題が多い領域なのかな？と感じました。

後日、メイン会議のPlatform Engineering関連セッションの一部を聞きましたが、Pre-dayセッションの内容とほぼ同様のものがありました。Pre-day Sessionである程度情報を得られた部分については、メイン会議で別の内容に時間を割く、ということもできそうです。メイン会議のセッションやその他アクティビティは本当にたくさんありますので！

## セッション形式について

全体で4時間の講義をひたすら聞いている感じで、途中に10分間の休憩はあったものの、かなり疲れました。翌日のKeynoteでも2時間30分だったので、Pre-dayセッションはかなり長いことがわかりますね。

Pre-dayセッションの発表者の一人が序盤に「あとで資料公開するから写真とか撮らなくていいよ！」と言っていたのですが、Pre-dayセッションに関しては本記事投稿時点で資料公開されていないようです。ちなみにメイン会議のセッションは資料公開されていま
す。4時間の内容をすべて記憶するのは無理があるので、Pre-dayで重要な内容が話されていたら、メモを忘れないようにしましょう。

私はPre-dayセッションなので座学でしたが、Pre-day Labに参加してハンズオン的なワークが中心だった場合、時間の長さの感じ方は違ったかもしれません。

# おわりに
今回はIgnite 2024 現地参加レポートの第一弾として、Pre-dayでのPlatform Engineeringに関するセッション内容を紹介しました。Pre-dayセッションはメイン会議前日にいろいろ学べるお得なチャンスだと思いました。

少し調べてみると、Ignite 2023もPre-dayのアクティビティがあったようですので、Ignite 2025も同様の流れになる可能性はあると推測します。今後のIgnite現地参加に興味ある方の参考になれば幸いです。

次回以降は、メイン会議で参加したハンズオン形式のLabというセッションや、Microsoft技術者や技術コミュニティの方々と会話できる空間であるHubについて紹介できればと思います。