Azure App Configurationは、アプリケーションのコンフィギュレーションと機能設定をセキュアかつ分かりやすい方法で集中管理する、Microsoftクラウドプラットフォームの新サービスである。先日のMicrosoft Azureのアップデートで同社は、このサービスの一般供与を開始すると発表した。
昨年4月、Microsoftは、無償サービスとしてAzure App Configurationを導入した。Azure Fridayのエピソードで、Azure App Configurationチームの開発者であるJimmy Campbell氏が、ホストのScott Hanselman氏に、App Configurationサービスのユースケースについて説明している。
アプリケーションを一元化すると同時に、アプリケーションレベルでのクエリと個別サイロ化の保証を機能として備えるような単一スポットがあるとすれば、まさにこのサービスがそれです。管理が容易で、コンフィギュレーションの変更履歴や、そういったものを提供することができます。
今回、無償サービスおよび有償サービスとして供与が開始されたAzure App Configurationでは、次のような機能が提供されている。
- 完全マネージドな世界規模のコンフィギュレーションストア
- 任意のAzureアプリケーションのコンフィギュレーション情報をすばやく取得可能
- 保管中および転送中データの完全な暗号化
- .NETやJava Springなど一般的なフレームワークとのネイティブな統合
Betabitのプリンシパルクラウドアーキテクトで、Azure App ConfigurationのアーリーアダプタであるRick van den Bosch氏は、InfoQに次のように語ってくれた。
単なるコンフィギュレーションストアではありません。時刻指定のスナップショットや機能管理、キーとラベルによるフィルタなどが可能な、堅牢かつ完璧なソリューションです。
Azure App Configurationの機能に関する詳細なブログ記事も執筆しているvan den Bosch氏は、さらに.NETやJava Springといったフレームワークとのネイティブな統合によるメリットについても説明してくれた。
Java Spingや.NETといったフレームワークとのネイティブな統合によって、(ほとんどすべての)コードでは、コンフィギュレーションの出所についてまったく意識する必要がなくなり、(既存の)アプリケーションへのAzure App Configurationの統合が簡単に実現できるようになります。
App Configurationのインスタンスは、Azure Portal、Azure Common Line Interface(CLI)、Azure Resource Manager(ARM)テンプレートのいずれかを使えば生成できる。インスタンスが利用可能になれば、アプリケーション設定の管理の開始と機能のアベイラビリティがコントロールできるようになる。例えば、オペレーションオプションであるコンフィギュレーションエクスプローラを使ったキーとバリューの管理が可能になる。
さらに、コードでは、IHostBuilder生成時にAzure App ConfigurationをConfigurationBuilderに追加することで、インスタンスへのアクセスが可能になり、ラベルを指定して値を取り出すことができる。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.ConfigureAppConfiguration((webHostBuilderContext, configurationBuilder) =>
{
var settings = configurationBuilder.Build();
configurationBuilder.AddAzureAppConfiguration(options =>
{
options.Connect(settings["AppConfigurationConnectionString"])
.Select(KeyFilter.Any, "MyLabel");
});
});
});
}
フィルタにラベルを指定しなければ、nullラベルの値のみが取得されるが、ラベルを指定すれば、そのラベルを持った値のみを取り出すことができる。さらにフィルタはスタックすることも可能だ、とVan den Bosch氏はInfoQに説明してくれた。
フィルタがスタックできるので、ユーザ独自の設定をしたり、デフォルトにフォールバックしたりすることも簡単です。
最後に、MicrosoftはKey Vauktサービスもプラットフォーム上で提供しているので、機密情報の他、コンフィギュレーション設定も集中的に保管することは可能だが、Microsoftとしては、アプリケーション設定にはAzure App Configurationサービスを使用して、Key Valutは機密情報に用いることを推奨している。さらに、Azure App ConfigurationはKey Valutをサポートしているので、Key Vaultに格納された機密情報を参照するApp Configuration値を生成することも可能である。van der Bosch氏の説明によれば、
App ConfigurationはKey Vault参照もサポートしているので、Azureのすべてのコンフィギュレーションにとってのワン・ストップ・ショップとなるに違いありません。
Azure App Configurationでは、開発者は2つのティア — 無償および標準(有償)ティア — から選択することができる。後者はサブスクリプション内で無制限なリソース、99.9パーセントのSLAなど、企業レベルの機能を提供する。料金に関する詳細は、"pricing"のページを参照してほしい。