Recomendaciones para priorizar el rendimiento de los flujos críticos

Se aplica a esta recomendación de lista de comprobación de eficiencia del rendimiento de Azure Well-Architected Framework:

PE:09 Priorice el rendimiento de los flujos críticos. La asignación de recursos de carga de trabajo y los esfuerzos de optimización del rendimiento deben priorizar los flujos que admiten los procesos empresariales, los usuarios y las operaciones más importantes.

En esta guía se describen las recomendaciones para priorizar el rendimiento de los flujos críticos en una carga de trabajo. Los flujos críticos representan procesos empresariales cruciales que generan ingresos o impulsan operaciones de prioridad alta. Al priorizar el rendimiento de los flujos críticos, se asegura de que los flujos que tengan más impacto obtengan los recursos que necesitan antes de los flujos de prioridad inferior. Si no se realiza esta priorización, se pueden tener efectos negativos desproporcionadas en las prioridades de carga de trabajo y en la experiencia del usuario.

Definiciones

Término Definición
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.
Procesamiento de colas de prioridad El acto de procesar tareas de prioridad alta antes de las tareas de prioridad baja.
Limitación de frecuencia Acto de limitar el número de solicitudes que pueden tener acceso a un recurso.
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 Secuencia que sigue un usuario para realizar una tarea.

Estrategias de diseño principales

Los flujos críticos hacen referencia a los flujos de usuario clave para los clientes o los flujos de datos y del sistema para las operaciones que son cruciales para la funcionalidad de la carga de trabajo. Estos flujos pueden incluir acciones como registros de usuarios, inicios de sesión, compras de productos, acceso a páginas detrás de un muro de pago, o cualquier otra ruta de acceso o proceso clave dentro de la carga de trabajo.

Los flujos críticos afectan significativamente a la experiencia del usuario o a las operaciones empresariales. Los flujos críticos tienen objetivos de rendimiento más altos y acuerdos de nivel de servicio que los flujos no críticos. Cuando los recursos son limitados, los flujos no críticos deben producir el uso de recursos a los flujos críticos. Debe identificar, supervisar y priorizar todos los flujos antes de aislar y optimizar los flujos críticos.

Identificación de todos los flujos

El primer paso para priorizar el rendimiento de los flujos críticos es identificar todos los flujos de la carga de trabajo. La identificación del flujo implica asignar y comprender sistemáticamente todas las rutas de acceso de usuario y la comunicación de componentes. El objetivo es comprender las métricas de rendimiento y el posible impacto de los flujos en el rendimiento de la carga de trabajo.

Al disectar la carga de trabajo en flujos discretos, puede encontrar cuellos de botella de rendimiento, un uso ineficaz de los recursos y oportunidades para la optimización del rendimiento. Este conocimiento expone áreas de mejora necesarias y es el primer paso para identificar los flujos críticos. Para obtener más información, consulte Identificación y velocidad de flujos de usuario y sistema.

Supervisión de las métricas de rendimiento del flujo

Después de identificar todos los flujos de la carga de trabajo, debe recopilar métricas de rendimiento en cada flujo y supervisar esas métricas. Las métricas de flujo proporcionan información sobre los tiempos de respuesta, las tasas de error y el rendimiento. El objetivo es observar y registrar constantemente las métricas relacionadas con el rendimiento para refinar aún más la comprensión del impacto de cada flujo en el rendimiento de la carga de trabajo. Para supervisar las métricas de flujo, puede usar las siguientes herramientas para recopilar datos:

  • Herramientas analíticas y de seguimiento: estas herramientas proporcionan información sobre el comportamiento del usuario y las interacciones dentro de la aplicación. Al analizar los datos de usuario, puede identificar los flujos, cuellos de botella más comunes o posibles problemas.

  • Herramientas de supervisión del rendimiento de aplicaciones (APM): use herramientas de APM para supervisar el rendimiento de la aplicación y realizar un seguimiento de cómo se ejecutan los flujos. Estas herramientas proporcionan visibilidad sobre los tiempos de respuesta, los errores y otras métricas de rendimiento, lo que le permite identificar flujos críticos y optimizar su rendimiento.

  • Herramientas de registro y depuración: use estas herramientas para capturar y analizar registros e información de depuración mientras se ejecuta la aplicación. Revise los registros y la información de depuración para realizar un seguimiento de cómo se ejecutan los flujos e identificar problemas o errores.

Identificación de flujos críticos

Con los datos de rendimiento disponibles, puede empezar a clasificar todos los flujos e identificar los flujos críticos. La identificación de flujos críticos implica evaluar el impacto en el rendimiento y la importancia de cada flujo. La priorización eficaz del flujo garantiza que los flujos más importantes reciban los recursos necesarios antes de los flujos menos críticos. Para priorizar los flujos de la aplicación, tenga en cuenta estos pasos:

  • Identificar el impacto empresarial: empiece por evaluar la importancia de cada flujo dentro de las operaciones. Céntrese en cómo cada flujo se alinea con sus objetivos empresariales, su impacto en los usuarios y los posibles efectos negativos de un rendimiento deficiente. Por ejemplo, aunque un nivel de servicio gratuito podría atraer a más usuarios, un nivel de pago podría ser más vital para sus objetivos empresariales.

    Además, tenga en cuenta los impactos en el rendimiento de un flujo en uno o varios procesos empresariales. Varios flujos pueden admitir un único proceso de negocio, pero a menudo un flujo tiene un efecto significativo en el rendimiento de ese proceso. Quiere identificar los flujos que tienen el mayor impacto en el rendimiento. Por el contrario, un único flujo podría respaldar varios procesos. En tales casos, el rendimiento de este flujo influye directamente en la eficacia de todos los procesos relacionados y es probable que sea un flujo crítico.

  • Analizar datos de rendimiento: analice las métricas de rendimiento asociadas a cada flujo. Busque patrones, anomalías o métricas destacantes que puedan proporcionar información sobre la eficacia e importancia del flujo. Por ejemplo, es probable que los flujos del sistema con un uso significativo sean flujos importantes.

  • Asignar clasificación de importancia: en función del impacto empresarial y los indicadores de rendimiento, debe priorizar los flujos. Use clasificaciones de importancia crítica de alto, medio y bajo. Los flujos con un impacto empresarial significativo o una demanda de alto rendimiento deben recibir una clasificación de importancia crítica "alta". Estos flujos son los flujos críticos. Céntrese en los flujos con tráfico de usuario elevado o tenga un efecto directo en la generación de ingresos. En la tabla siguiente se proporcionan características de flujos críticos (alto) y no críticos (medio a bajo).

Flujos críticos Flujos no críticos
Uso elevado Uso bajo
Crítico para la empresa No crítico para la empresa
Operaciones costosas Operaciones pequeñas
Sensible al tiempo No sensible al tiempo
Producción Preproducción
Procesamiento en tiempo real Procesamiento por lotes
Sensible a la latencia No sensible a la latencia
Pago de usuario Usuario que no paga
Nivel Premium Nivel Basic
Tareas importantes Tareas no esenciales
Cuentas de ingresos elevados Cuentas de bajos ingresos

Aislar flujos críticos

El proceso de aislar los flujos críticos consiste en proporcionar recursos dedicados o capacidad para admitir flujos críticos. Quiere asignar recursos y atención a esos flujos que son esenciales para obtener una experiencia de usuario óptima o resultados empresariales significativos. El objetivo es garantizar que los flujos críticos reciban suficiente potencia informática, ancho de banda de red y recursos para funcionar de forma eficaz y eficaz. Al aislar los flujos críticos, puede administrar más fácilmente los recursos que admiten flujos críticos. Estas son las recomendaciones para aislar los flujos críticos:

  • Segmentación de recursos: cree recursos independientes para flujos críticos, lo que les permite operar de forma independiente sin interferencias de otros procesos. Por ejemplo, puede aislar los flujos críticos en segmentos de red dedicados o mediante servidores dedicados para controlar las necesidades de procesamiento de estos flujos. Este enfoque ayuda a minimizar la forma en que los flujos no críticos pueden afectar negativamente a los flujos críticos.

  • Segmentación lógica: use herramientas de virtualización y contenedorización como Docker o Kubernetes para aislar los flujos en el nivel de software. Puede separar flujos críticos en máquinas virtuales (VM). Al hacerlo, se crea un entorno aislado, lo que reduce las dependencias y la posible interferencia de otros flujos.

  • Asignación de capacidad: para los flujos críticos, asigne explícitamente un conjunto fijo de capacidad, como CPU, memoria y E/S de disco. Esta asignación garantiza que los flujos críticos siempre tengan suficientes recursos para funcionar de forma eficaz. Establezca cuotas o límites de recursos mediante plataformas de orquestación. Al asignar explícitamente recursos a flujos críticos, se evita la contención de recursos y se prioriza cómo se ejecutan.

Compensación: la segmentación de recursos afecta a los costos. Al dedicar recursos a un flujo, a menudo aumenta el costo y deja algunos recursos infrautilizados. Para justificar las mejoras de rendimiento en los flujos críticos, el aumento del impacto empresarial debe superar el aumento del costo.

Optimización de la asignación de capacidad

Cuando no se pueden aislar los flujos críticos, la siguiente mejor opción es priorizar los flujos críticos para acceder a la capacidad disponible. La optimización de la asignación de capacidad consiste en distribuir estratégicamente la capacidad disponible a diferentes flujos en función de su importancia. La capacidad incluye CPU, memoria, almacenamiento y ancho de banda de red. El objetivo es garantizar que los flujos más críticos (prioridad más alta) reciban la capacidad necesaria para operar de forma eficaz. Para decidir cómo asignar capacidad, tenga en cuenta estas estrategias:

  • Evaluar la capacidad de los recursos: evalúe la cantidad de capacidad de recursos que se puede asignar a los flujos. La capacidad puede incluir recursos como CPU, memoria, almacenamiento y ancho de banda de red. Comprenda las limitaciones y restricciones de la infraestructura o el entorno.

  • Analizar los requisitos de flujo: analice los requisitos de recursos de cada flujo. Comprenda los recursos que el flujo necesita para funcionar de forma eficaz. Para cada flujo, identifique las demandas de recursos, como el uso de CPU, los requisitos de memoria y el ancho de banda de red.

  • Priorización de asignaciones: coincida con la capacidad de recursos disponible con los requisitos de recursos de los flujos. Asigne recursos basados en prioridades de flujo, lo que garantiza que los flujos de mayor prioridad reciban los recursos necesarios para satisfacer sus requisitos. Comprenda dónde están las restricciones más estrictas y optimice las asignaciones de capacidad donde se necesiten. Por ejemplo, las colas solo pueden procesar algunos mensajes por minuto, pero algunos límites de almacenamiento son difíciles de alcanzar.

  • Limitación de velocidad de uso: para garantizar que los flujos críticos puedan consumir los recursos que necesitan para cumplir sus objetivos de rendimiento, aplique límites de velocidad a tareas y flujos no críticos. Los límites de velocidad limitan el número de flujos de prioridad inferior de las solicitudes y los usuarios pueden realizar en recursos restringidos. Por ejemplo, puede limitar las solicitudes de noprioridad a una API. Para obtener más información, consulte el patrón de limitación de velocidad y la limitación de velocidad de un controlador HTTP en .NET.

  • Uso del procesamiento de colas de prioridad: el procesamiento de colas de prioridad da prioridad alta a determinadas solicitudes. Normalmente, las colas tienen una estructura de entrada, primero en salir (FIFO), pero puede actualizar la aplicación para asignar una prioridad a los mensajes que agrega a la cola. Use esta funcionalidad para priorizar los flujos críticos y los usuarios. Para más información, consulte el patrón de cola de prioridad.

Riesgo: puede ser un desafío equilibrar las necesidades de los flujos críticos con el rendimiento general de una carga de trabajo. Aunque debe priorizar los flujos críticos, no debe descuidar los flujos no críticos. La eficacia general del rendimiento de una carga de trabajo depende de todos los flujos. Los flujos no crítico descuidados podrían crear problemas que afectan a todos los usuarios. Demasiado ruido de elementos no esenciales roba atención de elementos críticos. Pero demasiado poco ruido podría dañar toda la carga de trabajo. La cantidad de datos y el número de alertas deben reflejar estas prioridades equilibradas.

Facilitación de Azure

Identificación y supervisión de flujos: Azure proporciona diferentes soluciones para ayudarle a supervisar el rendimiento de los flujos críticos en la carga de trabajo. Azure Monitor, los registros de Azure Monitor y Aplicación de Azure Insights son algunos de los servicios que ofrecen funcionalidades de supervisión completas para varios tipos de aplicaciones y cargas de trabajo.

Optimización de las asignaciones de capacidad: algunos servicios de Azure admiten la segmentación de recursos, la segmentación lógica y las técnicas de asignación de capacidad para asignar capacidad y recursos a flujos críticos. Puede aislar flujos críticos a través de técnicas como la creación de recursos independientes, el aumento de la densidad, el uso de la virtualización y la contenedorización, y la asignación explícita de recursos a flujos críticos.

Algunos servicios de Azure, como Azure API Management, proporcionan directivas integradas para limitar la velocidad. Azure proporciona instrucciones detalladas y una implementación de ejemplo del patrón de diseño de limitación de velocidad.

Azure admite el procesamiento de colas de prioridad. Azure Functions proporciona funciones controladas por eventos que se pueden desencadenar de varias maneras, incluido un nuevo mensaje en una cola o tema. Combine Azure Functions con Azure Queue Storage o Azure Service Bus para procesar mensajes en función de su prioridad.

Lista de comprobación de eficiencia del rendimiento

Consulte el conjunto completo de recomendaciones.