Saltar al contenido principal
Volver a todos los artículos
Arquitectura de Software5 min de lectura

Facturando en un Monolito: Por Qué No Salté al Tren de los Microservicios

Muchos creen que escalar un producto digital significa migrar a microservicios. Te explico por qué decidí mantener y evolucionar mi monolito modular para seguir creciendo de forma rentable y sostenible.

La Sirena de los Microservicios

Cuando tu producto empieza a facturar, a ganar tracción real, sucede algo curioso. Además de los clientes y los problemas de negocio, empiezan a llegar las opiniones. Opiniones de desarrolladores, de 'expertos' en Twitter, de conferencias a las que asistes. Y casi todas apuntan en una dirección: "Para escalar de verdad, necesitas microservicios".

Es casi un rito de iniciación. Pareciera que no eres una empresa de tecnología 'seria' si no tienes un diagrama de arquitectura que parece un plato de espaguetis de colores, con docenas de servicios comunicándose por eventos y colas de mensajes. Yo estuve ahí. Sentí esa presión. Y decidí ignorarla.

Mi producto factura, crece y lo hace sobre un monolito. Un monolito modular, sí, pero un monolito al fin y al cabo. Y hoy te voy a contar por qué fue la decisión más pragmática y rentable que pude tomar.

El Problema Real vs. el Problema Imaginario

Como emprendedores técnicos, nos encanta resolver problemas complejos. El tema es que a menudo nos enamoramos de los problemas equivocados. Cuando estás en las trincheras, tus problemas reales son:

* ¿Cómo consigo los próximos 100 clientes? * ¿Por qué esta funcionalidad clave no está convirtiendo? * ¿Cómo puedo responder a los tickets de soporte más rápido? * ¿Qué nueva característica aportará más valor y me permitirá subir precios?

El problema de '¿cómo gestionaremos 10 millones de usuarios concurrentes?' es, para el 99% de nosotros, un problema imaginario. Es una forma de procrastinación glorificada. La arquitectura de microservicios es una solución fantástica para un conjunto muy específico y real de problemas que, probablemente, todavía no tienes.

¿Qué es un Monolito Modular?

Cuando digo 'monolito', no me refiero a una bola de lodo (Big Ball of Mud) donde todo está acoplado con todo. Eso es mala arquitectura, punto. Me refiero a un Monolito Modular.

Imagínalo así: es una única aplicación, con un único repositorio de código y que se despliega como una sola unidad. Pero por dentro, está organizado como una biblioteca con secciones bien definidas.

* Módulos claros: Tengo una carpeta o namespace para `usuarios`, otra para `facturacion`, otra para `proyectos`, etc. Cada una representa un dominio del negocio. * Interfaces internas: Un módulo no accede directamente a la base de datos de otro. Se comunican a través de interfaces bien definidas, como si fueran APIs internas. El módulo de `proyectos` le pide al de `usuarios` la información que necesita; no va y la busca en su tabla. * Bajo acoplamiento, alta cohesión: El código relacionado con la facturación vive junto. Si necesito cambiar algo de los impuestos, sé que el cambio está contenido en el módulo de `facturacion`. No tengo que ir cazando el cambio por diez servicios distintos.

Las Ventajas Pragmáticas (y Económicas)

Mantener esta estructura me ha dado superpoderes que se traducen directamente en dinero y velocidad.

1. Velocidad de Desarrollo: Es absurdamente rápido. Abro mi IDE y tengo todo el contexto. Puedo refactorizar, mover código entre módulos, y seguir un flujo de lógica de negocio completo sin saltar entre 20 repositorios. No hay latencia de red en llamadas locales, no hay que gestionar versiones de APIs entre servicios. Todo es más simple.

2. Simplicidad Operacional: Un sistema para desplegar. Un sistema de monitorización principal. Una base de datos (por ahora). Esto significa menos tiempo lidiando con Kubernetes, Istio, Terraform y toda la parafernalia de DevOps. Menos cosas que se rompen a las 3 AM. Y, crucialmente, una factura de cloud mucho más baja.

3. Consistencia de Datos: Las transacciones ACID son tus mejores amigas. ¿Un usuario se registra y paga su primer plan? Es una única transacción en la base de datos. O todo funciona, o no funciona nada. En microservicios, esto se convierte en un baile complejo de 'sagas' y 'consistencia eventual' que es una fuente inagotable de bugs y dolores de cabeza para la lógica de negocio core.

4. Refactorización Realista: ¿Nos dimos cuenta de que la lógica de 'equipos' debería ser parte del módulo de 'usuarios' y no de 'proyectos'? En mi monolito, eso es un refactor. Muevo ficheros, ajusto un par de `imports` y listo. En microservicios, eso es un proyecto de meses que involucra a varios equipos, migraciones de datos y despliegues coordinados.

El Camino a Seguir: Estrangular el Monolito (Solo si Duele)

No soy un dogmático. Sé que los microservicios tienen su lugar. Mi estrategia no es 'monolito para siempre', sino 'monolito hasta que duela de verdad'.

El día que una parte específica de mi aplicación (por ejemplo, la generación de reportes) empiece a consumir tantos recursos que afecte al resto del sistema, o necesite escalar de forma independiente a un nivel masivo, o requiera un equipo dedicado que necesite total autonomía... ese día, aplicaré el patrón Strangler Fig.

Consiste en 'estrangular' lentamente el monolito. Construiré ese nuevo servicio de reportes de forma independiente. Luego, redirigiré todo el tráfico que iba a la funcionalidad de reportes del monolito hacia el nuevo microservicio. Con el tiempo, puedo incluso borrar el código viejo del monolito.

Es un enfoque gradual, basado en necesidades reales y tangibles, no en el hype.

Conclusión: Enfócate en lo que Importa

Tu trabajo como fundador y constructor de productos no es tener la arquitectura más 'cool'. Es entregar valor a tus clientes de la forma más rápida y sostenible posible. Un monolito modular bien diseñado es el arma secreta para lograrlo durante mucho, mucho tiempo.

No dejes que el brillo de la complejidad arquitectónica te distraiga de lo que realmente importa: tu producto, tus clientes y tu rentabilidad.

Escrito por Samuel Moreno

Socio y Desarrollador en Sinergia Barcelona.

Facturando en un Monolito: Por Qué No Salté al Tren de los Microservicios | Un paseo por la vida