A menudo, las soluciones multiinquilino requieren una consideración especial al medir y asignar costos, y al optimizarlos. En esta página, se describen algunas instrucciones clave para que los arquitectos de soluciones reflexionen sobre la medición, asignación y optimización de costos en una aplicación multiinquilino.
Consideraciones clave y requisitos
Tenga en cuenta los requisitos que tiene para medir el consumo de la solución. Esto se describe con más detalle en Medición del consumo de cada inquilino.
Propósito de la medida
Es importante decidir cuál es su objetivo. Estos son algunos ejemplos de objetivos:
- Calcular un costo aproximado de bienes vendidos para cada inquilino. Por ejemplo, si implementa un número significativo de recursos compartidos, es posible que solo le interese conocer el costo aproximado en el que incurre cada inquilino.
- Calcular el costo exacto en el que incurre cada inquilino. Por ejemplo, si cobra a los inquilinos la cantidad exacta de consumo en la que incurren, debe tener información precisa sobre cuánto cuestan los recursos de cada inquilino.
- Identificar los inquilinos atípicos que cuestan mucho más que los demás. Por ejemplo, si proporciona un modelo de precios de tarifa plana, es posible que tenga que determinar si algún inquilino consume una cantidad desproporcionada de la capacidad aprovisionada, de modo que pueda aplicar directivas de uso justo. En muchas situaciones, este caso de uso no requiere una medición precisa de los costos.
- Reducir el costo general de Azure para la solución. Por ejemplo, puede que quiera ver el costo de cada componente y, a continuación, determinar si se ha aprovisionado en exceso para la carga de trabajo.
Mediante la comprensión del objetivo de medir el consumo por parte de un inquilino, puede determinar si las asignaciones de costos deben ser aproximadas o muy precisas, lo que afecta a las herramientas específicas que puede usar y a los procedimientos que puede seguir.
Componentes compartidos
Para reducir el costo de una solución multiinquilino podría trasladar los inquilinos a una infraestructura compartida. Sin embargo, debe considerar detenidamente el impacto de compartir recursos, por ejemplo, si los inquilinos comenzarán a experimentar el problema del entorno ruidoso.
También debe tener en cuenta cómo medir y asignar los costos de los componentes compartidos. Por ejemplo, puede dividir uniformemente el costo entre cada uno de los inquilinos que usan el componente compartido. O bien, puede medir el uso de cada inquilino para obtener una medida más precisa de su consumo de los componentes compartidos.
Enfoques y patrones que se deben tener en cuenta
Asignación de costos mediante etiquetas de recursos
Azure permite aplicar etiquetas a los recursos. Una etiqueta es un par clave-valor. Las etiquetas se usan para agregar metadatos personalizados. Las etiquetas son útiles para muchas operaciones de administración y también son útiles para analizar el costo del consumo de Azure. Después de aplicar etiquetas, puede determinar los costos asociados a cada etiqueta.
Es probable que la forma en que use etiquetas en una solución multiinquilino sea diferente, en función de la arquitectura.
En algunas soluciones, puede implementar recursos dedicados para cada inquilino, por ejemplo, si implementa stamps de implementación dedicados para cada inquilino. En estas situaciones, está claro que cualquier consumo de Azure para esos recursos debe asignarse a ese inquilino, por lo que puede etiquetar los recursos de Azure con el identificador de inquilino.
En otras circunstancias, es posible que tenga conjuntos de recursos compartidos. Por ejemplo, cuando aplica el patrón de particionamiento, podría implementar varias bases de datos y distribuir los inquilinos entre ellas. Considere la posibilidad de etiquetar los recursos con un identificador para el grupo de inquilinos. Es posible que no pueda asignar fácilmente los costos a un solo inquilino, pero al menos podrá restringirlos a un conjunto de inquilinos si usa este enfoque. También puede usar la información de consumo para reequilibrar los inquilinos entre las particiones si observa que una partición específica está acumulando mayores costos que las demás.
Nota
Hay un límite en el número de etiquetas que se pueden aplicar a un recurso. Cuando se trabaja con recursos compartidos, es mejor no agregar una etiqueta para cada inquilino que comparte el recurso. En su lugar, considere la posibilidad de agregar una etiqueta con el identificador de partición u otra manera de identificar el grupo de inquilinos.
Considere un ejemplo de solución multiinquilino compilada con el patrón de implementación de unidad de escalado y un modelo de inquilino con particiones verticales. Cada stamp de implementación incluye un servidor web compartido y bases de datos particionadas. Las etiquetas se pueden aplicar a cada uno de los componentes de Azure, como se muestra en el diagrama siguiente.
La estrategia de etiquetado que se emplea aquí es la siguiente:
- Cada recurso tiene una etiqueta
stamp-id
. - Cada base de datos particionada tiene una etiqueta
shard-id
. - Cada recurso dedicado a un inquilino específico tiene una etiqueta
tenant-id
.
Con esta estrategia de etiquetado, es fácil filtrar la información de costos por un solo stamp. También es fácil buscar el costo de los recursos específicos del inquilino, como el costo total de la base de datos del inquilino C. Los componentes compartidos no tienen una etiqueta tenant-id
, pero el costo de los componentes compartidos de un stamp se puede dividir entre los inquilinos que están asignados para usar ese stamp o partición.
Instrumentación de la aplicación
En situaciones en las que no tiene una relación directa entre un recurso de Azure y un inquilino, considere la posibilidad de instrumentar la aplicación para recopilar telemetría.
Es posible que la capa de aplicación ya recopile registros y métricas que sean útiles para responder a las preguntas sobre métricas, por ejemplo:
- Aproximadamente, ¿cuántas solicitudes de API se realizan por inquilino?
- ¿Qué horas del día están los inquilinos específicos más ocupados?
- ¿Cómo se comparan los patrones de uso del inquilino A con los del inquilino B?
En Azure, estas métricas a menudo se capturan mediante Application Insights. Con inicializadores de telemetría puede enriquecer la telemetría que se captura mediante Application Insights para que incluya un identificador de inquilino u otros datos personalizados.
Sin embargo, Application Insights y otras soluciones de registro y supervisión no son adecuadas para un análisis de costos preciso o con fines de medición. Application Insights está diseñado para muestrear datos, especialmente cuando la aplicación tiene un gran volumen de solicitudes. El muestreo está diseñado para reducir el costo de supervisión de la solución, ya que la captura de cada fragmento de datos telemetría suele resultar costosa.
Si tiene que realizar un seguimiento preciso de los detalles sobre el consumo o el uso con fines de facturación, en su lugar debe crear una canalización personalizada para registrar los datos necesarios. A continuación, debe agregar los datos en función de sus requisitos. Entre los servicios de Azure que pueden ser útiles para este propósito destacan Event Hubs, para capturar grandes volúmenes de telemetría, y Stream Analytics para procesarlos en tiempo real.
Uso del plan de ahorro de Azure Reservations y Azure para reducir costes
Azure Reservations Azure Reservations le permite reducir los costes de Azure mediante la confirmación previa de un determinado nivel de gasto. Las reservas se aplican a varios tipos de recursos de Azure.
Las reservas se pueden usar de forma eficaz en una solución multiinquilino. Tenga en cuenta las siguientes consideraciones:
- Cuando implemente una solución multiinquilino que incluya recursos compartidos, tenga en cuenta el nivel de consumo de línea de base que necesita para la carga de trabajo. Considere la posibilidad de usar una reserva para ese consumo de línea de base y, después, pagar tarifas estándar por un mayor consumo durante picos imprevisibles.
- Cuando implemente los recursos de cada inquilino, tenga en cuenta si puede confirmar previamente el consumo de recursos de un inquilino específico o de toda la cartera de inquilinos.
Las reservas de Azure le permiten definir el ámbito de las reservas para que se apliquen a un grupo de recursos, una suscripción o un conjunto de suscripciones. Esto significa que puede aprovechar las reservas, incluso si particiona la carga de trabajo entre varias suscripciones.
Los ámbitos de reserva también pueden ser útiles si tiene inquilinos con cargas de trabajo impredecibles. Por ejemplo, considere una solución en la que el inquilino A solo necesita una instancia de un recurso específico, pero los inquilinos B y C necesitan dos cada uno. Más tarde, el inquilino B se vuelve menos ocupado, por lo que reduce el recuento de instancias, y el inquilino A se vuelve más ocupado, con lo que aumenta el recuento de instancias. Las reservas se aplican a los inquilinos que las necesitan.
Plan de ahorro de Azure para el proceso: el plan de ahorro de Azure para el proceso es un plan flexible de ahorro de costos que genera ahorros significativos en los precios de pago por uso. Acepte un contrato de uno o tres años y reciba descuentos en los servicios de proceso elegibles. Estos servicios incluyen máquinas virtuales, hosts dedicados, instancias de contenedor, funciones prémium de Azure y servicios de aplicaciones de Azure. Los ahorros se aplican a estos servicios de proceso independientemente de la región, el tamaño de instancia o el sistema operativo. Para obtener más información, consulte Introducción al plan de ahorros de Azure y documentación del plan de ahorro de Azure.
Combinación de reservas y el plan de ahorro: para optimizar el coste de proceso y la flexibilidad, es posible combinar un plan de ahorro de Azure con Azure Reservations.
Antipatrones que se deben evitar
- No realizar ningún seguimiento de los costos. Es importante tener al menos una idea aproximada de los costos en los que está incurriendo y cómo afecta cada inquilino al costo que supone la solución. De lo contrario, si los costos cambian con el tiempo, no tendrá ninguna línea de base con la que comparar. También es posible que no pueda predecir cómo un crecimiento en los inquilinos afectará a los costos y la rentabilidad.
- Realizar suposiciones. Asegúrese de que la medición de costos se basa en información real. Es posible que no necesite un alto grado de precisión, pero incluso las estimaciones deben estar basadas en mediciones reales.
- Precisión innecesaria. Es posible que no necesite tener una contabilidad detallada de todos los costos en los que se incurre para cada inquilino. La creación de procesos de optimización y medición de costos innecesariamente precisos puede ser contraproducente, ya que agrega complejidad de ingeniería y crea procesos complejos.
- Medición en tiempo real. La mayoría de las soluciones no necesitan mediciones de costos al minuto. Como el procesamiento de los datos de medición y consumo puede resultar complejo, debe registrar los datos necesarios y, después, agregarlos y procesarlos de forma asincrónica más adelante.
- Uso de herramientas de supervisión para la facturación. Como se indica en Instrumentación de la aplicación, asegúrese de que usa herramientas diseñadas para la supervisión y medición de costos. Las soluciones de supervisión de aplicaciones no suelen ser buenas candidatas para este tipo de datos, especialmente cuando se necesita una alta precisión.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Autor principal:
- John Downs | Ingeniero principal de software
Otros colaboradores:
- Sherri Babylon | Ingeniero de clientes sénior, FastTrack for Azure
- Arsen Vladimirskiy | Principal Customer Engineer, FastTrack for Azure
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.