農業協同組合の組合員からの出荷予定の受付
地方の農業協同組合が、組合員の農家から翌日の出荷予定を受け付け、集荷場の準備に使う業務を支えます。従量課金プランのAzure FunctionsをHTTPSで公開し、受け付けた内容と実行に必要な状態をストレージアカウントに保存します。職員はApplication Insightsで受付の状況やエラーを確認します。業務の想定はIceShoreが用意した架空の事例です(実在の会社・システムではありません)。 出典: https://github.com/Azure/azure-quickstart-templates/tree/9a286202372ff9a9a4f4465e1ef30d7b0f3650c6 (著作権表示: Copyright (c) 2015 Microsoft Azure/ライセンス: MIT License)。元のファイルを変更せずに掲載しています。ライセンスの全文は、同梱のTHIRD_PARTY_NOTICES.yamlにあります。
アクター
ユースケース
- 翌日の出荷予定の登録
- 職員による受付の状況とエラーの確認
この構成図は、架空の地方の農業協同組合で、組合員の農家から翌日の出荷予定を受け付け、集荷場の準備に使う業務を支えます。受付には、従量課金(Y1)プラン上のAzure Functionsの関数アプリを使います。関数アプリはHTTPS専用(TLS 1.2以上)で公開し、ストレージアカウントとApplication Insightsを組み合わせています。業務の想定はIceShoreが用意した架空の事例です。実在の組合・システムではありません。元になったIaCは、Azure/azure-quickstart-templates(MITライセンス)のARMテンプレートです。
出荷予定の受付を支えるリソース
構成の中心は関数アプリ(Microsoft.Web/sites、kind: functionapp)です。関数アプリは、従量課金プラン(Microsoft.Web/serverfarms、SKU: Y1、tier: Dynamic)上で動きます。この想定では、農家が登録した出荷予定(組合員番号・出荷日・品目・箱数・等級)を関数アプリが受け付け、ストレージアカウントに保存します。テンプレートがストレージアカウント(Microsoft.Storage/storageAccounts)に割り当てているのは、AzureWebJobsStorageで指定されたランタイムの状態と、関数コンテンツのファイル共有です。Application Insights(Microsoft.Insights/components)は、関数アプリから送られるログ・メトリクス・リクエスト追跡などのテレメトリを受け取ります。構成図には、農家から関数アプリへ、さらに関数アプリからストレージアカウントとApplication Insightsへ向かう流れを描いています。
出荷予定の登録と、職員による確認
ユースケースは「翌日の出荷予定の登録」と「職員による受付の状況とエラーの確認」の2つです。1つ目では、組合員の農家が毎日の夕方に、スマートフォンからインターネット経由のHTTPS(ポート443)で翌日に出荷する品目と箱数を登録します。関数アプリはストレージアカウントを読み書きし、Application Insightsにテレメトリを送信します。収穫期の4月〜10月は1日に約300戸が登録し、17時〜19時に集中する想定です。
2つ目では、営農指導課の職員が毎日19時の締め切りの後に、AzureポータルからApplication Insightsを開きます。登録の件数と、エラーの有無を確かめます。農家450戸・職員3人といった数値はIaCに記載がないため、構成図の数値は架空の事例に合わせた想定値です。
元のIaC
出典は、Azure/azure-quickstart-templates(https://github.com/Azure/azure-quickstart-templates、コミット9a286202372ff9a9a4f4465e1ef30d7b0f3650c6、MITライセンス)です。対象ファイルはquickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.jsonです。このファイルは、Bicepから生成されたARMテンプレートです。リソースの種類は、Microsoft.Storage/storageAccounts、Microsoft.Web/serverfarms、Microsoft.Web/sites、Microsoft.Insights/componentsの4つです。関数アプリには、httpsOnly: true、minTlsVersion: 1.2、ftpsState: FtpsOnly、システム割り当てマネージドID、FUNCTIONS_EXTENSION_VERSION ~4が指定されています。ストレージアカウントには、supportsHttpsTrafficOnly: trueとdefaultToOAuthAuthenticationが指定されています。ランタイムはパラメーターでnode・dotnet・javaから選べます。既定値はnodeです。テンプレートには出荷予定を扱う関数のコードは含まれていません。
この構成図の作り方
この構成図は、公開リポジトリのIaCをもとに作成しました。AIがIceShoreのMCPを通して構成図の記述(ADL)を書き、それをIceShoreが描画しています。ADLはARMテンプレートをリソースとして参照し、そのうえで組合員の農家・営農指導課の職員の2つのアクターと、上記の2つのユースケースを記述しています。農業協同組合という業務の想定は、IceShoreが用意した架空の事例です。
よくある質問
ARMテンプレート(azuredeploy.json)から構成図を作れますか?
はい。この構成図は、ARMテンプレートazuredeploy.jsonをもとに作成しています。AIがIceShoreのMCPを通して構成図の記述を書き、IceShoreが描画しました。
この構成でストレージアカウントは何に使われていますか?
テンプレートでは、関数アプリのアプリ設定AzureWebJobsStorageで、Functionsランタイムの状態の保管先として指定されています。また、WEBSITE_CONTENTAZUREFILECONNECTIONSTRINGとWEBSITE_CONTENTSHAREで、関数コンテンツのファイル共有先としても指定されています。受け付けた出荷予定をここに保存するのは、この事例の想定です。
構成図にある農家の戸数や登録の件数は実測値ですか?
いいえ。IaCに利用者規模の記載がないため、架空の事例に合わせて置いた想定値です。
出典: Azure/azure-quickstart-templates(MIT)
IaC を読み込むと、あなたのシステムでもこのような構成図を作れます。 IceShore とは