Una aplicación monolítica combina la interfaz de usuario y las capas de acceso a los datos para múltiples funciones en una sola aplicación. Normalmente, una aplicación monolítica existirá como una única base de código que es modificada por múltiples equipos dentro de una organización, y se implementa como una sola unidad que contiene toda la funcionalidad que esos equipos mantienen.
Las aplicaciones monolíticas suelen ser más fáciles de desarrollar e implantar debido a la estrecha integración de sus componentes. Sin embargo, a medida que crecen en alcance y complejidad, y aumentan las exigencias de rendimiento, un monolito puede volverse difícil de mantener y escalar.
Los sistemas monolíticos pueden ser una buena opción para aplicaciones más pequeñas y menos complejas que no necesiten escalarse rápidamente o mantenerse de forma rutinaria. A continuación se muestran algunos ejemplos de aplicaciones que suelen tener bases monolíticas (aunque sus funcionalidades más recientes pueden basarse en una infraestructura más contenedorizada).
Aunque algunos aspectos de las arquitecturas monolíticas se han quedado anticuados, siguen teniendo muchos propósitos y atributos positivos.
Estas son algunas de las ventajas de los monolitos:
Aunque la naturaleza singular de los monolitos tiene sus aspectos positivos, también puede conllevar problemas.
Estas son algunas desventajas de los monolitos:
En contraste con la arquitectura monolítica, existe la arquitectura de microservicios. Los microservicios son un enfoque arquitectónico de software que descompone una aplicación grande y compleja en pequeños componentes independientes. Cada uno de estos componentes realiza una única función (como autenticación, notificación o procesamiento de pagos) o puede funcionar como un paquete dentro de un monolito. El término «microservicios» (o simplemente «servicios») también hace referencia a estos componentes pequeños.
Mientras que las aplicaciones monolíticas están estrechamente acopladas (lo que significa que sus componentes están interconectados), una aplicación de microservicios está distribuida (lo que significa que sus componentes pueden actuar de forma independiente). A medida que las aplicaciones crecen y se vuelven más complejas, muchas organizaciones están considerando abandonar los monolitos o adoptar microservicios para nuevas aplicaciones.
NGINX se enorgullece de ofrecer los siguientes recursos educativos gratuitos para aquellos que exploran los monolíticos y microservicios.