Contenido del curso

Atributos de calidad

Patrones de arquitectura

Diseño de una arquitectura

Evolución de arquitectura: startup a gran escala

Resumen

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.