Descripción
En la industria TI actual, los retos de escalabilidad, fiabilidad, disponibilidad y desem- peño han h echo que las arquitecturas clásicas monolíticas no sean suficientes. Sin embargo, la introducción de nuevos patrones y tecnologías han hecho que podamos manejar volúmenes inimaginables de transacciones y datos como parte de nuestro día a día. Este curso tiene como objetivo introducir al estudiante en los principios básicos de diseño y desarrollo de soluciones no monolíticas y reactivas. Al final de este curso el alumno sera capaz de diseñar e implementar arquitecturas no monolíticas y reactivas, usando una filosofía de Diseño Guiado por el Dominio (DDD).
Tecnologías principales:
- Event Brokers & event stores: Apache Pulsar
- Bases de datos: MySQL 8
- Mecanismo de CDC: Debezium
- Lenguaje de programación: Python 3.10.x
- Frameworks: Flask, FastAPI y ReactiveX
- Protocolos de comunicación: REST, gRPC, GraphQL y RSocket
- IDE: Gitpod con VisualStudio Code
En este curso aprenderás a:
- Diseñar arquitecturas altamente escalables, fiables y disponibles no monolíticas y reactivas usando una filosofía de Diseño guiado por el dominio (DDD)
- Usar herramientas, técnicas y servicios de software para desarrollar soluciones no monolíticas y reactivas.
- Entender cómo la implementación de estas técnicas también impacta el equipo de desarrollo, cultura organizacional y qué patrones/técnicas pueden aplicarse para tener un sistema no monolítico mantenible.
- Entender los patrones y anti-patrones comunes en el diseño e implementación de sistemas no monolíticos.
Metodología del curso
La evaluación se centrará en dos aspectos principales: El manejo conceptual y el aspec- to práctico. La evaluación de conceptos y aplicación de dichos conceptos fundamenta- les en situaciones o contextos reales, se realizará mediante 2 exámenes parciales indivi- duales y quices.
La práctica de los conceptos aprendidos en la parte teórica, se realizará mediante el diseño y experimentación asociado a un proyecto desarrollado en grupo. Cada una o dos semanas hay un entregable del proyecto relacionado con lo aprendido en la semana/- módulo anterior. De esa manera se espera el desarrollo de un producto de forma incre- mental, desde el diseño y arquitectura hasta el despliegue del mismo.