Compartir vía


Multiinquilinato y Azure App Configuration

Azure App Configuration permite almacenar las opciones de configuración de la aplicación. Mediante el uso de Azure App Configuration, puede implementar fácilmente el patrón de almacén de configuración externo. En este artículo, se describen algunas de las características de Azure App Configuration que son útiles al trabajar con sistemas multiinquilino y se ofrecen vínculos a instrucciones y ejemplos sobre cómo usar Azure App Configuration en una solución multiinquilino.

Modelos de aislamiento

Un almacén hace referencia a una única instancia del servicio Azure App Configuration.

En una solución multiinquilino, es habitual tener dos tipos de configuración:

  • La configuración compartida es la que se aplica a varios inquilinos, como la configuración global o la configuración que se aplica a todos los inquilinos dentro de un stamp de implementación. La configuración global se suele almacenar mejor dentro de un almacén compartido de App Configuration. Al seguir este enfoque, se minimiza el número de lugares que tiene que actualizar cuando cambia el valor de una configuración. Este enfoque también minimiza el riesgo de que la configuración pierda la sincronización.

  • La configuración específica del inquilino, como el nombre de la base de datos de cada inquilino o identificadores internos. O bien, es posible que desee especificar distintos niveles de registro para cada inquilino, como cuando va a diagnosticar un problema notificado por un inquilino específico y es necesario recopilar los registros de diagnóstico de ese inquilino. Puede elegir si quiere combinar la configuración específica del inquilino para varios inquilinos en un único almacén o implementar un almacén para cada inquilino. Esta decisión debe estar basada en sus requisitos. Si la solución usa un único nivel de aplicación compartido para varios inquilinos, es probable que haya una ventaja mínima con el uso de almacenes específicos del inquilino. Pero si implementa instancias de la aplicación específicas del inquilino, puede optar por reflejar el mismo enfoque mediante la implementación de almacenes de configuración específicos del inquilino.

En la tabla siguiente se resumen las diferencias entre los principales modelos de aislamiento de inquilinos para Azure App Configuration:

Consideración Almacén compartido Tienda por inquilino
Aislamiento de datos Baja. Uso de prefijos de clave o etiquetas para identificar los datos de cada inquilino Alto
Aislamiento de rendimiento Bajo Alto
Complejidad de la implementación Bajo Medio-alto
Complejidad operativa Bajo Medio-alto
Costo de recursos Bajo Medio-alto
Escenario de ejemplo Solución multi-inquilino grande con un nivel de aplicación compartido Inquilinos de nivel Premium con implementaciones totalmente aisladas

Almacenes compartidos

Puede implementar un almacén compartido de Azure App Configuration para toda la solución o para cada stamp. Después, puede usar el mismo almacén para todas las configuraciones de los inquilinos y puede usar prefijos de clave o etiquetas para distinguirlos.

Si tiene que almacenar una gran cantidad de datos por cada inquilino o si necesita escalar a un gran número de inquilinos, es posible que esté en riesgo de superar cualquiera de los límites de recursos de un único almacén. En este escenario, considere si puede particionar los inquilinos en un conjunto de almacenes compartidos para minimizar los costos de implementación y administración.

Si sigue este enfoque, asegúrese de comprender las cuotas y los límites de recursos que se aplican. Específicamente, tenga en cuenta el límite de almacenamiento total del nivel de servicio que usa y asegúrese de que no vaya a superar las solicitudes máximas por hora.

Almacenes por inquilino

En su lugar, puede optar por implementar un almacén de Azure App Configuration para cada inquilino. El nivel estándar de Azure App Configuration permite implementar un número ilimitado de almacenes en la suscripción. Sin embargo, este enfoque suele ser más complejo de administrar, ya que tiene que implementar y configurar más recursos. También hay un cargo por cada recurso de almacén que implemente.

Considere el uso de almacenes específicos del inquilino si tiene una de las situaciones siguientes:

  • Debe usar claves de cifrado administradas por el cliente, donde las claves son independientes para cada inquilino.
  • Los inquilinos requieren que sus datos de configuración estén completamente aislados de los datos de otros inquilinos. El permiso de acceso de Azure App Configuration se controla en el nivel de almacén, por lo que mediante la implementación de almacenes independientes, puede configurar permisos de acceso independientes.

Características de Azure App Configuration que admiten el multiinquilinato

Al usar Azure App Configuration en una aplicación multiinquilino, hay varias características que puede usar para almacenar y recuperar la configuración específica del inquilino.

Prefijos de clave

En Azure App Configuration, se trabaja con pares clave-valor que representan la configuración de la aplicación. La clave representa el nombre de la configuración. Puede usar una estructura de nomenclatura jerárquica para las claves. En una solución multiinquilino, considere la posibilidad de usar un identificador de inquilino como prefijo para las claves.

Por ejemplo, supongamos que tiene que almacenar una configuración para indicar el nivel de registro de la aplicación. En una solución de un solo inquilino, puede asignar a esta configuración el nombre LogLevel. En una solución multiinquilino, puede optar por usar un nombre de clave jerárquico, como tenant1/LogLevel para el inquilino 1, tenant2/LogLevel para el inquilino 2, etc.

Azure App Configuration permite especificar nombres de clave largos para admitir varios niveles en una jerarquía. Si decide usar nombres de clave largos, asegúrese de comprender los límites de tamaño de las claves y los valores.

Al cargar la configuración de un único inquilino en la aplicación, puede especificar un filtro de prefijo de clave para cargar solo las claves de ese inquilino. También puede configurar la biblioteca del proveedor de Azure App Configuration para recortar el prefijo de clave de las claves, antes de que estén disponibles para la aplicación. Al recortar el prefijo de clave, la aplicación ve un nombre de clave coherente, con los valores de ese inquilino cargados en la aplicación.

Etiquetas

Azure App Configuration también admite etiquetas, lo que le permite tener valores independientes con la misma clave.

Las etiquetas se suelen usar para el control de versiones, para trabajar con varios entornos de implementación o para otros fines de la solución. Aunque puede usar los identificadores de inquilino como etiquetas, no podrá usar las etiquetas para nada más. Por lo tanto, para las soluciones multiinquilino, normalmente es recomendable usar prefijos de clave para administrar la configuración específica del inquilino y usar etiquetas para otros fines.

Si decide usar etiquetas para cada inquilino, la aplicación puede cargar solo la configuración de un inquilino específico mediante un filtro de etiqueta. Este enfoque puede resultar útil si tiene implementaciones independientes de la aplicación para cada inquilino.

Almacenamiento en caché del lado de la aplicación

Al trabajar con Azure App Configuration, es importante almacenar en caché la configuración dentro de la aplicación en lugar de cargarla cada vez que la use. Las bibliotecas del proveedor de Azure App Configuration almacenan en caché la configuración y la actualizan automáticamente.

También debe decidir si la aplicación carga la configuración de un solo inquilino o de todos los inquilinos.

A medida que crece la base de inquilinos, es probable que aumente la cantidad de tiempo y la memoria necesaria para cargar la configuración de todos los inquilinos. Por lo tanto, en la mayoría de los casos, es recomendable cargar la configuración de cada inquilino por separado, cuando la aplicación la necesite.

Si carga las opciones de configuración de cada inquilino por separado, la aplicación debe almacenar en caché cada conjunto de opciones por separado de cualquier otra. En las aplicaciones de .NET, considere la posibilidad de usar una caché en memoria para almacenar en caché el objeto IConfiguration del inquilino y, a continuación, usar el identificador de inquilino como clave de caché. Mediante el uso de una caché en memoria, no es necesario volver a cargar una configuración en cada solicitud, sino que la memoria caché puede quitar las instancias sin usar si la aplicación está bajo presión de memoria. También puede configurar los tiempos de expiración de las opciones de configuración de cada inquilino.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

Otros colaboradores:

  • Arsen Vladimirskiy | Principal Customer Engineer, FastTrack for Azure
  • Zhenlan Wang | Administrador principal de ingeniería de software, Azure App Configuration

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes

Revise los enfoques de implementación y configuración para multiinquilino.