Evolución de arquitectura: startup a gran escala
Clase 40 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
09:14 min - 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
Viendo ahora
Modelado y documentación de arquitectura
Diseñar arquitectura de software que crece con el negocio exige conectar atributos de calidad con tácticas concretas. Con el caso de Plaz y Servicios se recorre desde etapa de startup hasta gran escala, hilando confiabilidad, seguridad, eficiencia, compatibilidad, usabilidad, mantenibilidad y monitoreo. La clave: elegir tácticas claras, medir y priorizar con criterio.
¿Cómo se aplica el diseño arquitectónico desde startup?
En el inicio, lo urgente es asegurar que el sistema funcione, sea confiable y proteja los datos. Se seleccionan tácticas simples, efectivas y de bajo costo de implementación, alineadas a confiabilidad y seguridad.
¿Qué tácticas fortalecen la confiabilidad?
- Latido para saber que un componente está disponible. Permite detectar caídas rápido.
- Excepciones bien manejadas para identificar y tratar errores con precisión.
- Transacciones de base de datos para garantizar acciones atómicas e íntegras.
- Redundancia pasiva para tener copias listas que aumenten la disponibilidad.
¿Cómo se protege la seguridad con autenticidad y confidencialidad?
- Autenticación para validar identidad y permitir ingreso al sistema.
- Autenticidad mejorada de prestadores con datos verificables: foto y documento identificatorio.
- Confidencialidad de datos mediante encriptar o proteger la información de clientes.
- Restauración para recuperar el estado previo ante fallas o ataques.
¿Qué cambia al crecer con empresas y reportes?
Aparecen reportes intensivos y nuevas exigencias de seguridad. Se optimiza el uso de recursos, se aumenta la capacidad y se integra con otros sistemas, sin perder control de accesos ni trazabilidad.
¿Cómo mejorar la eficiencia de ejecución y la capacidad?
- Frecuencia de muestreo: evitar procesar cada evento de forma aislada.
- Manejo de la tasa de eventos para controlar picos de entrada.
- Concurrencia para procesar en paralelo, clave en el cálculo de reportes.
- Réplicas para escalar capacidad además de disponibilidad.
¿Cómo lograr compatibilidad e interoperabilidad con otros sistemas?
- Separar interfaz de implementación para evitar acoplarse a una vista concreta.
- API común para integraciones externas sin dependencia de la UI.
- Estándares como REST o GraphQL con esquema publicado.
- Documentación clara del contrato de integración.
- Ocultar información: exponer solo lo necesario y reducir acoplamiento futuro.
¿Qué tácticas de seguridad exigen las empresas?
- Comprobación de hechos y traza de responsabilidad con traza de auditoría detallada.
- Limitar accesos para restringir quién ve y hace qué.
- Autorización alineada a permisos y roles.
- Detección de intrusos para identificar accesos no autorizados de forma proactiva.
¿Qué exige operar a gran escala y global?
Con globalización surgen traducciones, respuestas en tiempo real y operación 24/7. Usabilidad y mantenibilidad se vuelven críticas, junto con tolerancia a fallos y monitoreo de procesos.
¿Cómo mejorar la usabilidad con accesibilidad y operabilidad?
- Separar interfaz de usuario de la lógica para adaptar vistas sin romper funciones.
- Modelo de usuario para entender quién usa el sistema.
- Modelo de tarea para apoyar lo que el usuario busca lograr.
- Múltiples vistas según rol y contexto: prestador local/global o cliente local/global.
¿Cómo sostener la mantenibilidad ante el crecimiento?
- Modularidad, capacidad de prueba y capacidad de modificación como objetivos centrales.
- Abstraer servicios comunes para reducir duplicidad y facilitar evolución hacia microservicios.
- Restringir la comunicación entre módulos para equipos más independientes.
- Intermediarios que compatibilizan estructuras entre módulos consumidores y productores.
- Adherir a protocolos y estándares de calidad y comunicación.
¿Cómo asegurar confiabilidad con tolerancia a fallos y recuperación?
- Punto de control y retroceso para volver a estados controlados ante errores.
- Sincronización de estado con redundancia activa o pasiva para continuidad del servicio.
- Monitoreo de procesos para verificar salud, detectar fallas y reiniciar automáticamente.
Además de aplicar tácticas, es vital usar métricas y priorizar atributos. Si hay muchos objetivos, decidir el alcance de cada uno permite invertir el esfuerzo correcto en arquitectura en cada momento.
¿Con qué tácticas priorizarías tu siguiente etapa: confiabilidad, seguridad, eficiencia, compatibilidad, usabilidad o mantenibilidad? Comparte tu contexto y decisiones en comentarios.