Regresar
107

¿Mi proyecto necesita microservicios?

Actualizado: 14/09/2026

La respuesta corta, para la gran mayoría de los proyectos, es no.

Conviene ponerla al principio porque es la que casi nunca se da. Cuando esta pregunta se le hace a un modelo sin contexto, la respuesta tiende a ser una arquitectura distribuida con su bus de eventos y su diagrama de cajas, porque es lo que más abunda en la literatura técnica reciente. Rara vez es una pregunta de vuelta sobre cuántas personas hay en el equipo.

Este árbol existe para dar esa respuesta con fundamento en lugar de por intuición. Son siete preguntas, ninguna técnica, y varias pueden cerrar la decisión por sí solas.

Qué se está decidiendo

No es si tu código estará bien organizado. Un monolito modular puede tener límites tan claros como un sistema distribuido, y sale bastante más barato.

Lo que se decide es si esos límites cruzan la red: si cada parte se despliega sola, con su base de datos, su ciclo de vida y sus fallos propios.

El error de plantearlo como un problema técnico

Los microservicios nacieron para resolver un cuello de botella organizativo: varios equipos que se bloquean al desplegar, que dependen unos de otros para sacar una funcionalidad y que no pueden avanzar a ritmos distintos.

Todo lo demás que se les atribuye (escalar mejor, ordenar el código, aislar fallos) o se consigue por otras vías más baratas, o llega acompañado de problemas nuevos. Escalar una parte concreta se puede hacer si esa parte lo necesita de verdad; ordenar el código se hace trazando límites, algo que se puede hacer dentro de un solo desplegable y gratis.

Por eso las preguntas que vienen hablan casi todo el tiempo de personas, dinero y tiempo de respuesta, y muy poco de código.

Árbol de decisión con cuatro preguntas encadenadas: si hay más de un equipo desplegando, si se bloquean entre ellos para desplegar, si los límites del dominio están claros y si se pueden operar varios servicios en producción. Las dos primeras respuestas negativas llevan al monolito modular, la tercera a aclarar los límites primero, la cuarta a que falta capacidad de operación, y solo el sí completo lleva a hacerlo por partes
Ninguna de las cuatro preguntas es técnica, y las dos primeras cierran la decisión en la mayoría de los casos.

Qué significa que un límite esté claro

La cuarta pregunta pide comprobar si los límites internos existen, y conviene precisar qué se está mirando, porque es el punto donde más se confunde el deseo con la realidad.

Un límite claro cumple tres condiciones, y las tres se verifican en minutos:

  • Los datos tienen dueño. Cada tabla pertenece a un módulo y solo ese módulo escribe en ella. Si dos escriben en la misma, no hay dos módulos: hay uno repartido en dos carpetas.
  • La conversación pasa por un sitio conocido. Un módulo llama a otro a través de su interfaz pública, no alcanzando sus clases internas ni consultando sus tablas por atajo.
  • Se puede contar qué entra y qué sale. Si no puedes enumerar las operaciones que un módulo ofrece a los demás, ese contrato no está definido y no hay nada que convertir en una interfaz de red.

La comprobación práctica es intentar mover un módulo a otra carpeta y ver qué se rompe. Si aparecen referencias desde media aplicación, el límite estaba solo en el nombre del directorio.

Esto importa porque es justo el trabajo que hay que hacer de todas formas. Si acabas dividiendo, tendrás los límites listos; y si no divides, tienes un sistema más ordenado sin haber pagado nada de la complejidad distribuida.

Si la respuesta es sí, no lo hagas de golpe

Las migraciones de una sola vez son las que se quedan a medio camino, con parte del sistema en cada modelo y el doble de complejidad que cualquiera de los dos por separado.

El camino que funciona es gradual, y tiene nombre propio en la literatura de arquitectura: se deja el sistema existente en su sitio y se va sustituyendo por partes, redirigiendo cada trozo de tráfico al servicio nuevo solo cuando ese trozo está terminado y probado.

En la práctica son cuatro pasos por cada pieza que se extrae:

  1. Trazar el límite dentro del monolito, con su interfaz pública y sus datos propios, sin mover nada todavía.
  2. Dejarlo funcionando así un tiempo. Si aparecen atajos hacia sus tablas, el límite estaba mal puesto y corregirlo aquí sigue siendo gratis.
  3. Sacarlo a un servicio, manteniendo la misma interfaz. Lo que cambia es que detrás hay una llamada de red, con sus fallos y sus tiempos de espera.
  4. Redirigir el tráfico y dejar la ruta antigua disponible hasta confirmar que la nueva se sostiene.

La ventaja de este orden está en el paso dos: si descubres que el límite no aguanta, no desplegaste nada, no montaste infraestructura y no hay nada que revertir. El paso más valioso es el que se puede deshacer sin coste.

Antes de empezar

Responde con lo que es cierto hoy, no con lo que esperas que sea cierto si el proyecto sale bien. Es el error más común al usar este tipo de listas: se responde con el escenario optimista y se termina construyendo para un problema que nunca llega.

Un sistema simple que funciona para veinte usuarios se puede hacer crecer cuando lleguen los mil. Un sistema distribuido construido para mil usuarios que nunca aparecieron no se simplifica: se reescribe.

  1. ¿Cuántas personas despliegan, y se bloquean entre sí?

    Es la pregunta que más decisiones cierra, y por eso va primera. No se trata de cuánta gente escribe código, sino de cuántas personas o equipos necesitan sacar cambios a producción de forma independiente.

    El síntoma que justifica dividir es concreto: alguien espera para desplegar porque otro tiene algo a medias, o un fallo en una parte detiene la salida de todo lo demás. Si eso pasa varias veces por semana, hay un problema real que los microservicios resuelven.

    Si trabajas solo, o son dos o tres personas que se coordinan hablando, ese problema no existe. Lo que obtendrías al dividir es toda la complejidad operativa del reparto sin ninguna de sus ventajas.

    Una o dos personas: la respuesta es no, y las siguientes preguntas solo confirman el matiz. Varios equipos que se bloquean: sigue, hay caso.

  2. ¿Hay una parte con necesidades de recursos muy distintas?

    Esta es la razón técnica legítima, y es más rara de lo que parece. Aplica cuando una parte del sistema consume recursos de un orden completamente distinto al resto.

    El procesamiento de vídeo o imágenes, un componente que necesita memoria abundante para cargar modelos, o un trabajo que satura el procesador durante minutos. En esos casos, tenerlo dentro del mismo desplegable obliga a dimensionar toda la aplicación para el pico del componente más exigente, y a pagar esa capacidad todo el tiempo.

    Ojo con confundirlo con tráfico alto: que una sección reciba muchas visitas no es motivo suficiente, porque replicar la aplicación entera suele ser más simple y más barato que partirla.

    Sí hay una parte así: es la primera candidata a salir, y probablemente la única. Todo consume parecido: este argumento no aplica.

  3. ¿Hay requisitos de aislamiento o cumplimiento?

    Algunos proyectos tienen partes sujetas a reglas que el resto no comparte: datos de pago, información de salud, o un cliente que exige que sus datos no salgan de un país concreto.

    Aislar esa parte en un servicio propio reduce el alcance de una auditoría y limita cuánto del sistema queda sujeto a esas reglas. Es un beneficio concreto y medible en horas de trabajo y en riesgo.

    Conviene comprobar que el requisito es real y no una suposición. Muchas veces se asume que manejar pagos obliga a aislar, cuando delegar el cobro en un proveedor externo evita tocar los datos sensibles y deja el requisito sin objeto.

    Hay un requisito documentado: justifica separar esa parte, aunque el resto siga junto. No lo hay: no inventes uno por prudencia.

  4. ¿Los límites internos están claros hoy?

    Esta pregunta es un filtro, no un camino. Si los límites entre las partes de tu sistema no están claros dentro del código, repartirlos por la red no los va a aclarar.

    Al contrario: un acoplamiento incómodo dentro de un proceso se convierte en un acoplamiento distribuido, donde cada llamada entre piezas mal separadas cruza la red, puede fallar sola y hay que versionarla.

    La prueba es concreta: intenta describir en una frase qué hace cada módulo y qué datos le pertenecen en exclusiva. Si dos módulos escriben en las mismas tablas, ese límite todavía no existe.

    Los límites están claros: dividir es una opción viable. No lo están: arréglalos primero dentro del monolito, que es gratis y reversible.

  5. ¿Quién va a diagnosticar un fallo a las tres de la mañana?

    En un sistema distribuido, una operación que falla deja rastro en varios servicios, cada uno con sus propios registros. Reconstruir qué pasó exige correlacionar esos rastros, y eso se construye antes, no durante el incidente.

    La pregunta real es si hay alguien con el conocimiento y el tiempo para operar eso. No basta con que exista la herramienta: alguien tiene que saber leerla cuando el sistema está caído y hay usuarios esperando.

    Si la respuesta es que esa persona eres tú y nadie más, ese conocimiento es parte del costo de la decisión, y se paga en noches.

    Hay un equipo con turnos y herramientas: el costo es asumible. Eres tú solo: cada servicio adicional multiplica lo que tendrás que entender bajo presión.

  6. ¿Está presupuestado lo que cuesta sostenerlo?

    Dividir tiene un costo que no aparece en el diagrama. Cada servicio necesita su despliegue, su vigilancia, sus credenciales y, con frecuencia, su base de datos.

    A eso se suma la infraestructura común que antes no hacía falta: un lugar donde correr los servicios, algo que los comunique, y un sistema que reúna los registros de todos para poder buscar en un solo sitio.

    Conviene sumar esas cifras antes de decidir, no después. La factura mensual de un sistema repartido en cinco servicios rara vez se parece a la de una máquina con una aplicación dentro.

    Los números cuadran: adelante. No los has calculado: ese cálculo es parte de la decisión, no un detalle posterior.

  7. Si dividieras, ¿por dónde empezarías?

    Esta pregunta funciona como prueba final, incluso si todas las anteriores dieron que sí. Si no puedes nombrar la primera pieza que saldría y por qué, la decisión todavía no está madura.

    Una buena candidata tiene tres rasgos: un límite evidente con el resto, datos que le pertenecen en exclusiva, y un motivo concreto para salir, sea recursos, cumplimiento o ritmo de cambio.

    Si la respuesta es dividiríamos todo a la vez, conviene detenerse. Las migraciones de golpe son las que se quedan a medio camino, con la mitad del sistema en cada modelo y el doble de complejidad que cualquiera de los dos.

    Tienes una candidata clara: empieza por ella y solo por ella. No la tienes: sigue con un monolito modular y espera a que el sistema te la señale.

Las cuatro respuestas posibles

Según cómo hayan quedado las siete preguntas, el resultado es uno de estos cuatro.

  • Monolito, sin más. Pocas personas, un solo ritmo de despliegue, nada con requisitos especiales. Es la respuesta correcta para la mayoría de los proyectos que empiezan, y no es un lugar de paso.
  • Monolito modular. Un solo desplegable, pero con límites internos tratados en serio: cada módulo con sus datos y una interfaz pública. Es lo que conviene por defecto en cualquier proyecto que espere crecer.
  • Monolito con un servicio extraído. Todo junto salvo la pieza que tiene un motivo real para salir. Cubre casi todos los casos donde hay una razón técnica o de cumplimiento genuina.
  • Microservicios. Varios equipos autónomos, despliegues que hoy se bloquean, y presupuesto para sostener la infraestructura. Es una respuesta legítima, y bastante menos frecuente de lo que sugiere su presencia en la conversación técnica.

Hay una asimetría que conviene tener presente al decidir. Pasar de un monolito modular a servicios separados es un trabajo acotado si los límites ya estaban trazados: se saca un módulo, se le pone una interfaz de red delante y se despliega aparte.

El camino inverso, unir servicios que nunca debieron separarse, es mucho más caro y casi nadie lo recorre, aunque le convendría. Por eso, ante la duda, la opción reversible es empezar junto.

Y si vas a plantearle esta decisión a una IA, incluye en el prompt las respuestas a las dos primeras preguntas. Decir somos dos personas, un despliegue al día, sin partes con requisitos especiales cambia por completo lo que vas a recibir.


Checklist práctico principiante