Software

Arquitectura de software: estilos, decisiones y trade-offs

Estilos, patrones y decisiones de arquitectura explicados desde la operación: qué elegir según el tamaño del equipo, qué trade-offs duelen al escalar y cómo evaluar a quien va a firmar esas decisiones.

·16 min·Pedro Cailá · Kulturo
Arquitectura de software: estilos, decisiones y trade-offs

El CTO mira el tablero de entregas y ve tres problemas a la vez: el monolito empieza a crujir, el inversor exige más velocidad y el equipo aún no tiene experiencia suficiente para operar una plataforma distribuida. Hay ocho ingenieros, dos candidatos en proceso y una decisión que parece urgente: ¿modular el sistema actual, dividirlo en microservicios o apostar por serverless?

La respuesta no sale de un diagrama de cajas. Depende del producto, de los atributos de calidad que importan, del presupuesto operativo y, sobre todo, de las personas que tendrán que mantener la solución. En España, donde el tejido del software está compuesto en un 99,8% por pymes y más del 85% son microempresas de menos de 10 empleados, según el diagnóstico sectorial citado en el informe sobre el estado del desarrollo de software en España, elegir una arquitectura que el equipo no puede operar es una forma rápida de fabricar deuda técnica.

La arquitectura de software exige conectar diseño, operación y contratación. Aquí encontrarás una comparación práctica de estilos, un método para registrar decisiones con ADRs, los trade-offs que aparecen al escalar y un checklist para evaluar talento técnico sin dejarte impresionar por el vocabulario de moda.

El día a día de quien decide la arquitectura

El CTO de una scaleup española recibe una petición aparentemente sencilla: duplicar la velocidad de entrega sin contratar un equipo de plataforma completo. El producto vive en un monolito Rails o Java, el despliegue se ha vuelto delicado y cada cambio toca más partes de las que debería. Mientras tanto, un inversor pide nuevas funcionalidades y dos candidatos prometen resolver el problema con enfoques opuestos.

El primer candidato propone microservicios. Habla de despliegues independientes, escalabilidad horizontal y equipos autónomos. El segundo recomienda un monolito modular, con límites de dominio claros, pruebas aisladas y un único proceso de despliegue. Ambos pueden tener razón. El error sería escoger por familiaridad tecnológica en lugar de preguntar qué restricción está bloqueando al negocio.

Un equipo pequeño no necesita más distribución. Necesita límites claros, ciclos de entrega predecibles y una operación que pueda entender durante una incidencia. Si todavía no existe una práctica sólida de automatización, observabilidad y despliegue, conviene revisar primero responsabilidades como las que cubre un perfil de ingeniero DevOps, antes de añadir más saltos de red y más puntos de fallo.

Regla práctica: no adoptes una arquitectura que requiera contratar varias especialidades antes de poder entregar valor con seguridad.

La decisión tampoco se toma en el vacío del organigrama. La arquitectura de software en España se apoya en un ecosistema de unas 532.200 personas ocupadas en programación, consultoría y actividades informáticas, según datos de la EPA del tercer trimestre de 2025 recogidos en el informe académico de la URJC citado por Experis. Existe talento, pero eso no significa que puedas contratar inmediatamente experiencia en sistemas distribuidos, seguridad cloud y fiabilidad.

Durante las siguientes decisiones, el CTO debe responder cuatro preguntas:

  • Qué duele hoy: despliegues lentos, acoplamiento, latencia, fallos operativos o coste.
  • Qué sabe operar el equipo: no solo qué frameworks conoce, sino cómo diagnostica y revierte cambios.
  • Qué debe permanecer reversible: una decisión difícil de deshacer merece más evidencia.
  • Qué resultado medirá el negocio: velocidad, disponibilidad, coste, calidad o una combinación explícita.

Qué es la arquitectura de software y qué decide un arquitecto

Los planos de un edificio no describen cada ladrillo. Definen cómo se distribuyen las cargas, por dónde pasan las instalaciones y cómo se puede reformar una zona sin derribar toda la construcción. La arquitectura de software cumple una función equivalente: establece la estructura que permite desarrollar, desplegar, proteger y modificar un sistema.

Infografía que explica qué es la arquitectura de software mediante una metáfora de construcción y planos.

Un arquitecto no se limita a dibujar servicios. Decide dónde termina un módulo, qué datos controla cada componente y qué contrato permite que dos partes evolucionen sin romperse. También define cómo se despliega el sistema, cómo se detecta un fallo y qué compromisos acepta el negocio.

Las decisiones que afectan al producto

En la práctica, el arquitecto trabaja sobre varias dimensiones conectadas:

  • Estructura: módulos, capas, dependencias y límites de dominio.
  • Comunicación: llamadas síncronas para respuestas inmediatas, mensajería asíncrona cuando conviene desacoplar procesos.
  • Persistencia: modelo relacional, documentos, cachés, colas y reglas de consistencia.
  • Operación: despliegue, rollback, health checks, logs, métricas y trazas.
  • Seguridad: identidad, autorización, gestión de secretos, aislamiento y auditoría.
  • Calidad: disponibilidad, latencia, mantenibilidad y coste.

La modularidad y el ocultamiento de información tienen raíces históricas claras. En 1968, Edsger Dijkstra defendió establecer una estructura correcta antes de codificar, y en 1972, David Parnas formuló ideas fundacionales sobre modularidad y ocultamiento de información, según el resumen académico difundido por la URJC sobre la formación y evolución de la arquitectura de software.

Arquitectura no es documentación decorativa

Una decisión arquitectónica cambia el trabajo diario de los desarrolladores. Si eliges comunicación asíncrona, tendrás que gestionar reintentos, duplicados, orden de eventos y trazabilidad. Si eliges un servicio separado, tendrás que asumir una interfaz, una estrategia de despliegue y una forma de diagnosticar errores entre procesos.

La disciplina ya ocupa un lugar central en la formación técnica española. La asignatura Arquitectura del Software aparece como obligatoria de especialidad en Ingeniería del Software en la Universitat Politècnica de Catalunya, con teoría y laboratorio, según el documento académico de la URJC citado anteriormente. La señal es importante: la arquitectura no es un contenido accesorio que se añade cuando alguien asciende a arquitecto.

La pregunta correcta no es “¿qué diagrama representa mejor el sistema?”. Es “¿qué decisiones permiten que este equipo entregue cambios seguros bajo estas restricciones?”.

Estilos y patrones que verás en cualquier equipo

Los estilos arquitectónicos no compiten por una medalla. Resuelven problemas distintos y trasladan el coste a lugares diferentes. Esta comparación sirve para iniciar una conversación, no para sustituir el análisis del dominio.

Comparativa de estilos de arquitectura

Estilo Equipo mínimo Escalabilidad Latencia Observabilidad Coste a 12-18 meses
Monolito clásico Equipo pequeño Escala como una unidad Baja dentro del proceso Sencilla al principio Bajo al inicio, puede crecer con el acoplamiento
Monolito modular Equipo pequeño o mediano Escala como aplicación, con límites internos Baja dentro del proceso Gestionable y centralizada Generalmente equilibrado
Microservicios Varios equipos con autonomía operativa Escala por servicio Añade variabilidad de red Alta complejidad Mayor coste de plataforma y operación
Event-driven Equipo con experiencia en mensajería Escala consumidores y flujos Variable, depende del procesamiento Exige correlación y trazabilidad Puede crecer por infraestructura y operación
Serverless Equipo con experiencia cloud Muy útil para cargas variables Depende del arranque y del proveedor Requiere herramientas específicas Eficiente en cargas intermitentes, menos predecible en cargas sostenidas
Edge functions Equipo familiarizado con distribución Acerca lógica al usuario Puede reducir distancia al consumidor Distribuida y más difícil de depurar Depende del proveedor y del patrón de uso

El monolito clásico sigue siendo una opción válida cuando el dominio aún cambia rápido y el equipo necesita moverse sin mantener una plataforma compleja. El problema aparece cuando todos los módulos comparten datos, dependencias y ciclos de despliegue sin límites que protejan el cambio.

El monolito modular suele ser mi recomendación por defecto para una scaleup que todavía trabaja con un equipo compacto. Puede tener varias capas o bibliotecas, pero se despliega como una única aplicación o proceso. La definición coincide con la explicación académica de la diferencia entre monolito y microservicios. Bien ejecutado, permite separar bounded contexts, imponer dependencias y preparar futuras extracciones sin pagar desde el primer día el coste de una red distribuida.

Los microservicios tienen sentido cuando la independencia de despliegue resuelve un dolor real y existen dos o más equipos capaces de operar sus servicios. Cada servicio debe poder desplegarse de forma independiente y la separación debe partir del dominio del negocio, no de capas técnicas, como señala la literatura universitaria sobre diseño y despliegue independiente de microservicios.

Event-driven encaja cuando los procesos tienen consumidores independientes, toleran asincronía o necesitan absorber trabajo sin bloquear la petición principal. No elimina la complejidad. La mueve hacia contratos de eventos, idempotencia, reintentos y consistencia.

Serverless brilla con cargas intermitentes y picos impredecibles. Yo no lo elegiría como respuesta automática para procesamiento sostenido, flujos con latencia estricta o equipos sin experiencia en límites del proveedor. Las edge functions pueden acercar lógica al usuario, pero hacen más difícil reproducir y depurar el comportamiento.

En España, la mayoría de scaleups estarán mejor servidas por un monolito modular bien diseñado que por una malla prematura de microservicios. La arquitectura aburrida gana cuando reduce la carga operativa y deja al equipo concentrarse en el producto.

Cómo tomar decisiones de arquitectura sin acumular deuda

Antes de tocar código, escribe qué debe mejorar. “Escalar” no basta. Puede significar aceptar más tráfico, reducir el tiempo de respuesta, aislar despliegues, limitar el coste cloud o evitar que una incidencia bloquee todo el producto.

El flujo que recomiendo

  1. Define el atributo de calidad prioritario. Elige entre rendimiento, disponibilidad, seguridad, mantenibilidad, coste o velocidad de entrega. Puedes tener varios, pero ordénalos.
  2. Expón las restricciones. Registra el tamaño y la experiencia del equipo, el stack heredado, el presupuesto, los requisitos regulatorios y el plazo.
  3. Compara opciones reales. Incluye mantener el diseño actual. Una alternativa que no se considera de forma explícita suele desaparecer por inercia.
  4. Elige tácticas verificables. Límites de módulos, colas, cachés, pruebas de contrato, despliegues progresivos o instrumentación no son adornos. Son mecanismos para proteger atributos concretos.
  5. Registra la decisión en un ADR. Guarda el documento junto al código, revisa sus consecuencias y enlázalo desde la documentación operativa.

Infografía sobre cómo tomar decisiones técnicas para evitar deuda de software mediante cuatro pasos clave

Un ADR útil puede ser breve, pero no debe ser vago:

Contexto: el monolito tiene dominios mezclados y cada cambio requiere coordinar varias zonas del código.
Opciones: mantenerlo sin cambios, extraer microservicios o imponer módulos dentro de la aplicación.
Decisión: adoptar un monolito modular con límites de dominio, interfaces internas y pruebas de contrato entre módulos.
Consecuencias: conservamos un despliegue sencillo, reducimos el acoplamiento y dejamos preparada una extracción futura. Aceptamos que los módulos seguirán compartiendo proceso y parte de la capacidad de escalado.

La decisión solo vale si el equipo la usa. Versiona el ADR, enlázalo con las tareas de implementación y define qué evidencia justificaría revisarlo. Un documento olvidado en una carpeta no guía a nadie.

Este recurso audiovisual puede servir para alinear a producto e ingeniería sobre el proceso:

Evita tres trampas: decidir sin medir el problema, presentar una preferencia personal como requisito técnico y confundir una migración con una mejora automática. Si no puedes defender una decisión con un atributo de calidad, no es arquitectura, es opinión.

Trade-offs que duelen cuando el sistema escala

La distribución no es gratis. Cuando separas componentes, compras independencia potencial y pagas con red, operación, coordinación y más estados intermedios.

Latencia y acoplamiento temporal

En un monolito, una llamada interna evita un salto de red. En microservicios, una petición puede depender de varios servicios síncronos, cada uno con su propia variabilidad. Google Cloud explica que los entornos híbridos y multinube introducen retrasos relacionados con la conectividad y la distancia geográfica entre regiones o centros on-premise, como detalla su guía sobre patrones distribuidos híbridos y multinube.

La pregunta de diagnóstico es concreta: ¿qué interacciones necesitan respuesta inmediata y cuáles pueden procesarse después? Si no tienes esa respuesta, no repartas el dominio todavía. También conviene revisar si una API necesita REST, GraphQL u otra forma de composición, en lugar de multiplicar llamadas desde el cliente. La comparación entre REST y GraphQL ayuda a encuadrar ese contrato, pero no sustituye el análisis de los límites de dominio.

Observabilidad y fallos parciales

Un monolito puede empezar con logs centralizados y una visión relativamente directa del proceso. En microservicios necesitas correlacionar IDs de petición, recopilar logs estructurados, métricas y trazas distribuidas, y distinguir un error de negocio de un timeout entre servicios.

La Junta de Andalucía recomienda recoger trazas, logs y métricas en cada microservicio y centralizarlos en un colector de telemetría para exportarlos a sistemas de observabilidad, según su documentación académica y técnica sobre telemetría en arquitecturas de microservicios. La pregunta es: ¿puede el equipo reconstruir el recorrido de una petición fallida sin acceder manualmente a varias máquinas?

Deuda técnica y límites mal cortados

Un servicio demasiado pequeño puede convertirse en un componente “charlatán”, dependiente de muchas llamadas y con una base de datos difícil de separar. Un bounded context mal definido hace que la migración de datos sea más dolorosa que el problema original.

Antes de dividir, pregunta: ¿qué equipo será dueño del servicio, qué datos controla y qué contrato puede mantener sin coordinar cada cambio con el resto? Si no hay una respuesta clara, empieza por módulos internos y observa el comportamiento real.

Dos arquitecturas reales en startups y scaleups

No puedo presentar como hechos verificables casos concretos con métricas privadas, como una scaleup de Barcelona que supuestamente duplicó su velocidad de entrega o una fintech de Madrid que superó un volumen específico de transacciones. Esas cifras y atribuciones no están documentadas en las fuentes disponibles. Sí puedo convertir ambos patrones en escenarios de decisión útiles para un CTO.

El escenario del monolito modular

Una scaleup B2B con un equipo pequeño mantiene una aplicación Rails en un único despliegue. El equipo separa facturación, usuarios y catálogo en paquetes con dependencias controladas, añade pruebas por módulo y reserva las interfaces públicas para los límites que realmente necesitan estabilidad.

La señal para elegir este camino no es nostalgia tecnológica. Es que la mayoría de cambios siguen atravesando el mismo producto, los equipos aún comparten prioridades y el coste de operar servicios independientes no resolvería un cuello de botella concreto. El equipo debería validar la decisión con tiempo de entrega, frecuencia de rollback, incidencias por despliegue y facilidad para modificar cada módulo.

El error más peligroso sería llamar “modular” a una carpeta que no impone ninguna regla. Sin límites automatizados, el monolito solo acumula nombres nuevos.

El escenario de la fintech distribuida

Una fintech puede decidir extraer pagos cuando necesita aislar requisitos de seguridad, disponibilidad o despliegue. Un enfoque prudente consiste en mover primero ese flujo a un diseño orientado a eventos, usando una plataforma como Kafka si el equipo puede operarla, y mantener el resto del producto en el monolito mientras observa resultados.

Las señales deben ser operativas: fallos concentrados en un dominio, necesidad de desplegarlo con un ciclo diferente, propiedad clara de los datos y capacidad para atender incidencias. El error que casi siempre encarece el trimestre es migrar varios dominios a la vez, antes de demostrar que el primero tiene límites correctos.

La lección común es sencilla. La decisión correcta depende más del tamaño, la experiencia y la forma de colaboración del equipo que de la moda arquitectónica del momento.

Checklist para evaluar perfiles técnicos de arquitectura

Contratar un arquitecto o un tech lead no consiste en validar que el candidato conoce nombres de patrones. Consiste en observar cómo razona cuando faltan datos, el plazo aprieta y el sistema heredado no puede desaparecer.

Un buen perfil empieza por cuestionar el requisito. Pregunta qué significa “escalar”, quién necesita la disponibilidad, qué coste es aceptable y qué parte del flujo puede ser eventual. Después propone opciones y explica qué sacrifica cada una.

Una infografía educativa que detalla un checklist para evaluar perfiles técnicos, incluyendo cuestionar requisitos, cuantificar decisiones y plazos.

Razonamiento de diseño

Entrega al candidato un problema ambiguo y pide que no dibuje nada durante los primeros minutos. Evalúa si separa objetivos, restricciones y supuestos antes de elegir tecnología.

  • Aclara el dominio: identifica actores, invariantes, datos y fronteras.
  • Compara alternativas: incluye la opción más sencilla y explica por qué la descarta.
  • Protege la reversibilidad: distingue decisiones fáciles de cambiar de compromisos difíciles de deshacer.

Pídele que evalúe una arquitectura real de tu empresa, no un ejercicio académico aislado. La conversación revelará si entiende el contexto o si recita soluciones aprendidas.

Criterios operativos

El candidato debe hablar de despliegue, rollback, pruebas, seguridad y observabilidad sin que tengas que recordárselo. En un sistema distribuido, la Junta de Andalucía considera necesarios logs, métricas y trazas por microservicio, una exigencia que puedes convertir en una pregunta de entrevista: “¿qué instrumentarías antes de extraer este componente?”, según sus recomendaciones de observabilidad.

Pide un ADR para un cambio concreto. Debe incluir contexto, opciones, decisión y consecuencias. Después, dale 15 minutos para defenderlo y exige que explique cómo revertiría la decisión si los datos no acompañaran.

Encaje con el equipo

Las señales de alerta son claras:

  • Dogmatismo: afirma que microservicios o serverless son siempre superiores.
  • Vaguedad: habla de escalabilidad sin identificar el cuello de botella.
  • Mala estimación: no descompone el esfuerzo de migración ni los riesgos de datos.
  • Desprecio por la deuda: quiere reemplazar el sistema sin entender por qué se degradó.
  • Ego operativo: compite con los seniors en lugar de elevar su criterio.

Para contrastar responsabilidades del puesto, puedes revisar la guía sobre el rol de arquitecto de software. El perfil vale por las decisiones que evita tanto como por las que firma. Un candidato que recomienda el monolito modular cuando encaja suele demostrar más madurez que quien convierte cada conversación en una propuesta de plataforma.

Tres preguntas para cerrar antes de contratar o migrar

Un CTO debería poder responder estas preguntas por escrito antes de aprobar una migración o abrir una búsqueda de arquitectura. Si no puede hacerlo, ningún estilo resolverá la falta de dirección.

Primera pregunta

¿Qué atributo de calidad es innegociable durante los próximos 12 meses? Puede ser latencia, disponibilidad, velocidad de entrega, mantenibilidad, seguridad o coste por usuario. Sin una prioridad, la discusión se convierte en una preferencia entre tecnologías.

Segunda pregunta

¿Qué coste operativo y de equipo asume cada alternativa? Compara monolito modular, microservicios, event-driven y serverless incluyendo guardias, observabilidad, despliegue, aprendizaje y responsabilidad sobre los datos. La opción aparentemente barata puede exigir capacidades que todavía no existen internamente.

Tercera pregunta

¿Qué decisión pendiente concentra más deuda y todavía es barata de revertir? Esta pregunta obliga a priorizar cambios pequeños, como aislar un módulo o mejorar un contrato, antes de plantear una reescritura completa. Para la parte no técnica de la planificación empresarial, una guía de seguros empresariales puede ayudar a revisar riesgos complementarios mientras el equipo concreta sus responsabilidades operativas.

Infografía mostrando tres preguntas clave sobre calidad, deuda técnica y medición para arquitectos de software.

Usa estas preguntas también en la entrevista. El candidato ideal no solo las responde en abstracto, sino que las aplica a tu producto, tus restricciones y el equipo que va a ejecutar la decisión. Dedica una mañana a documentarlas, preferiblemente en formato ADR, antes de hablar con consultoras o candidatos.


Kulturo ayuda a startups, scaleups y empresas tecnológicas a incorporar perfiles de software, arquitectura, AI/ML, datos, DevOps, cloud y ciberseguridad ajustados a sus retos reales. Si necesitas convertir una decisión arquitectónica en un plan concreto de contratación, visita Kulturo y habla con un equipo especializado en talento técnico en España.

Tenemos el profesional que necesitas

Cuéntanos qué perfil buscas y te enviamos candidatos en menos de una semana.

Empieza a contratar