Saltar al contenido principal

Estilos arquitectónicos comunes (Monolítica, SOA, Microservicios)

Arquitectura Monolítica

En este estilo, todo el sistema está contenido en una sola unidad de despliegue. Incluye lógica de negocio, interfaz de usuario y acceso a datos en un solo paquete.

Ventajas:

  • Sencilla de desarrollar y desplegar.
  • Buena opción para MVPs y proyectos pequeños.

Desventajas:

  • Difícil de escalar por partes.
  • Bajo aislamiento de fallos.
  • Cambios pequeños requieren reempaquetar todo.

Arquitectura SOA (Service-Oriented Architecture)

La arquitectura orientada a servicios (SOA) se basa en componentes llamados servicios que interactúan a través de un bus de comunicación común, como SOAP, JMS o incluso REST en implementaciones modernas.

Ventajas:

  • Reutilización de servicios en diferentes contextos.
  • Separación entre servicios de negocio e infraestructura.

Desventajas:

  • Uso de buses de comunicación complejos.
  • Overhead por estandarización y gestión centralizada.

Arquitectura de Microservicios

Divide el sistema en múltiples servicios independientes, cada uno con su propia lógica y base de datos. Se comunican generalmente a través de REST o mensajes asíncronos.

Ventajas:

  • Escalabilidad independiente.
  • Despliegue desacoplado.
  • Facilidad de mantenimiento en equipos grandes.

Desventajas:

  • Complejidad de orquestación y monitoreo.
  • Costos mayores en infraestructura.

Ejemplos técnicos con Angular/NestJS

Monolítica:

Una sola aplicación NestJS que sirve HTML o API, y Angular acoplado directamente.

Sistema de gestión académica
├── NestJS: Controladores, servicios, base de datos
├── Angular: Servido por el mismo servidor

SOA:

Servicios independientes expuestos en un bus (ej. GraphQL Gateway), llamados desde una SPA en Angular.

Servicios independientes:

  • Servicio de usuarios
  • Servicio de materias
  • Servicio de pagos

Angular consume todos los servicios desde un orquestador.

Microservicios:

Cada módulo (usuarios, tareas, pagos) corre como servicio NestJS aislado, con su DB. Angular consume desde un API Gateway o directamente.

Aplicaciones prácticas

EstiloAplicación común
MonolíticaMVPs, apps educativas pequeñas, demostraciones.
SOAEmpresas con múltiples canales y servicios integrados.
MicroserviciosStartups y empresas que necesitan escalar rápidamente.

Diagrama de Cuadrantes

Arquitecturas según Acoplamiento y Escalabilidad:

CuadranteCaracterísticas clave
Flexible y EscalableBajo acoplamiento + alta escalabilidad → Microservicios
Flexible pero CostosoBajo acoplamiento + baja escalabilidad → SOA
Simple pero RígidoAlto acoplamiento + alta escalabilidad → (raro)
Complejo y LimitadoAlto acoplamiento + baja escalabilidad → Monolítica

Referencias