Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Arquitectura Software Avanzada: Más Allá de los Patrones
Bestseller
Highest Rated
Rating: 4.7 out of 5(398 ratings)
2,549 students

Arquitectura Software Avanzada: Más Allá de los Patrones

Diseña sistemas escalables y fiables. Migraciones, Microservicios, Bases de Datos, Sagas, Patrones y Decisiones Reales.
Last updated 6/2025
Spanish

What you'll learn

  • Modularizar sistemas complejos: cuándo y cómo dividir componentes, datos y servicios.
  • Diseñar sistemas con alta escalabilidad, disponibilidad y fiabilidad.
  • Orquestación y Coreografía de Servicios.
  • Sagas Transaccionales.
  • Diseñar logs útiles, definir métricas clave y configurar alertas efectivas.
  • Tomar mejores decisiones arquitectónicas evaluando los trade-offs en cada contexto.
  • Entender y aplicar patrones de migración como Strangler Fig, Branch by Abstraction o Reverse Proxy Migration.
  • Comparar distintos tipos de bases de datos (relacionales, documentales, clave-valor, columnares, grafos, series temporales, NewSQL) y entender cuándo usarlas.

Course content

8 sections33 lectures5h 17m total length
  • Introducción al Curso4:20

Requirements

  • Conocimientos básicos de programación y arquitectura de software.

Description

Diseñar la arquitectura de un sistema es una tarea muy difícil. No existen soluciones perfectas, lo que funciona bien en un contexto puede ser un desastre en otro. Conocer la teoría y los conceptos básicos de arquitectura de software es importante, pero no es suficiente si no entiendes los compromisos que implica cada decisión.


Este curso no se limita a patrones de arquitectura. Exploraremos problemas reales, donde no siempre hay un consenso en las buenas prácticas, analizaremos las distintas opciones disponibles y evaluaremos sus ventajas y desventajas en distintos contextos.


A lo largo del curso abordaremos:


  • Modularidad y Descomposición en Arquitectura de Software: Cuándo y cómo dividir un sistema en componentes o servicios. Separación de datos, granularidad de servicios, y el impacto del quantum de arquitectura. Veremos también el teorema CAP y una comparativa de bases de datos: relacionales, clave-valor, documentales, columnares, grafos, series temporales, NewSQL y cloud-native.

  • Integración, Gestión de Datos y Coordinación de Servicios: Propiedad y acceso a datos entre servicios, consistencia eventual y diseño de contratos. Veremos cómo gestionar workflows distribuidos tratando la orquestación y la coreografía de servicios y estudiaremos las distintas sagas transaccionales.

  • Evolución y Migración de Arquitecturas: Cuándo migrar una arquitectura y cómo hacerlo minimizando el riesgo. Patrones como Strangler Fig, Expand & Contract, Branch by Abstraction o Reverse Proxy Migration, explicados con ejemplos y trade-offs.

  • Mantenimiento de Sistemas en Producción: Gestión de datos analíticos, diseño de logs útiles, monitorización, métricas clave, alertas, gestión de errores y recuperación automática.

  • Más Patrones y Antipatrones: Hablaremos de idempotencia, inmutabilidad, location independence, content addressed storage y de una serie de patrones y antipatrones de disponibilidad, fiabilidad, seguridad y rendimiento.


Este curso está pensado para arquitectos y desarrolladores que quieran mejorar en arquitectura de sistemas, su criterio técnico y aprender a tomar decisiones con impacto real en sistemas complejos. Si quieres dejar de aplicar patrones de forma mecánica y empezar a entender realmente cómo diseñar sistemas escalables, fiables y mantenibles, este curso es para ti.


Nota: Este no es un curso centrado en código. Aunque veremos ejemplos cuando aporten valor, aquí nos centramos en diseño y arquitectura de alto nivel, aplicable a cualquier tecnología o lenguaje.

Who this course is for:

  • Profesionales que conocen los patrones básicos y quieren aprender más sobre la arquitectura de software y el diseño de sistemas.
  • Desarrolladores que quieren profundizar en conceptos como microservicios, modularidad, consistencia eventual, resiliencia y fiabilidad.
  • Desarrolladores que participan en migraciones de sistemas legacy o en evoluciones arquitectónicas.
  • Personas que quieran mejorar su criterio técnico para tomar mejores decisiones en contextos reales.