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

Clase 13 de 24Curso 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!