Las diferencias entre la arquitectura monolítica y los microservicios son varias y complejas. Cada uno ofrece beneficios únicos y ninguno puede considerarse superior.
El enfoque monolítico es el modelo de software tradicional. Los microservicios reflejan el desarrollo posterior de software, pero eso no ha hecho que la arquitectura monolítica quede obsoleta.
Supongamos que ha empezado a trabajar para una startup tecnológica y se le ha encomendado la tarea de implementar un plan de TI para la nueva empresa. Se enfrenta a una serie de decisiones, pero ninguna tan básica o trascendental como decidir entre una arquitectura monolítica o una arquitectura de microservicios. La elección de la arquitectura de software no debe realizarse de forma aislada o sin comprender claramente las necesidades iniciales y futuras de procesamiento de datos de su organización, ya que cualquier método arquitectónico que se elija tendrá efectos profundos en la capacidad de la organización para ejecutar de manera significativa sus objetivos comerciales.
Así pues, lo que está en juego es considerable. Y como usted es el recién nombrado director de TI, también es una decisión de peso para usted personalmente, que podría llevarle a un camino dorado de incalculable avance profesional, si elige sabiamente.
¿Cuál elige? Primero, conozcamos sus opciones.
Como se ha dicho, la arquitectura monolítica es el modelo tradicional de desarrollo de software. En él, una base de código desempeña varias funciones (es decir, funciones empresariales). El núcleo del ordenador controla todas las funciones. En las aplicaciones monolíticas, todo el código necesario para toda la aplicación se mantiene en una ubicación central.
Las aplicaciones monolíticas suelen contener los siguientes componentes:
El uso de la arquitectura monolítica produce numerosos beneficios:
El uso de la arquitectura monolítica también presenta posibles problemas:
El otro modelo de desarrollo de software, los microservicios, es un estilo arquitectónico nativo de la nube. Con los microservicios, una aplicación se basa en múltiples componentes o servicios individuales, débilmente acoplados. Las aplicaciones de microservicio tienen su propia pila tecnológica, que es un conjunto de tecnologías que funcionan juntas para realizar un trabajo determinado.
La principal ventaja de los microservicios es que el sistema se puede actualizar fácilmente para dirigirse a las nuevas capacidades empresariales dentro de la aplicación sin afectar a todo el sistema. Esto puede traducirse en un ahorro considerable tanto de tiempo como de mano de obra.
Las ventajas de los microservicios son múltiples. Se adaptan tanto al crecimiento constante del negocio como a los nuevos cambios tecnológicos:
Los microservicios ofrecen beneficios definidos, pero su complejidad crea ciertos problemas:
Antes de nuestra comparación directa de la arquitectura monolítica y la arquitectura de microservicios, debemos desarrollar la historia con algunos detalles históricos para proporcionar un contexto más amplio.
En cierto modo, es difícil rastrear el origen de la arquitectura monolítica hasta una sola fecha; cuanto más complicada sea la tecnología, más difícil puede ser determinar la entrega exacta de esa tecnología. Y lo mismo ocurre con las arquitecturas monolíticas, que comenzaron a desarrollarse a mediados del siglo XX.
International Business Machines (IBM) fue un actor importante en ese desarrollo crítico inicial. Según el colaborador de DZone, Pier-Jean Malandrino, "... empresas como IBM desempeñaron un papel decisivo en la definición de la arquitectura de software temprana mediante el desarrollo de los ordenadores mainframe en las décadas de 1960 y 1970"1.
Las arquitecturas monolíticas no eran perfectas: a menudo estaban escritas en lenguajes ultrabásicos y estaban destinadas a que las leyera una sola máquina. Como solo una máquina contenía todo el sistema, todos los componentes del ordenador estaban perfectamente acoplados. El escalado era inexistente o apenas posible, y generalmente requería la reconstrucción completa de un sistema.
Alternativamente, si la arquitectura monolítica parece primitiva en retrospectiva, es en parte porque estaba allí primero, antes que cualquier otro sistema de arquitectura de software. Y ha demostrado ser siempre útil, incluso resiliente, a lo largo del tiempo. El hecho de que las arquitecturas monolíticas se sigan utilizando siete décadas después de su introducción dice mucho en un sector en el que lo único que suele permanecer son los cambios incesantes.
La arquitectura monolítica ha perdurado, pero ya no es el único juego en la ciudad, y no lo ha sido durante algún tiempo. A medida que avanzaba la década de 1980, la ingeniería de software experimentó un impulso hacia la modularidad y el uso de lenguajes de programación orientados a objetos. Para la década de 1990, se habían preparado las condiciones para que los sistemas distribuidos pudieran beneficiarse de los recientes avances de la computación en red.
Esto condujo finalmente al desarrollo de los microservicios, que empezaron a utilizarse ampliamente tras el inicio de la cloud computing y las tecnologías de contenerización en la década de 2000. La arquitectura de microservicios se creó para mejorar el modelo monolítico, preparándolo para sistemas descentralizados y de escalado rápido.
Ahora, en la década de 2020, el desarrollo de software pasa de la arquitectura monolítica o de la arquitectura de microservicios. Basándonos en lo que esperamos del cambio tecnológico, nuestro pensamiento inicial podría ser asumir que la tecnología que ha llegado más recientemente es superior y, en algunas circunstancias, ese es definitivamente el caso.
Sin embargo, hacer ese tipo de afirmación general es peligroso, en gran medida porque sencillamente no es cierto. Todavía hay numerosas situaciones informáticas que obtienen beneficio de la sencillez del modelo de arquitectura monolítica.
Ambas arquitecturas de software tienen sus ventajas e inconvenientes, y las empresas deben evaluar cuidadosamente ambos tipos y considerar sus necesidades previstas de desarrollo de aplicaciones antes de adoptar un sistema u otro.
¿Cómo se comparan la arquitectura monolítica y la arquitectura de microservicios cuando se ven a través del prisma de las etapas operativas clave?
Existe un suministro casi ilimitado de casos de uso que se pueden lograr utilizando una arquitectura monolítica o una arquitectura de microservicios. Estos son algunos de los más frecuentes:
Cualquier implementación a gran escala de arquitectura monolítica o arquitectura de microservicios será inevitablemente errónea si su diseño se completa en un vacío efectivo, sin considerar primero la parte más importante de la ecuación: las necesidades particulares de su startup tecnológica.
Como director de TI, esta es la actividad crítica cuando se planifican las decisiones de infraestructura de software. Saber cuándo usar un estilo arquitectónico es esencial, al igual que comprender el sistema más adecuado en función de sus usos necesarios.
El ejercicio de autoanálisis es muy valioso porque su trabajo no solo consiste en seleccionar el sistema arquitectónico óptimo para su organización, sino también en estimar con precisión el sistema arquitectónico que su empresa necesitará en los próximos meses y años. En cierto modo, se le encomienda la tarea de predecir el futuro.
Así que, aunque una arquitectura monolítica puede parecer perfectamente ideal para su empresa emergente, depende de usted proyectar el crecimiento futuro. Y si se espera una expansión desenfrenada, podría resultar más prudente seguir adelante e invertir en una arquitectura de microservicios. Hay numerosas variables a tener en cuenta:
Enlaces externos a ibm.com
1 “Evolution of Software Architecture: From Monoliths to Microservices and Beyond””, Pier-Jean Malandrino, DZone, 11 de noviembre de 2023.
2 “Retail e-commerce sales worldwide from 2014 to 2027”, Statista, mayo de 2024
Un servicio totalmente gestionado y de inquilino único para desarrollar y entregar aplicaciones Java.
Utilice el software y las herramientas de DevOps para crear, implementar y gestionar aplicaciones nativas de la nube en varios dispositivos y entornos.
El desarrollo de aplicaciones en la nube significa crear una vez, iterar rápidamente e implementar en cualquier lugar.