Estrategias para Mejorar la Eficiencia de Ejecución en Sistemas
Clase 35 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
- 2

Atributos de Calidad en Sistemas: Definición y Medición
01:49 - 3

Idoneidad Funcional: Completitud, Exactitud y Pertinencia
02:52 - 4

Eficiencia de Ejecución en Sistemas Informáticos
04:14 - 5

Compatibilidad en Sistemas: Interoperabilidad y Coexistencia
03:49 - 6

Subcaracterísticas de Usabilidad en Desarrollo de Software
08:14 - 7

Confiabilidad de Sistemas: Madurez, Disponibilidad, Resiliencia y Recuperación
05:38 - 8

Seguridad de Usuarios en Desarrollo de Software
04:01 - 9

Subcaracterísticas de Mantenibilidad en Sistemas de Software
06:28 - 10

Medición de Adaptabilidad en Sistemas de Software
02:48 - 11

Relación y Tensión entre Atributos de Calidad en Sistemas de Software
04:04 - 12

Atributos de Calidad en Arquitectura de Software
07:00
- 13

Patrones de Arquitectura Monolítica y Distribuida
02:50 - 14

Modelo Vista Controlador: Separación de Responsabilidades en Aplicaciones
05:38 - 15

Arquitectura de Capas: Diseño y Comunicación entre Niveles
03:14 - 16

Patrones de Arquitectura Orientada a Eventos y Event Sourcing
06:17 - 17

Patrón de Arquitectura MicroKernel y su Implementación en IDEs
01:52 - 18

Arquitectura "Comparte Nada": Optimización y Procesamiento de Datos
02:29 - 19

Patrón de Microservicios en Arquitectura de Software
03:57 - 20

Patrón CQRS para Separación de Consultas y Comandos
03:24 - 21

Arquitectura Hexagonal: Diseño y Aplicación Práctica
04:10 - 22

Diseño Orientado al Dominio: Conceptos y Aplicaciones Prácticas
05:34 - 23

Patrones de Arquitectura para Aplicaciones Escalables y Modulares
09:22 - 24

Patrones de Arquitectura en Proyectos de Crecimiento Empresarial
07:59
- 25

Diseño de Arquitecturas a Medida: Herramientas y Estrategias
02:18 - 26

Tipos de Conectores en Arquitectura de Software
06:18 - 27

Conectores Asíncronos y Sincrónicos: Implementación y Uso Práctico
03:05 - 28

Diferencias entre Enrutadores y Difusores en Comunicación de Mensajes
01:55 - 29

Conexión de Productores y Consumidores con Colas de Mensajes
03:52 - 30

Framework de Diseño Orientado a Atributos: Escenarios y Tácticas
01:55 - 31

Tácticas para Mejorar la Disponibilidad de Sistemas
05:59 - 32

Tácticas para Mejorar la Disponibilidad del Sistema
04:10 - 33

Tácticas para Mejorar la Mantenibilidad del Software
06:16 - 34

Prevención de Efectos Dominó en Mantenibilidad de Software
12:17 - 35

Estrategias para Mejorar la Eficiencia de Ejecución en Sistemas
09:15 - 36

Tácticas de Seguridad Informática para Detectar, Resistir y Recuperarse de Ataques
09:03 - 37

Estrategias para Mejorar la Capacidad de Prueba de Software
05:14 - 38

Tácticas de Usabilidad en Diseño de Interfaces de Usuario
08:20 - 39

Validación de Arquitectura con ATAM y Métricas de Calidad
06:34 - 40

Diseño de Arquitectura para Startups y Empresas Escalables
10:30
¿Cómo controlar la eficiencia de ejecución?
La eficiencia de ejecución es clave para que los sistemas respondan a los estímulos de manera efectiva y en el tiempo esperado. Para lograr esto, se implementan tácticas específicas, agrupadas en tres familias principales: demanda de recursos, gestión de recursos y arbitraje de recursos. Estas tácticas son fundamentales para asegurar un rendimiento óptimo en cualquier sistema que procese múltiples eventos simultáneamente.
¿Cuáles son las tácticas de demanda de recursos?
En la familia de demanda de recursos, el foco principal es cómo gestionar eficientemente los recursos cuando un evento ingresa al sistema. Estas tácticas incluyen:
- Mejorar la eficiencia computacional: Se analizan los algoritmos y procesos para identificar y optimizar puntos de ineficiencia. Por ejemplo, se busca evitar iteraciones innecesarias en listas, lo que consume muchos recursos.
- Reducir la sobrecarga: Optimizar los pasos y acciones requeridas para completar una tarea o responder a un evento. Por ejemplo, precalcular datos durante la escritura para reducir la carga durante la lectura.
- Manejar la tasa de eventos: Controlar cuántos eventos se emiten hacia un componente específico. Se puede reducir la cantidad de eventos agrupándolos o enviando datos agregados en un solo evento.
- Controlar la frecuencia de muestreo: Decidir cómo procesar los eventos de manera agrupada en lugar de uno a uno, optimizando así el uso de recursos del sistema.
¿Qué incluyen las tácticas de gestión de recursos?
Las tácticas de gestión de recursos se centran en cómo aprovechar al máximo los recursos disponibles o incrementar su disponibilidad:
- Concurrencia: Permite paralelizar procesos para responder en menor tiempo utilizando recursos de forma paralela. Es crucial en áreas como Data Science, donde el volumen de datos es significativo.
- Réplicas: Involucra duplicar procesos o datos para que estén más accesibles, como en el uso de caché, que guarda copias de datos en memoria cercana al procesamiento.
- Aumento de recursos: Medir y decidir cuándo es necesario ampliar la cantidad de recursos disponibles. Plataformas como Amazon facilitan esto ofreciendo servicios que escalan automáticamente los recursos según sea necesario.
¿Cómo se implementa el arbitraje de recursos?
El arbitraje de recursos es crucial cuando múltiples procesos requieren los mismos recursos al mismo tiempo. Las estrategias incluyen:
- Priorización: Asignar prioridades a los recursos para que ciertos procesos se atiendan antes que otros, basado en políticas de planificación de tareas.
- Acceso sincrónico o aplazado: Decidir entre responder inmediatamente o programar tareas para un momento futuro.
- Orden de resolución: Determinar el orden de importancia o la secuencia en la que se resolverán las solicitudes, optimizando así el acceso a los recursos.
Implementar todas estas tácticas adecuadamente puede ser decisivo para que un sistema responda eficazmente a los estímulos de eventos. Sin embargo, es fundamental priorizar y seleccionar las más adecuadas para cada caso, considerando que la eficiencia no siempre debe ser el atributo prioritario sobre otros factores en ingeniería.