Qué son las arquitecturas monolíticas y sus ventajas y desventajas

Clase 13 de 24Curso de Fundamentos de Arquitectura de Software

Contenido del curso

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!