¿Qué es una aplicación monolítica?

El primer paso en el viaje para mover aplicaciones monolíticas a Kubernetes

Kris Nova
2 de febrero de 2018 * 4 minutos de lectura

A lo largo de mi carrera de ingeniería de software, una de las preguntas más valiosas que he aprendido a hacerle a un colega es «¿Qué significa something algo para ti?». Obliga al otro ingeniero a evaluar sus implicaciones de usar una palabra determinada. Siguiendo con la primera llamada de Aplicaciones Monolíticas en movimiento a Kubernetes, quería pasar unos minutos hablando de lo que es una aplicación monolítica. O al menos, lo que significa para mí.

Este es un espacio interesante que necesita atención. Si bien operar un microservicio sin estado en Kubernetes es relativamente fácil, operar una aplicación grande con estado aún tiene un largo camino por recorrer. Comprender qué es una aplicación monolítica será el primer paso para facilitar el proceso de migración.

Para definir una aplicación monolítica, primero necesitamos comprender los componentes de una aplicación que nos importa. Los tres componentes en los que estamos interesados serán la interfaz de usuario, la capa de acceso a los datos y el almacén de datos.

La interfaz de usuario es el punto de entrada de la aplicación, y también es el punto del programa con el que un usuario interactuará. Esto podría ser una función main (), un sitio web, un servicio web u otros puntos de entrada.

La capa de acceso a datos la capa de el programa que se ajustará a un almacén de datos. Por lo general, la capa de acceso a datos se encargará de problemas como la autenticación con un almacén de datos y la desinfección de datos antes de que se conserven en el almacén de datos.

El almacén de datos es la parte más fundamental del sistema, y es responsable de almacenar información arbitraria (datos) y recuperarla. Este componente es normalmente solo una base de datos.

Estos tres componentes conforman un tipo muy común de aplicación que se llama un estado de la aplicación. Lo que significa que la aplicación almacena y manipula datos a lo largo del tiempo. Por lo tanto, decimos que la solicitud tiene estado. Más importante aún, que el estado de la aplicación puede cambiar con el tiempo.

En el caso de una aplicación monolítica, comúnmente observamos múltiples capas de la aplicación estrechamente unidas entre sí. En el siguiente ejemplo podemos ver que la interfaz de usuario y la capa de acceso a datos están agrupadas. Esto generalmente se hace a través de un repositorio de código grande, y ambas capas probablemente dependerán de que la otra esté en su lugar para ejecutarse. Además, la interfaz de usuario y las capas de acceso a datos normalmente se agrupan en el mismo proceso en tiempo de ejecución. Lo que significa que se comunican en el mismo sistema, utilizando recursos del sistema (memoria y ciclos de cómputo) para interactuar con otras partes del sistema.

Por el contrario, un microservice aplicación basada estaría compuesta de pequeños componentes modulares que pueden ser fácilmente desactivado. Esto ofrece un concepto de composición para un operador y es una señal de que está trabajando con microservicios en lugar de una aplicación monolítica. El siguiente ejemplo muestra una aplicación flexible y modular. Tenga en cuenta que en este modelo podemos ejecutar los componentes más pequeños de forma independiente y usar una red para conectar nuestro sistema. Este enfoque es mucho más escalable.

Entonces, ¿qué es una aplicación monolítica? Es una aplicación de software de un solo nivel en la que la interfaz de usuario y el código de acceso a los datos se combinan en un solo programa en una sola plataforma. También es una aplicación que ejecuta varios componentes en el mismo proceso, en el mismo sistema.

En el futuro, buscamos comprender los matices de la migración de aplicaciones monolíticas a Kubernetes, y esperamos que este sea un valioso primer paso en nuestro viaje. Como el proceso es relativamente indocumentado, planeamos compartir las lecciones aprendidas, para que todos puedan beneficiarse.



+