Tácticas para controlar eficiencia de ejecución
Clase 35 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
Atributos de calidad
- 2

Qué son los atributos de calidad en software
01:49 min - 3

Cómo medir idoneidad funcional en software
02:52 min - 4

Qué es eficiencia de ejecución en software
04:14 min - 5

Cómo medir interoperabilidad y coexistencia
03:49 min - 6

Qué es la usabilidad y sus 6 dimensiones
08:14 min - 7

Cómo medir confiabilidad en software
05:38 min - 8

Los 5 pilares de seguridad en software
04:01 min - 9

Cómo garantizar mantenibilidad con tests
06:27 min - 10

Adaptabilidad vs capacidad de instalación vs reemplazo
02:48 min - 11

Tensiones entre atributos de calidad de software
04:04 min - 12

Atributos de calidad según fase de empresa
07:00 min
Patrones de arquitectura
- 13

Qué es un patrón de arquitectura
02:50 min - 14

Modelo vista controlador: cómo separar responsabilidades
05:37 min - 15

Arquitectura en capas: controller, servicio y repositorio
03:14 min - 16

Event sourcing vs bases relacionales
06:17 min - 17

Qué es la arquitectura microkernel
01:52 min - 18

Arquitectura Comparte Nada con Map Reduce
02:29 min - 19

Patrón de microservicios: cuándo y cómo
03:57 min - 20

Qué es CQRS y cómo separa lectura de escritura
03:24 min - 21

Arquitectura hexagonal: puertos y adaptadores
04:10 min - 22

Qué son los contextos delimitados en DDD
05:34 min - 23

Cómo combinar patrones de arquitectura
09:22 min - 24

Evolución de patrones desde monolito a microservicios
07:58 min
Diseño de una arquitectura
- 25

Cómo traducir requerimientos en decisiones arquitectónicas
02:18 min - 26

Conectores en arquitectura: tipos y cuándo usarlos
06:18 min - 27

Llamadas asíncronas vs síncronas vs cliente-servidor
03:05 min - 28

Conector enrutador vs difusión: Twitter
01:55 min - 29

Conectores cola, repositorio y pub/sub
03:52 min - 30

Framework de diseño orientado a atributos
01:55 min - 31

Cómo detectar fallas y reparar sistemas
05:59 min - 32

Cómo recuperar y prevenir fallas en sistemas
04:09 min - 33

Tácticas para confinar modificaciones
06:15 min - 34

Cómo prevenir efectos dominó en software
12:17 min - 35

Tácticas para controlar eficiencia de ejecución
Viendo ahora - 36

Cómo detectar, resistir y recuperarse de ataques
09:02 min - 37

Cómo probar que el software funciona correctamente
05:14 min - 38

Cómo controlar la usabilidad con tácticas
08:20 min - 39

Cómo validar arquitectura con ATAM y métricas
06:34 min - 40

Evolución de arquitectura: startup a gran escala
10:30 min
Modelado y documentación de arquitectura
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.