Qué son las arquitecturas monolíticas y sus ventajas y desventajas
Clase 13 de 24 • Curso de Fundamentos de Arquitectura de Software
Resumen
Las arquitecturas monolíticas son una solución tradicional en el desarrollo de software, consistiendo en un solo contenedor o programa que cubre todos los requisitos funcionales. Aunque han sido ampliamente utilizadas, recientemente han recibido críticas por presentar limitantes en términos de escalabilidad y gestión del código fuente.
¿Qué significa una arquitectura monolítica?
El término "monolítico" se compone de "mono", que significa uno, y "lito", que significa piedra. En la práctica, implica crear una sola aplicación o sistema que aborda todas las funcionalidades necesarias para resolver problemas específicos. Ejemplos históricos incluyen programas antiguos de contabilidad y juegos que se instalaban localmente en una sola computadora.
En una arquitectura monolítica, los módulos permiten establecer diferenciaciones lógicas internas, que ayudan a dividir de manera conceptual el sistema en partes más pequeñas y manejables:
- Un módulo dedicado a la persistencia de datos.
- Otro módulo especializado en la generación de reportes.
- Una capa orientada al cliente, enfocada en presentar o capturar información.
¿Cuáles son los beneficios de las arquitecturas monolíticas?
Aunque las arquitecturas monolíticas parecen algo anticuadas, presentan ciertos beneficios prácticos, especialmente en contextos específicos:
- Fáciles de adoptar y aprender.
- Sencillas de implementar entre equipos pequeños.
- Alto nivel de soporte y documentación disponible en la comunidad y la industria, con herramientas, plugins y papers que facilitan su manejo.
¿Qué inconvenientes tienen las arquitecturas monolíticas?
A pesar de las ventajas anteriores, estos sistemas plantean ciertas limitaciones:
Complejidad en la escalabilidad y comunicación:
- Al crecer el alcance y la complejidad del sistema, resulta complicado mantener seguimiento de las decisiones internas tomadas.
- La comunicación entre diferentes equipos puede verse afectada negativamente, generando duplicación de trabajo o interferencias.
Problemas de disponibilidad y rendimiento:
- Respuestas lentas o saturación debido a que toda la carga de usuarios impacta sobre un solo sistema.
- Dificultad en distribuir dinámicamente la carga según requerimientos específicos o casos de uso diferenciados.
Alternativas frente a estos retos:
Para resolver estas limitaciones han surgido otras opciones arquitectónicas. Una alternativa popular y adoptada es la arquitectura orientada a servicios, tema que abordaremos en próximas clases.
¿Has tenido experiencias con arquitecturas monolíticas?, ¿cuál consideras tú que es su mayor fortaleza o desafío? ¡Comparte tus comentarios y sigamos aprendiendo juntos!