Al identificar una parte de la solución de software de la empresa para que pueda no llevar marca y comercializarse para otras empresas, se agrega toda una nueva secuencia de ingresos para una compañía. Sin embargo, la configuración de la solución para tener en cuenta la carga que supone un gran número de inquilinos suele ser un obstáculo desafiante. Esta solución recorre un conjunto de tecnologías de Azure que protegen y equilibran el tráfico.
Architecture
Descargue un archivo Visio de esta arquitectura.
Flujo de trabajo
Un conjunto de tecnologías de Azure protegen y equilibran la carga del tráfico.
Microsoft Azure Front Door controla algunas tareas iniciales:
Proceso de la solicitud inicial
Equilibrio de carga entre las regiones
Terminación y descarga de SSL (HTTPS)
Conmutación por error si hay una interrupción regional
Azure DNS administra los registros DNS y garantiza el enrutamiento al punto de conexión correcto de Azure Front Door.
La arquitectura usa Microsoft Entra ID como proveedor de identidades para la autenticación.
Una vez que se haya enrutado a la región adecuada, Application Gateway enruta y equilibra la carga, dirigiendo las solicitudes a la instancia de Azure App Service adecuada.
En esta arquitectura, el uso de App Service es el servicio preferido para:
Cualquier aplicación basada en HTTP.
Servir contenido web.
Exponer las API de RESTful.
Implementar la lógica de negocios detrás de la aplicación de front-end.
Puede configurar App Service para el escalado automático vertical y horizontal. Hace que App Service sea una buena opción para escalar un host de solicitudes a petición controladas por HTTP de inquilino.
Los servicios de nivel de acceso a datos también se escalan de forma independiente en función de la carga. Los servicios de datos administran modelos de datos, clientes de conexión y controladores. Los servicios también proporcionan una interfaz de datos coherente para todos los servicios de nivel superior que quieran consumir datos en la aplicación. Puede implementar y escalar estos servicios de datos mediante Azure Kubernetes Service (AKS). Cada clúster de AKS es responsable de un conjunto de características relacionadas en la capa. AKS puede implementar una arquitectura de microservicios, que incluye una serie de contenedores que encapsulan, cada uno, una funcionalidad específica dentro del clúster. Esto permite un alto grado de abstracción y desacoplamiento dentro del código. También permite escalar horizontalmente los clústeres de forma individual para tener en cuenta el aumento de la carga de varios inquilinos. Cada clúster puede escalar verticalmente sus recursos si aumenta la carga en el clúster. El escalado vertical no afecta a los demás clústeres del grupo de recursos, siempre y cuando no experimenten el mismo aumento.
Almacene y administre los datos relacionales fuera del marco de trabajo de la aplicación. Al hacerlo, se proporciona un único punto de entrada de datos para cualquier región. La replicación, la disponibilidad, la escalabilidad y la seguridad son factibles aprovechando la capacidad de los Grupos elásticos de Azure SQL. Aprovisione cada inquilino con una base de datos en un grupo. Asigne los recursos disponibles en el grupo a las bases de datos a petición a medida que entre la carga y las solicitudes. Esto optimiza los recursos de base de datos disponibles para los inquilinos con respecto a su presupuesto.
Componentes
Los componentes principales son los componentes sugeridos para la arquitectura de esta solución. Si alguno de los componentes principales no se ajusta a su arquitectura, consulte la lista de componentes alternativos.
Componentes principales
Azure Front Door: un equilibrador de carga regional que enruta el tráfico de cliente a la región correcta. Puede conmutar por error a la segunda región si se produce un error en la región y puede proteger el punto de entrada con conexión a Internet a través de Azure Web Application Firewall.
Microsoft Entra ID: actúa como proveedor de identidades para toda la aplicación, aplicando la autenticación y la autorización de un extremo a otro de la solicitud en la aplicación.
Azure DNS: un servicio de hospedaje en Azure para la resolución de nombres de dominio. En una solución para varios inquilinos, los distintos clientes acceden a la solución a través de sus propios dominios individuales. Use Azure DNS para configurar y resolver las solicitudes de cliente a su pila de aplicaciones correcta.
Application Gateway: enruta el tráfico internamente en la aplicación a los diversos servicios que satisfacen las necesidades empresariales de los clientes y equilibra la carga. Aunque Azure Front-Door equilibra la carga en las regiones de nivel superior, es la instancia de Application Gateway la que reconoce la carga en los servicios individuales dentro de un grupo. Azure Front Door y Application Gateway se combinan para proporcionar un equilibrio de carga complejo en todos los niveles de una solución de varios inquilinos. Para más información sobre las opciones de equilibrio de carga en Azure, visite esta información general sobre el equilibrio de carga de Azure.
App Service: servicio Premier de Azure para aplicaciones web y las API basadas en web. La seguridad se integra con servicios como Microsoft Entra ID y Azure Key Vault. Configuración de escalado automático Además, la cantidad de recursos disponibles para escalar es flexible entre los distintos planes de App Service en los que se puede ejecutar la aplicación. App Service también puede aprovechar las capacidades integradas de DevOps para la integración e implementación continuas en varios entornos. Estas y otras características de soporte técnico de la plataforma Azure permiten a los desarrolladores centrarse en el desarrollo de sus aplicaciones.
Azure Kubernetes Service: orquesta las instancias de las imágenes de contenedor implementadas en un clúster. La administración de los datos de varios clientes suele implicar la implementación de un conjunto de componentes para administrar:
Modelado de datos
Conectividad de origen de datos
Extraer, transformar y cargar (ETL)
Actividades de importación y exportación
El desarrollo de muchos componentes más pequeños como microservicios basados en contenedores crea un escenario ideal para la implementación en un clúster de AKS. En el marco se integran herramientas para el escalado automático, equilibrio de carga y capacidad de actualización. AKS se integra bien con una estrategia de integración continua y entrega continua (CI/CD) mediante las características disponibles de DevOps y Azure Container Registry.
Grupos elásticos de Azure SQL: proporcionan una solución para administrar un conjunto de bases de datos de forma flexible con un grupo de recursos. El servicio asigna recursos a petición a las bases de datos. Proporciona al desarrollador de una arquitectura SaaS multiinquilino la capacidad de entregar recursos de base de datos a los clientes a medida que los necesitan. El servicio también reduce el presupuesto y la sobrecarga que supone mantener varios servidores SQL Server con grandes fragmentos de recursos de proceso no utilizados.
Azure Cognitive Search (anteriormente denominado Azure Search): un servicio que agrega un potente motor de indexación y consulta a la aplicación. Ofrece a los clientes acceso a la funcionalidad de consulta segura. También pueden usar las capacidades de inteligencia artificial de Azure para enriquecer y mejorar la funcionalidad de consulta. Azure Cognitive Search puede tener en cuenta el uso de una estrategia de índice por inquilino o servicio por inquilino.
Azure Cache for Redis: aplica una capa de almacenamiento en caché como servicio a la solución, lo que proporciona una caché administrada en memoria para reducir la latencia y aumentar el rendimiento de los clientes. Un alto rendimiento permite que un gran volumen de solicitudes controle varios inquilinos que tienen acceso al sistema. Puede escalar verticalmente el servicio de forma flexible a medida que aumenten las cargas de la aplicación. También admite el cifrado en reposo para proteger y aislar los datos de inquilino almacenados en caché.
Componentes alternativos
Azure Virtual Machine Scale Sets: permite la implementación de servicios en un entorno de máquina virtual que escala y crece automáticamente según sea necesario. Virtual Machine Scale Sets se integra bien con Load Balancer o Application Gateway, para reequilibrar automáticamente la carga a medida que el conjunto de escalado aumenta. Virtual Machine Scale Sets proporciona la escalabilidad que esta solución exige. Sin embargo, en muchos casos, no es necesario administrar todo el entorno de máquinas virtuales y podemos aplazar ese nivel de la pila a App Service o AKS.
Azure SQL Database: se implementa como instancias dedicadas individuales, como sustituto de los grupos elásticos. El uso de Azure SQL Database agrega una mayor sobrecarga a la administración directa de la instancia y supone más costo para los recursos asignados. Dicho esto, es una alternativa aceptable cuando el inquilino requiere un servidor dedicado. En concreto, el cliente puede requerir más control sobre la instancia y los recursos disponibles dedicados. Los inquilinos que requieren una instancia de SQL Server dedicada pueden existir en paralelo con los inquilinos de una configuración de Grupo elástico. Puede hacer que un nivel de bases de datos SQL sea una de las opciones de precios disponibles para los inquilinos al adquirir licencias para SaaS.
SQL Server en Virtual Machines: otra opción para la implementación de bases de datos SQL. El inquilino puede contar con una infraestructura de TI preexistente e instancias locales de SQL Server existentes. En ese caso, es posible que el inquilino quiera usar sus licencias actuales, ya sea como una migración completa o en un escenario híbrido. La naturaleza desacoplada de SaaS permite que el nivel de datos de la aplicación tenga como destino cualquier base de datos SQL a través de la configuración.
Detalles del escenario
Al identificar una parte de la solución de software de la empresa para que pueda no llevar marca y comercializarse para otras empresas, se agrega toda una nueva secuencia de ingresos para una compañía. Sin embargo, la configuración de la solución para tener en cuenta la carga que supone un gran número de inquilinos suele ser un obstáculo desafiante.
Azure ofrece una variedad de servicios para administrar una solución de software que:
Mantiene las bases de datos para todos los clientes de forma flexible.
Escala el negocio y el nivel de lógica de la solución para evitar cuellos de botella en la capa de proceso.
Integra la disponibilidad y la conmutación por error regional.
Proporciona seguridad de un extremo a otro en todos los niveles de la solución.
Posibles casos de uso
Estos casos de uso tienen patrones de diseño que pueden beneficiarse de una solución SaaS multiinquilino hospedada en Azure:
Desarrollo de una solución de administración de relaciones con clientes (CRM) que estos puedan comercializar y vender a sus clientes.
Implementación de un sistema de administración de contenido (CMS) y su entrega a varios usuarios con esta arquitectura.
Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.
Multiinquilino
Una solución de varios inquilinos es la principal consideración de esta solución. La solución controla varios clientes simultáneamente. También asigna suficientes recursos para procesar todas las solicitudes de cliente de manera eficaz. Durante el procesamiento de solicitudes, la solución protege el tráfico de los puntos de conexión globales y aísla los datos de cliente para evitar vulneraciones y contaminación cruzada. Implemente clientes en un par de grupos de recursos regionales en función de su ubicación principal. Al hacerlo, se optimiza la disponibilidad regional.
Puede implementar muchos clientes en un único grupo de proceso, ya que el sistema aísla las solicitudes en función de la autenticación y las claves de cliente, que diferencian las solicitudes basadas en estos identificadores únicos. El sistema puede cifrar todas las solicitudes de cliente por separado por sus claves, de modo que ningún cliente pueda descifrar los datos de otros clientes. La administración de varios clientes en una sola pila de proceso ofrece la posibilidad de optimizar la asignación de recursos para proporcionar a los clientes la capacidad de respuesta que necesitan a precio de costo.
Las bases de datos de cliente se administran de manera similar fuera de la pila de proceso, porque una solicitud de cliente puede llegar desde cualquiera de las pilas regionales. Pueden existir muchas bases de datos de cliente en el mismo grupo elástico, aisladas y protegidas mediante el cifrado de datos transparente (TDE). Puede configurar cada base de datos para cifrar los datos mediante una clave administrada por el cliente y descifrar los datos Just-in-Time (JIT). El descifrado JIT protege los datos de cliente frente al desarrollador y otros clientes. El sistema aprovecha el Grupo elástico para proporcionar recursos a petición a los clientes que tiene asignados, a la vez que mantiene bajos los costos. Puede asignar directivas de replicación a cada grupo elástico para proporcionar la copia de seguridad y la conmutación por error de los datos de cliente. Ponga en línea más grupos elásticos cuando incorpore más clientes en el sistema.
Para obtener más información sobre las soluciones multiinquilino, consulte Arquitectura de soluciones multiinquilino en Azure.
Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos con los clientes. Para más información, consulte Resumen del pilar de confiabilidad.
Escalabilidad y disponibilidad
Esta solución está diseñada para tener en cuenta un gran número de inquilinos que usan SaaS. Aprovecha el gran número de componentes y servicios escalables para crecer en función de la carga. Esta arquitectura no está diseñada para soluciones que prestan servicio a unos cuantos inquilinos o a una pequeña carga de solicitudes y datos. Podría tensar el presupuesto de una solución dirigida a un solo cliente o a una carga más pequeña. También es innecesario tener la sobrecarga de varias regiones en la que la alta disponibilidad global no es un requisito, ya que agrega complejidad y costos innecesarios.
Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.
El sistema aborda la seguridad de un extremo a otro en cada nivel de la aplicación:
Azure Front Door proporciona compatibilidad con HTTPS integrada para sus dominios. Esto significa que el sistema puede cifrar todo el tráfico para la aplicación SaaS. Azure Front Door también implementa el firewall de aplicaciones web de Azure, protegiendo la pila SaaS de ataques perimetrales, antes de que el sistema enrute las solicitudes a la aplicación.
Cada pila de aplicaciones de cada región se encuentra dentro de una instancia de Azure Virtual Network. El sistema restringe el tráfico a la red virtual que acepta solicitudes de Azure Front Door y protege todos los servicios de aplicación del tráfico externo. Una vez dentro del firewall seguro, Application Gateway puede finalizar SSL y proporcionar equilibrio de carga y enrutamiento de rendimiento dentro de la aplicación.
Puede administrar de forma segura todas las credenciales, los secretos y las cadenas de conexión mediante Azure Key Vault. Al administrar estos datos confidenciales como secretos, los desarrolladores pueden insertar credenciales en la aplicación en el momento de la implementación. De este modo, se asegura de que el código no se contamine con información confidencial. El uso de secretos protege los datos de cliente asegurándose de que una vulneración del código o un ataque de tipo "Man in the middle" no obtenga acceso a las bases de datos de inquilino.
En este escenario, los datos de varios inquilinos pueden existir en paralelo en el mismo servidor de base de datos, si no se trata de la misma base de datos. El uso de TDE y el descifrado JIT protege los datos de la base de datos. El sistema cifra todos los datos de la base de datos en reposo y solo los descifra cuando lo solicita el inquilino. Los clientes pueden proporcionar sus propias claves, y puede almacenar todas las claves de cliente en Azure Key Vault para administrar el cifrado de varios inquilinos. Protege los datos de cliente de un extremo a otro, impide que el desarrollador tenga acceso a los datos del cliente, aísla los datos entre los inquilinos y ayuda a satisfacer los requisitos de cumplimiento de seguridad y datos.
Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.
Azure App Service proporciona varios planes de tarifa basados en los recursos de proceso esperados necesarios. En el caso de SaaS multiinquilino, las capacidades de alta disponibilidad y escalabilidad horizontal son componentes clave para elegir el plan de servicio. Si espera hospedar muchos inquilinos, puede ser necesario elegir un nivel premium o aislado a fin de proporcionar los recursos de proceso necesarios para contar con el tráfico elevado. Los niveles estándar, premium y aislado son instancias de máquina virtual dedicadas. Puede calcular el costo por unidad de tiempo en función de la cantidad de máquinas virtuales de ese nivel que haya especificado. Para obtener más información, visite Introducción a los planes de Azure App Service.
AKS proporciona un servicio de contenedor rentable. Los cargos por los nodos de AKS solo se producen por uso, por lo que solo se le cobrará por:
Las máquinas virtuales
Los recursos de almacenamiento y de red consumidos
El costo de escalado directamente relacionado con el uso
El uso de AKS como servicio de nivel de datos es idóneo si desea reducir los costos. Para obtener una estimación de los precios de una capa de instancias de AKS, visite la Calculadora del servicio de Kubernetes.
Por diseño, los precios del grupo elástico de Azure SQL son muy rentables en un escenario de varios inquilinos. Las bases de datos de inquilino en un grupo elástico compartirán los recursos disponibles. A medida que la demanda se desplaza entre los inquilinos con el tiempo, los recursos también se desplazarán. El grupo elástico de Azure SQL proporciona el máximo de recursos disponibles para las bases de datos solicitadas sin necesidad de sobrecarga de recursos en todas las bases de datos. El servicio mantiene bajo el costo para el desarrollador de SaaS y los inquilinos. Use la Calculadora de precios de Azure SQL Database para calcular el precio y determinar el nivel y la cantidad de recursos necesarios para atender a los inquilinos y sus datos.
El uso de un modelo de precios de núcleo virtual proporciona una mayor flexibilidad en el escalado para satisfacer los recursos necesarios. Además, puede aprovechar la Ventaja híbrida de Azure. Las licencias de SQL Server existentes ofrecen un descuento para los recursos SQL de núcleo virtual en la nube. Por lo tanto, en una instancia en la que los servidores locales ya forman parte de la infraestructura del desarrollador, puede administrar los costos aún más si usa estos descuentos. Puede estimar los posibles ahorros mediante la Calculadora de ahorro de Ventaja híbrida de Azure.
También puede ahorrar costos en recursos de SQL Server adquiriendo capacidad reservada de Azure SQL Database. La compra de capacidad reservada marca un compromiso de uso de SQL Database a largo plazo. El plazo suele ser entre uno y tres años. A cambio, obtiene descuentos en los costos de proceso de los recursos de reserva. Por ejemplo, podría reservar 32 núcleos virtuales de uso general durante un año, lo que reduciría el costo de los 32 núcleos virtuales para ese año. Si varios inquilinos compran licencias para un SaaS es un indicador seguro de que el uso de la capacidad reservada sirve para la solución, además de ser un ahorro de costos ideal en esta carga de trabajo.
Puede encontrar la estructura de precios de Azure Cache for Redis en la página Precios de Azure Cache for Redis. Ajuste el nivel de caché en cualquier momento entre un nivel básico, estándar y premium en función de las necesidades. Verá precios más altos en los límites de caché mayores y características adicionales, como la replicación y la recuperación ante desastres. Azure Cache for Redis también ofrece precios de capacidad reservada para los compromisos de uso a largo plazo.
El precio de Azure Front Door depende de la cantidad de transferencia de datos de entrada y de salida del servicio. En el caso de los datos de salida, el precio es diferente en función de las zonas. Distintas regiones incurrirán en costos diferentes. Si observa una diferencia de precio, estime el costo por separado. El precio incluye cierto enrutamiento y capacidad de dominio, pero el sistema incurrirá en costos más allá de los límites iniciales. Azure Web Application Firewall incurre en un pequeño cargo adicional por directiva o regla aplicada. Puede encontrar los detalles de precios de Azure Front Door en la página Precios de Azure Front Door.
Los precios de Azure Cognitive Search es un sistema totalmente organizado en niveles. Hay disponible un nivel gratuito para desarrollo y pruebas. Después, cada nivel incurre en un costo por hora por cada instancia de Cognitive Search asignada. A medida que aumenten los niveles, el almacenamiento total, el número de índices y los límites de escalado horizontal también aumentarán. Azure Cognitive Search proporciona la extracción de imágenes como servicio a la misma velocidad para todos los niveles de pago.
Pasos siguientes
Objetos de aplicación y de entidad de servicio de Microsoft Entra ID explica el uso de Microsoft Entra ID para implementar aplicaciones multiinquilino.
Patrones de inquilinato de bases de datos SaaS trata de la implementación de patrones multiinquilino en SQL.
El inquilino de Microsoft Entra ID también trata de aprovechar Microsoft Entra ID para implementar aplicaciones multiusuario.
Recursos relacionados
Ejecución de una aplicación web en varias regiones de Azure para alta disponibilidad es una referencia para el requisito de varias regiones de la solución.
Aplicación web de varios niveles creada para lograr alta disponibilidad y recuperación ante desastres en Azure es un escenario de ejemplo similar de carga de trabajo. Describe muchas de las consideraciones para una aplicación a gran escala en Azure.