Aplicaciones monolíticas: ¿Están muriendo o tienen su lugar?
Les explico por qué están más vivas que nunca y cuál es su lugar hoy.
Antes de empezar, importante conceptualizar de manera sencilla sobre qué es una aplicación monolítica en un contexto de TI:
Aplicación o arquitectura de software donde todas las funcionalidades están en el mismo código fuente, y al ejecutarlas comparten recursos (RAM, CPU, red) de un mismo servidor.
Si estuvieras empezando a construir un sistema, SaaS o una aplicación: ¿Empezarías con Kubernetes (k8s) u otro lenguaje, o basado en arquitectura de micro servicios?
Si tu respuesta es afirmativa, como DevOps, desarrollador, de infraestructura, backend, de base de datos, pre-venta es perfectamente entendible y razonable.
Pero un CTO o un CIO, una startup puede que piense diferente y responda negativamente, y a continuación te voy a entregar algunos argumentos para ampliarte la visión a ver si concuerdas.
Escuchando una entrevista con uno de los co-fundadores y CEO de Global66, comentaba que su SaaS orientado al FinTech empezó con un gSheet, gForm, unas llamadas a API´s y al final la transferencias interbancarias las hacían manual.
Su reflexión para que todos pensemos fue: Empieza a automatizar como parte de escalar lo que ya no es rentable ni óptimo hacer manual.
Lo anterior está en sintonía con la demostración de Dropbox para buscar financiamiento para su proyecto, entiendo que hizo un prototipo donde dabas click para que se pudiera ver cómo podría funcionar, pero era puro fontend, no había nada detrás.
¿Ya ves por dónde voy con respecto a las aplicaciones monolíticas?
En el mundo del marketing, hay un principio que me gusta mucho para los que están comenzando: Falla rápido y barato.
¿Qué quiere decir?
Que no puedes pasarte un año o más desarrollado un software o aplicación para luego descubrir que has invertido mucho dinero en algo que no puede monetizarse o no es un negocio.
En el mundo de los negocios y del marketing existe un concepto muy poderoso que se aplica a la construcción de software, hacer un pequeño producto que funcione, algo básico que permita evaluar el interés del mercado.
Ahora te pregunto: ¿Tiene sentido hacer una pequeña pieza de software bajo una infraestructura o arquitectura descentralizada, blockchain, micro servicios, etc?
Verdad que tiene sentido hacerlo bajo una arquitectura que permita rapidez y que sea lo más económico posible.
Una de las opciones es hacer una aplicación monolítica y simple. Si todo sale bien y resulta ser que todo el mundo se enamora de la solución, con lo que se obtuvo, se invierte para escalarlo.
Se pudiese botar a la basura la aplicación monolítica luego de reescribir el código pensando en grande.
Otra variable interesante a considerar es si la solución será para usuarios o para empresas, una solución monolítica para empresas pudiera tener mayor tiempo de vida antes de pensar en escalarlo.
Uno de los emprendedores tecnológicos a quien más respeto al día de hoy, cuando era CTO y llegó a Badi, rehizo el código de la aplicación como 2 veces, y el resultado fue espectacular.
Resumen: Las aplicaciones monolíticas tienen su lugar, su espacio, todo dependerá de la estrategia, la visión de negocio y de los resultados que se deseen obtener.