- 1

Arquitectura de Backend: Diseño e Implementación de Sistemas Avanzados
02:42 - 2

Conceptos Fundamentales de Back End en Arquitectura Web
03:25 - 3

Sistemas Monolíticos vs. Distribuidos en Arquitectura Backend
04:31 - 4

Componentes de un Sistema Backend Distribuido
05:22 - 5

Conexión de Componentes Backend mediante APIs
04:11 - 6

Diseño e Implementación de Sistemas Backend Prácticos
02:33
Sistemas Monolíticos vs. Distribuidos en Arquitectura Backend
Clase 3 de 25 • Curso Práctico de Arquitectura Backend
Contenido del curso
- 7

Definición de Requerimientos de Negocio para Desarrolladores Backend
08:52 - 8

Creación de Documentos de Diseño de Software
06:06 - 9

Creación de Documentos de Diseño en Markdown para Proyectos de Software
09:52 - 10

Revisión Efectiva de Documentos de Diseño en Equipo
10:27 - 11

Diseño de Arquitectura de Sistemas Distribuidos
15:30 - 12

Diseño de Sistemas: Documentación de Bajo Nivel y Pruebas
15:23 - 13

Planificación de Integración Continua y Rollout de Software
13:56 - 14

Definición y aplicación del concepto "Code Complete" en proyectos software
10:55 - 15

Decisiones en Diseño de Sistemas Basados en Requerimientos del Negocio
03:35
- 16

Desarrollo e Implementación de Sistemas Backend
03:35 - 17

Diseño de Entidades para Reseñas de Cámaras y Productos
08:58 - 18

Diseño e Implementación de Interfaces en C para Productos y Reseñas
18:17 - 19

Desarrollo de Pruebas Unitarias con TDD en C#
17:30 - 20

Implementación de pruebas unitarias con TDD en proyectos de software
25:16 - 21

Desarrollo de un Sistema de Reseñas en Azure
06:46
¿Qué es un sistema monolítico?
Empezar a comprender la arquitectura de los sistemas de software es fundamental para cualquier desarrollador backend. Un sistema monolítico es uno de los conceptos claves que hemos de entender. Este tipo de sistema es aquel que está contenido en una única pieza o "monolito". Imagina que se trata de una piedra inamovible: es la representación de un solo servidor que aloja y ejecuta todo el sistema.
Ejemplo práctico de un sistema monolítico
En un entorno tradicional, podríamos tener un stack LAMP (Linux, Apache, MySQL, PHP), populares tecnologías que juntas proporcionan los fundamentos para crear una página web dinámica. En este caso, el sistema completo se ejecuta en un único servidor. Esto facilita el desarrollo y administración cuando estamos comenzando o manejamos proyectos de menor envergadura.
- Componentes del stack LAMP:
- Linux: el sistema operativo.
- Apache: el servidor web.
- MySQL: la base de datos.
- PHP: el lenguaje de programación usado para el desarrollo web.
Sin embargo, esta arquitectura monolítica tiene una gran limitación: si este único servidor cae, todo el sistema deja de funcionar.
¿Cómo evolucionamos hacia un sistema distribuido?
A medida que nuestras necesidades de desarrollo crecen, también lo hace la infraestructura que las soporta. Es aquí donde aparecen en escena los sistemas distribuidos. Estas arquitecturas fragmentan el sistema en múltiples componentes que se comunican a través de redes, utilizando Internet.
Características de los sistemas distribuidos
Un sistema distribuido consta de varios servidores o servicios que interactúan entre sí para brindar una solución robusta y eficiente. Esta distribución puede incluir servidores en distintos continentes, conectándose para proporcionar la información que el sistema requiere.
Beneficios de un sistema distribuido
- Escalabilidad: Cada componente del sistema puede escalarse de manera independiente sin afectar al resto.
- Tolerancia a fallos: Si un componente falla, los demás pueden continuar operando, lo que aumenta la fiabilidad global del sistema.
- Diversidad tecnológica: Permite utilizar diferentes tecnologías para distintos componentes, optimizando su rendimiento y aprovechando lo mejor de cada tecnología.
¿Cómo se visualiza un sistema distribuido en la práctica?
En la práctica, un sistema distribuido se visualiza como un ecosistema complejo que se extiende más allá de un solo servidor.
Ejemplo de aplicación
- Front end y usuarios: Usan un navegador en una computadora o una aplicación móvil para conectarse a la nube.
- Back end: Incluye múltiples componentes como colas de mensajes, bases de datos, servicios serverless, entre otros.
A través de la nube, los servicios del back end exponen APIs y métodos de comunicación que envían información a los dispositivos de los usuarios. Estos distintos componentes colaboran para proporcionar la funcionalidad y datos necesarios que la aplicación requiere para operar.
Emprender el viaje hacia el entendimiento y la implementación de arquitecturas distribuidas es un paso significativo en el desarrollo de software moderno. La clave es comenzar con pequeños pasos y ser constante en el aprendizaje. ¡Nos vemos en la próxima clase para seguir profundizando en estos apasionantes temas!