Централизованное управление конфигурацией как микросервис в сервисной структуре
Просто интересно, думал ли кто-нибудь там о конфигурации системы как о микросервисе? Я думал, что это будет отличный инструмент для централизованного и внешнего управления конфигурацией в распределенной системе. Благодаря микросервису конфигурации у вас есть центральное место для управления внешними свойствами приложений во всех средах. Он должен быть доступен через Http с функциями шифрования (и может быть расшифрован клиентом).
3 ответа
Обычно централизованная конфигурация является плохой идеей в распределенных системах, поскольку неправильное обновление одного значения (например, сертификата связи) может внезапно вызвать распределенный сбой. Вот почему Service Fabric особо рекомендует, чтобы сервисы имели свою собственную конфигурацию (в пакете конфигурации) и чтобы изменения в конфигурации были версионированы и развернуты так же, как и изменения кода. Это (обычно) предотвращает неправильное изменение конфигурации, влияющее на большинство служб одновременно.
На мой взгляд, ваша идея интересна и правильна. Да, есть рекомендация иметь собственную конфигурацию для каждой службы, но я бы не стал делать это для всех настроек. Выбирай и используй свою голову. С точки зрения того, чего вы пытаетесь достичь, я решил это, используя секреты хранилища ключей Azure (это если вы вообще работаете в Azure). См. https://docs.microsoft.com/en-us/rest/api/keyvault/about-keys--secrets-and-certificates для получения дополнительной информации об описании службы. Вы можете создавать версии, истекать, обновлять и удалять секреты, которые по сути являются парами ключ-значение, т.е. настройками. В дополнение к этому он является безопасным и всегда доступен.
Теперь, если вы хотите пойти дальше и сделать это по-настоящему красиво, получите библиотеку со строгой типизацией конфигурации, например https://github.com/aloneguid/config которой уже есть поставщик AKV https://github.com/aloneguid/config/blob/master/doc/Stores_AzureKeyVault.md
Именно для этого существует проект — Microconfig.IO . Он был разработан для управления конфигурацией микросервисов с помощью выделенных простых шаблонов и имеет сервер для распространения конфигурации.