Recomendaciones para optimizar los costos de flujo

Se aplica a esta recomendación de lista de comprobación de optimización de costos de Azure Well-Architected Framework:

CO:09 Optimice los costos de flujo. Alinee el costo de cada flujo con prioridad de flujo. Al priorizar los flujos, tenga en cuenta las características, la funcionalidad y los requisitos no funcionales de cada flujo. La optimización del gasto de flujo a menudo requiere compromisos estratégicos.

En esta guía se describen las recomendaciones para optimizar el costo de cada uno de los flujos de la carga de trabajo. La optimización de costos de los flujos de una carga de trabajo implica asignar y administrar recursos estratégicamente para minimizar los gastos al tiempo que se mantiene el rendimiento. Esta optimización es fundamental porque garantiza un uso eficaz de los recursos invertidos, reduce los gastos innecesarios y mejora la rentabilidad general de la inversión para la infraestructura. Si no optimiza los costos de los flujos en una carga de trabajo, corre el riesgo de sobrecargar los recursos, lo que da lugar a costos operativos inflados y reduce la rentabilidad.

Definiciones

Término Definición
Desemparejar Estrategia para quitar un flujo de un recurso que contiene varios flujos y colocarlo en un recurso independiente.
Flujo En una carga de trabajo, la secuencia de acciones que realiza una función específica. Un flujo implica el movimiento de datos y la ejecución de procesos entre componentes de la carga de trabajo.
Flujo del sistema Flujo de información y procesos dentro de un sistema. El sistema sigue automáticamente este flujo para habilitar los flujos de usuario o la funcionalidad de carga de trabajo.
Flujo de usuario Rutas de acceso o secuencias de acciones que los usuarios realizan dentro de una aplicación o sistema.

Estrategias de diseño principales

Invertir más en flujos de prioridad alta que en flujos de prioridad inferior. La alineación de la prioridad del flujo y el gasto pueden implicar desacoplamiento de flujos que actualmente comparten el mismo recurso. También puede implicar la combinación de flujos que tienen requisitos similares, pero que se ejecutan en recursos independientes. Por ejemplo, supongamos que tiene una aplicación web que incluye varios flujos, como el registro de usuarios, el inicio de sesión y el procesamiento de datos. Estos flujos se ejecutan en un único servidor, aunque tengan necesidades de recursos diferentes. Para optimizar los costos y el rendimiento, puede separar flujos o combinar flujos:

  • Flujos independientes. Por ejemplo, puede desacoplar el flujo de registro de usuario de los demás y moverlo a un servidor dedicado y de menor costo. Este flujo es importante, pero no con un uso intensivo de recursos, por lo que es un buen candidato para un servidor menos costoso.

  • Combinar flujos. Por ejemplo, puede combinar los flujos de inicio de sesión y procesamiento de datos, que tienen requisitos de recursos más altos y ejecutarlos juntos en un servidor de alto rendimiento. La combinación de estos flujos permite al servidor controlar eficazmente las necesidades que consumen muchos recursos de ambos flujos. Optimiza el rendimiento y los costos.

En una carga de trabajo, puede haber diferentes tipos de flujos o rutas de acceso que debe tener en cuenta. Esta guía se centra en los siguientes tipos de flujo:

  • Flujos del sistema. Optimizar los flujos del sistema implica simplificar la comunicación y la interacción entre los componentes del sistema, minimizar los cuellos de botella y garantizar un uso eficaz de los recursos.

  • Flujos de usuario. Optimizar los flujos de usuario implica mejorar la experiencia del usuario, reducir los puntos de fricción y garantizar una navegación y interacción fluidas dentro de la aplicación o el sistema.

Creación de un inventario de flujos

Un inventario de flujo es una lista completa y una descripción de todas las secuencias de acciones, transiciones de datos e interacciones del sistema dentro de una carga de trabajo. Un inventario de flujo es el primer paso para garantizar que las inversiones se alineen con la prioridad de los flujos. Solo debe optimizar los flujos cuando comprenda completamente su propósito y sus dependencias. Estos son los pasos para crear un inventario de flujos de carga de trabajo:

  1. Flujos de documentos. Empiece por documentar y enumerar todos los flujos existentes de la carga de trabajo para comprender el estado completo del sistema. Incluya cada secuencia de acciones, transiciones de datos e interacciones del sistema. Familiarícese con todos los componentes, como servicios externos, bases de datos, middleware y integraciones de terceros. Además, realice un seguimiento o calcule el volumen de solicitudes a lo largo del tiempo.

  2. Visualizar flujos. Para obtener una perspectiva más clara, represente los resultados visualmente, posiblemente en diagramas de flujo o diagramas. Las visualizaciones le ayudan a ver las interdependencias entre componentes. Considere la posibilidad de usar una herramienta como Visio para ayudarle con las visualizaciones.

  3. Clasificar flujos. Agrupación de flujos similares, teniendo en cuenta atributos como su funcionalidad (por ejemplo, autenticación, recuperación de datos y procesamiento de transacciones), importancia para la empresa o los recursos que usan (CPU, memoria o ancho de banda).

Priorizar flujos

La priorización de flujo es el proceso de clasificar flujos en función de su influencia en los resultados empresariales, las implicaciones en la experiencia del usuario y los recursos que consumen. Los flujos críticos suelen requerir mayores niveles de disponibilidad, tiempos de recuperación más rápidos y un mejor rendimiento para cumplir los objetivos de carga de trabajo. Al priorizar los flujos, puede alinear mejor el gasto con la prioridad del flujo. Para priorizar los flujos, tenga en cuenta los pasos siguientes:

  • Identificar el valor de flujo. Al optimizar los costos de flujo de carga de trabajo, debe identificar el flujo que proporciona el máximo valor. No quiere gastar más que un flujo vale la pena. En lugar de simplemente reducir los costos, considere la posibilidad de cambiar los costos para priorizar los flujos más valiosos. Por ejemplo, el flujo de finalización de la compra es fundamental para la empresa, pero el historial de compras no lo es. Debe asignar más recursos y presupuesto al flujo de desprotección.

    Los flujos de prioridad baja tienen expectativas más bajas para la disponibilidad, la recuperación y el rendimiento. Puede reducir los costos mediante configuraciones más baratas para reducir el rendimiento, la disponibilidad o el gasto de continuidad empresarial.

  • Considere las métricas de flujo. Si tiene dificultades para priorizar los flujos, tenga en cuenta los objetivos de disponibilidad y recuperación que asignó a ellos. Los flujos críticos suelen tener requisitos de alta disponibilidad y acuerdos de nivel de servicio (SLA). Los flujos asociados a un RPO y RTO inferiores son más importantes que los flujos que tienen un RPO y un RTO más altos.

Optimización de flujos independientes

A veces, los flujos ya se están ejecutando en recursos diferentes. En estos casos, puede evaluar y optimizar más fácilmente el gasto. Evalúe los componentes y los procesos implicados en cada flujo independiente para determinar si hay maneras de optimizarlos o simplificarlos. Para optimizar los flujos independientes, puede seguir estos pasos:

  • Elimine los componentes innecesarios. Quite los elementos extraños que no contribuyen a la funcionalidad principal del flujo, lo que reduce la complejidad y el costo.

  • Rediseñe el flujo. Considere la posibilidad de rediseñar la arquitectura del flujo para mejorar su eficiencia. Puede cambiar la secuencia de operaciones, reducir la latencia o mejorar las velocidades de transferencia de datos, por ejemplo.

  • Elija un nivel de rendimiento adecuado. Diferentes flujos pueden tener diferentes demandas en términos de velocidad de procesamiento, memoria u otras métricas de recursos. Asegúrese de elegir un nivel de recurso que se alinee bien con los requisitos específicos de cada flujo.

  • Ajuste de la configuración de escalado. Si un flujo experimenta una demanda variable, considere la posibilidad de implementar el escalado automático para ajustar dinámicamente los recursos según las necesidades en tiempo real, lo que optimiza los costos.

  • Ajuste de las configuraciones. Ajuste de otras opciones de configuración, como las opciones de red o almacenamiento de datos, para alinearse mejor con los requisitos de rendimiento y presupuesto del flujo.

Separar flujos disimilares

La separación de flujos diferentes en distintos recursos es un proceso de asignación de tareas distintas con distintas necesidades computacionales a recursos dedicados. Los flujos diferentes son flujos que tienen atributos diferentes. Estos atributos pueden incluir requisitos de cálculo, dependencias de datos, operaciones de E/S, confidencialidad de latencia, necesidades de seguridad y requisitos de cumplimiento. A menudo es más rentable ejecutar diferentes tipos de flujos en recursos independientes. Esto permite una asignación precisa de recursos a cada flujo, lo que reduce los gastos innecesarios y garantiza la máxima eficiencia.

Considere la posibilidad de separar flujos diferentes que se combinan actualmente. Esta separación aumenta la escalabilidad, la tolerancia a errores y la adaptabilidad, y también simplifica los costos. Al asegurarse de que cada flujo funciona de forma independiente, reduce los riesgos de interferencia y puede asignar recursos de forma más rentable en función de la prioridad de cada flujo. Por ejemplo, supongamos que coloca CRM (flujo de usuario) con un motor de datos (flujo de datos). El tráfico de usuario al sistema CRM durante las horas de oficina podría ralentizar el motor de datos. Al desacoplar flujos, el motor de datos puede escalar cada componente o servicio de forma independiente en función de la demanda de cargas de trabajo. Esta desacoplamiento optimiza la asignación de recursos y reduce los costos.

Combinación de flujos similares

Combinar flujos similares en un único recurso es un proceso de consolidación de tareas o procesos con atributos comparables y el uso de recursos compartidos para ellos. Esta estrategia elimina las redundancias y garantiza un uso más eficaz de los recursos, lo que da lugar a un ahorro significativo de costos. Los tipos similares de flujos comparten atributos similares. Es posible que tenga en cuenta los mismos atributos que se examinan al separar flujos diferentes: requisitos de cálculo, dependencias de datos, operaciones de E/S, confidencialidad de latencia, necesidades de seguridad y requisitos de cumplimiento. Estos son algunos ejemplos en los que la combinación de flujos de carga de trabajo similares para usar el mismo recurso puede dar lugar a un ahorro sustancial:

  • Servidores web. En lugar de dedicar servidores web independientes para cada aplicación, considere la posibilidad de consolidarlos, especialmente si su tráfico no es constantemente alto. Un servidor web compartido, emparejado con un proxy inverso, puede administrar y enrutar eficazmente el tráfico a varias aplicaciones.

  • Puertas de enlace de API. En lugar de mantener puertas de enlace de API individuales para microservicios o aplicaciones independientes, puede usar una puerta de enlace de API centralizada para simplificar las solicitudes y dirigirlas al servicio pertinente. Esto facilita la administración y también reduce los costos.

  • Procesamiento de registros. En lugar de tener varias aplicaciones o servicios que operan sus propias instancias de procesamiento de registros, considere la posibilidad de dirigirlas a una herramienta de procesamiento de registros compartido. Este enfoque minimiza el número de instancias activas, lo que se traduce en un ahorro directo de costos.

  • Servicios de autenticación. Si varias aplicaciones implementan sus propios mecanismos de autenticación distintos, se introduce redundancia. La integración de una solución de inicio de sesión único (SSO) o un servicio de autenticación común reduce esta duplicación y optimiza el uso de recursos, lo que reduce los costos.

Riesgo: No equivoque la coincidencia con el diseño. Dos flujos que tienen un aspecto similar no necesariamente sirven para el mismo propósito. Debe comprender la función y el diseño de cada flujo antes de combinarlos o cambiarlos. La interpretación incorrecta de un flujo centrándose únicamente en su apariencia puede provocar consecuencias imprevistas e interrumpir el servicio o el proceso que admite. Si varios flujos sirven a la misma función y no hay diferencias perceptibles en su diseño o intención, considere la posibilidad de consolidarlos.

Supervisar continuamente los flujos

La naturaleza de los flujos y las cargas de trabajo puede cambiar con el tiempo, por lo que debe revisar los gastos de flujo para asegurarse de que los costos se alinean con las prioridades. Evalúe el uso de recursos de cada flujo mediante el análisis del uso de proceso, almacenamiento y red asociado a cada flujo. Identifique las ineficiencias o áreas en las que se infrautilizan los recursos. Este análisis le ayuda a identificar las oportunidades de optimización de costos. Estas son algunas consideraciones que se deben tener en cuenta al revisar el uso del flujo:

  • Analice los patrones de uso. Analice los patrones de uso de los flujos. Algunos flujos pueden estar más activos durante determinados momentos del día o mes, mientras que otros podrían tener una carga coherente. Al comprender estos patrones, puede predecir las necesidades de recursos y ajustar la asignación para evitar cuellos de botella y sobreaprovisionamiento.

  • Supervise las métricas pertinentes. Determine las métricas que pueden ayudarle a evaluar la eficiencia y la rentabilidad de cada flujo. Considere el uso de cpu, los costos de transferencia de datos, los costos de transacción y la superficie de almacenamiento. Use herramientas de supervisión para recopilar métricas detalladas sobre el uso y el rendimiento de los recursos.

  • Considere el mantenimiento continuo. Tenga en cuenta el costo de mantenimiento, especialmente cuando se usan soluciones de infraestructura como servicio como máquinas virtuales. Debe tener en cuenta las actividades como la aplicación de revisiones, las actualizaciones, las copias de seguridad, la supervisión y la seguridad.

Durante el análisis, identifique las ineficiencias o áreas en las que los recursos no se usan de forma eficaz. Considere la posibilidad de usar instancias de proceso inactivas, datos sin usar y ancho de banda de red bajo. Estas ineficiencias pueden indicar oportunidades de optimización de costos.

Facilitación de Azure

Priorización, optimización y supervisión de flujos: La herramienta Flujo de usuario de Application Insights proporciona una representación visual de la navegación del usuario en las páginas y características del sitio. Esta herramienta ayuda a identificar áreas en las que los usuarios suelen salir, repetir acciones o seguir rutas de acceso específicas. Al comparar el comportamiento real del usuario con los resultados y objetivos previstos, puede identificar los flujos críticos. También le permite optimizar posibles problemas, como altas tasas de renovación, acciones repetitivas o errores de diseño. La herramienta también permite el filtrado de propiedades personalizado a través de dimensiones, lo que ofrece un análisis más personalizado.

Azure Monitor le ayuda a obtener información sobre el rendimiento y el estado de las aplicaciones. Proporciona funcionalidades de supervisión y diagnóstico. Estas funcionalidades permiten identificar cuellos de botella de rendimiento, optimizar el uso de recursos y detectar y solucionar problemas que podrían afectar a los costos.

Log Analytics es una herramienta que permite recopilar, analizar y visualizar datos de registro de varios orígenes. Con Log Analytics, puede obtener información sobre los registros de la aplicación y la infraestructura, identificar tendencias y optimizar los costos mediante la administración del uso y la retención de datos. Considere la posibilidad de colocar registros y usar soluciones dedicadas en lugar de las compartidas para administrar mejor los costos.

Lista de comprobación de optimización de costos

Consulte el conjunto completo de recomendaciones.