У нас есть большая система, встроенная в приложения Azure. Он состоит из службы приложений для нашего API и нескольких приложений-функций для серверной обработки.
Каков наилучший способ разрешить этим приложениям совместно использовать конфигурацию?
В настоящее время мы используем шаблоны ARM для настройки переменных среды для каждого приложения, что хорошо для времени развертывания, но нет ничего, что могло бы синхронизировать конфигурацию между приложениями.
Вариант использования может быть флагом функции, который контролирует, работает ли подсистема. Мы можем захотеть, чтобы этот флаг использовался в API и приложении функций. В настоящее время мы можем вручную войти и установить переменную в каждом из приложений, но было бы проще управлять, если бы нам нужно было делать это только в одном месте.
В идеале любое обновление конфигурации будет обнаружено Azure и вызовет перезапуск службы, как в настоящее время происходит с собственной реализацией.
Есть ли хороший готовый способ сделать это? Или я буду создавать свою собственную с таблицей в базе данных и облегченной функцией?
@ImranArshad Это неплохой план. Мы уже используем его для секретов.
Также есть новая служба конфигурации приложений :) docs.microsoft.com/en-us/azure/azure-app-configuration/overview
@juunas Если вы расширите это до ответа, это может быть претендент


Для этого существует руководство/шаблон проектирования от Microsoft, его можно найти в здесь.
Один из способов — использовать новую службу конфигурации приложений: https://docs.microsoft.com/en-us/azure/azure-app-configuration/обзор.
Он предназначен для совместного использования параметров конфигурации между компонентами.
Обратите внимание, что он не предназначен для секретов, для этого предназначен Key Vault.
Передовой опыт в архитектуре: вы можете использовать шаблон внешнего хранилища конфигурации и кэш Redis для совместного использования конфигурации между несколькими приложениями, как описано здесь: https://docs.microsoft.com/en-us/azure/architecture/patterns/external-configuration-store
Подход заключается в том, что вы можете получить эти данные из Appsettings для каждой среды (это можно автоматизировать в конвейере CI/CD). При первом подключении вы сохраняете данные в RedisCache.
Для конфиденциальных данных: используйте Keyvault для хранения секретов/ключей/сертификатов.
Вы рассматривали хранилище лазурных ключей?