¿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!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?