Azure Functions とは
あなたは、Tailspin Space Game Web チームの、経営陣によって推進されている新しいマーケティング要件を最も適切に達成する方法についての話し合いに沿って進めます。 チームは、サーバーレス テクノロジ (具体的には Azure Functions) を DevOps プロセスに統合する必要があります。
チームの様子を見てみましょう。
新しい要件
Irwin: このような急な通知で集まってくれてありがとう。 事態はヒートアップし、マーケティング チームがある約束をしたのですが、これは私たち全員にとって複雑な状況を引き起こしかねないものでした。 彼らは本当に私たちのサイトを気に入っています。 彼らは、ランキングは最終的な発売に向けてゲームを宣伝するために使用できると考えています。 当初の計画よりもはるかに大規模なことをしたいと考えているようです。
Mara: それはすばらしいことですよね? Azure を使用しているため、必要に応じてサービスをスケールアウトできます。
Irwin: 彼らはそのアプリケーションに誰もがランキング データを統合できる機能だけを望んでいます。 私たちのサイトに、ゲーム内に、ゲーミングレビュー サイトに、そしてさらには外部ブログや個人サイトにも、同じランキング オプションがあれば最高だと彼らは考えています。 難題の 1 つは、ランキング データの引き出し元になる本稼働データベースをゲーム エンジン チームが現在所有しているということです。 彼らは、今後 API をビルドして所有する必要があると考えています。
Andy: Mara、何か考えはありますか?
Mara: 何か良いアイデアがきっと出てくるでしょう。 これが私のメモです。
- 短期間で回答するためにも、私たちのコードとスキルが使える解決策を見つけなければなりません。
- 機能の小さな部分を独立したサービスにリファクタリングする必要がある。
- 運用環境での管理オーバーヘッドを最小限に抑える必要がある。
- 大量のコミットメントを行うことなく、大規模なスケールが必要である。
"チームは納得してうなずきます"。
自分のマシンで動作させる
ミーティングは解散します。 翌朝、Andy は興奮して Mara のオフィスに立ち寄り、即席のチャットをします。
Andy: わかりました! ランニング API のすべての要件を満たすソリューションを見つけました。 Azure Functions と呼ばれるサーバーレス サービスです。
Mara: すばらしい! どのくらいの時間があればデモができるだろうか。
Andy: 私は既にある物をこしらえています。GitHub リポジトリをフォークし、ランキング コードをリファクターして新しい Azure Functions プロジェクトにしました。 これは、単純な HTTP GET 要求を使用して、ランキング データを公開します。 また、ランキングを要求するときにそのエンドポイントを使用するように Web サイトを更新しました。他の人も同じことができます。
Mara: これはまさに私たちが必要としているもののようです。 メイン サイト プロジェクトの場合と同じように、既存の CI/CD パイプラインを拡張してビルドとデプロイをサポートできます。
Note
このモジュールでは、アプリを Azure Functions に接続する方法については取り上げません。 興味がある場合は、ソース コードを確認してください。 このコードでは、C# の Azure Functions ランタイムを使用して Azure Functions からランキング データを読み取ります。
Azure Functions とは
Azure Functions は、幅広い Azure サーバーレス コンピューティング テクノロジに含まれる特定のオファリングです。 これにより開発者は、ステートレスなサーバーレス環境に存在する単純な関数を簡単に構築することができます。 関数は、HTTP 要求、ストレージ内のデータの変更、キューからのメッセージの受信など、さまざまな方法を使用してトリガーできます。 トリガーのバインドの詳細については、「Azure Functions でのトリガーとバインドの概念」を参照してください。
Tailspin チームはこのシナリオのために Azure Functions を選択しました。これが彼らのすべてのニーズを満たしているためです。
- 短期間で回答するためにも、私たちのコードとスキルが使える解決策を見つけなければなりません。
- ASP.NET Core アプリケーションなら既にあるコードを応用し、ソリューションを短期間で開発できます。
- 機能の小さな部分を独立したサービスにリファクタリングする必要がある。
- 他のアプリケーションのセキュリティ領域を気にすることなく、独立した関数を提供することができる。
- 運用環境での管理オーバーヘッドを最小限に抑える必要がある。
- Azure Functions では、ホスティング環境について心配する必要がなくなる。
- 大量のコミットメントを行うことなく、大規模なスケールが必要である。
- サーバーレス テクノロジの規模は事実上無制限であり、仮想マシンやアプリ サービスよりも高速に自動増減できます。
Azure Functions とその他のサーバーレス テクノロジは、必ずしもすべてのソリューションに適しているわけではありません。 後で、ジョブに適したテクノロジを選択する際に役立つリソースの参照先について説明します。