La materia tiene por objetivo que el estudiante:
- comprenda la problemática asociada a la definición, validación y mantenimiento de Arquitecturas Complejas de Software, en particular aquellas con requerimientos críticos de escalabilidad, eficiencia o disponibilidad
- entienda el proceso de evaluación entre diferentes Arquitecturas Avanzadas de Software
- relacione diferentes estrategias de solución de los problemas de Arquitecturas de Software y genere pensamiento crítico respecto de las mismas.
- participe de una experiencia práctica real y tangible en el proceso de construcción de una Arquitectura Avanzada de Software
Modos de Cursada: Cuatrimestral Presencial
Horas Semanales: 6 horas
Demanda de tiempo en casa semanal:6 horas
Sitio web:
Programa de la materia:
Contenidos Mínimos:
- Conceptos de Escalabilidad, Eficiencia y Efectividad. Adecuación de sistemas de grandes volúmenes de datos.
- Técnicas para dimensionar los requerimientos de hardware de un sistema: capacidad de procesamiento, espacio en memoria, almacenamiento, tiempos de respuesta del hardware, identificación de cuellos de botella
- Dimensionamiento de las necesidades de red de un sistema de software: ancho de banda promedio, picos de utilización, cantidades de usuarios totales, sesiones simultáneas, pedidos concurrentes, enlaces redundantes.
- Técnicas para escalamiento vertical y horizontal. Clustering, balanceo de carga, afinidad, Sharding. Estrategias de particionamiento de bases de datos.
- Tolerancia a fallos. Replicación de estado global y por pares. Comparación de las técnicas utilizadas para obtener tolerancia y performance. Sistemas resilientes a fallos. Autorecuperación. Estrategias de corto-circuito.
- Estrategias de cache de datos: cacheo en el cliente, contenido estático, contenido precalculado, distribución de contenido (CDN).
- Hardware específico para sistemas de gran envergadura. Virtualización. Granjas de servidores. Cloud Computing. Nubes privadas y públicas. Software y hardware como servicios.
- Verificación del cumplimiento de los requerimientos no funcionales (RNF): performance, tolerancia a fallos, carga. Automatización. Evaluación del comportamiento del sistema más allá de las condiciones normales de funcionamiento
- Operación y monitoreo de sistemas. Estrategias de logging para sistemas de gran envergadura.
- Herramientas para medición de performance. Profiling. Información caliente e información de ciclo de vida largo. Análisis de servicios en red, análisis de tráfico. Herramientas de monitoreo de fallas.