Tácticas para controlar eficiencia de ejecución

Clase 35 de 43Curso Profesional de Arquitectura de Software

Contenido del curso

Atributos de calidad

Patrones de arquitectura

Diseño de una arquitectura

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