Tácticas para controlar eficiencia de ejecución

Clase 35 de 43Curso Profesional de Arquitectura de Software

Resumen

Controlar la eficiencia de ejecución requiere responder a eventos dentro del tiempo esperado con el mínimo uso de recursos. Aquí se explican, con claridad y enfoque práctico, las tácticas de demanda de recursos, gestión de recursos y arbitraje de recursos para optimizar tiempos, reducir sobrecarga y priorizar bien ante conflictos.

¿Cómo controlar la eficiencia de ejecución con tácticas clave?

La eficiencia de ejecución se centra en que un sistema responda a un estímulo en tiempo. Se organiza en tres familias complementarias:

  • Demanda de recursos: disminuir lo que cada evento necesita.
  • Gestión de recursos: aumentar o usar mejor lo disponible.
  • Arbitraje de recursos: decidir prioridades ante conflicto.

Estas tácticas deben adoptarse con criterio: optimizar sin evaluar riesgos afecta otros atributos de calidad. La clave es priorizar según impacto y riesgo, no asumir que la eficiencia siempre es lo más importante.

¿Qué tácticas reducen la demanda de recursos y la sobrecarga?

Para que cada evento consuma menos, se actúa sobre algoritmos, pasos de procesamiento y volumen de eventos que se manejan por vez.

¿Cómo mejorar la eficiencia computacional?

Analizar algoritmos y procesamiento para detectar ineficiencias.

  • Formalizar el algoritmo y estimar su rendimiento.
  • Evitar bucles anidados innecesarios y recorridos repetidos.
  • Separar en pasos o preprocesar para no recorrer listas de listas.
  • Apuntar a que cada evento use menos CPU y memoria.

Resultado: menos costo por evento y respuestas más rápidas.

¿Cómo reducir la sobrecarga por pasos innecesarios?

Menos pasos para la misma tarea implica menos latencia y menor consumo.

  • Revisar acciones por evento: acceso a base de datos, cálculos, escritura en caché.
  • Mover cálculos a escritura cuando sea posible para aligerar la lectura.
  • Consolidar operaciones para evitar trabajo duplicado.

Resultado: menor sobrecarga al responder solicitudes web o de API.

¿Cómo manejar la tasa de eventos y la frecuencia de muestreo?

Optimizar cuántos eventos se procesan y cuándo se agrupan.

  • Manejo de la tasa de eventos: enviar eventos agregados o con datos completos en lugar de múltiples eventos separados.
  • Controlar streams grandes: filtrar, agrupar o usar buffer para aliviar al consumidor.
  • Frecuencia de muestreo en el consumidor: procesar cada n eventos o por ventanas de tiempo.
  • Caso típico: generar reportes por ventana de cinco minutos, sacrificando detalle por segundo si no es necesario.

Resultado: procesamiento por lotes más eficiente y menos carga por evento.

¿Cómo gestionar y arbitrar recursos para responder a tiempo?

Además de reducir la demanda, conviene ampliar la capacidad o decidir prioridades cuando varios procesos compiten por lo mismo.

¿Qué aporta la concurrencia al rendimiento?

Paralelizar para reducir tiempo total de respuesta.

  • Ejecutar tareas en paralelo en múltiples procesadores.
  • Particionar el trabajo en data science o alto volumen de datos.
  • Distribuir en clusters para no concentrar todo en un solo nodo.

Resultado: menor latencia usando recursos de forma simultánea.

¿Cómo ampliar capacidad con réplicas, caché y escalado?

Acercar datos y crecer cuando haga falta.

  • Réplicas: duplicar procesamiento o datos para aumentar accesibilidad.
  • Caché: copiar datos cerca de la aplicación, idealmente en memoria del mismo servidor.
  • Aumentar recursos: medir y decidir cuándo crecer en cantidad de instancias.
  • Escalado automático: disparar nuevas instancias según umbrales configurados en plataformas como Amazon.

Resultado: más throughput y menor latencia por acceso local y capacidad elástica.

¿Cómo priorizar ante conflictos con arbitraje de recursos?

Definir políticas de planificación y prioridad cuando muchos compiten.

  • Acceso sincrónico prioritario si debe responder en el momento.
  • Postergar y agendar tareas para ejecución futura cuando el tiempo lo permite.
  • Asignar prioridad entre solicitudes paralelas: orden y peso relativo.
  • Casos típicos: bases de datos y sistemas de búsqueda con acceso concurrente a índices.

Resultado: respuestas en tiempo y forma con decisiones claras de prioridad.

¿Te gustaría comentar un caso real donde aplicarías concurrencia, caché o priorización? Comparte tu escenario y evaluamos juntos la táctica adecuada.

      Tácticas para controlar eficiencia de ejecución