Codigo limpio y refactorización
Onion Architecture
Similar a Clean Architecture, pero enfatiza la idea de capas concéntricas alrededor del dominio, con dependencias hacia el núcleo.
Estructura típica
src/
│
├── domain/ # Entidades y lógica de negocio
├── application/ # Casos de uso
├── interfaces/ # APIs, UI, etc.
└── infrastructure/
Monorepos
Un monorepo organiza múltiples servicios o aplicaciones dentro de un único repositorio, ideal para proyectos grandes con múltiples equipos.
Estructura típica
monorepo/
├── apps/ # Aplicaciones principales
│ ├── web/
│ ├── mobile/
│ └── backend/
│
├── libs/ # Librerías compartidas
│ ├── ui-components/
│ ├── utilities/
│ └── api-clients/
│
├── tools/ # Herramientas de configuración
│ ├── eslint/
│ └── prettier/
│
├── package.json
└── README.md
Ventajas de Monorepos
- Consistencia:
- Compartir configuraciones, dependencias y librerías es sencillo.
- Coordinación:
- Cambios en múltiples servicios o aplicaciones se manejan desde un solo repositorio.
- Eficiencia:
- Reduce duplicaciones y promueve la reutilización.
Arquitectura Hexagonal
En la La Hexagonal Architecture (Ports and Adapters), la aplicación se divide en un núcleo independiente que interactúa con el exterior a través de puertos y adaptadores.
Estructura típica
src/
│
├── core/ # Núcleo de la lógica
│ ├── domain/
│ └── services/
├── ports/ # Interfaces para adaptadores
├── adapters/ # Implementaciones de los puertos
│ ├── database/
│ ├── http/
│ └── messaging/
└── config/
Modular Architecture
Divide el código en módulos independientes que pueden evolucionar y ser desplegados por separado.
Estructura típica
src/
│
├── module1/
│ ├── controller.js
│ ├── service.js
│ ├── model.js
│ └── routes.js
├── module2/
└── shared/
Arquitectura Orientada a Eventos
La comunicación entre componentes se realiza a través de eventos.
Estructura típica
src/
│
├── producers/
├── consumers/
├── events/
└── handlers/
Arquitectura Basada en Componentes
Divide el sistema en componentes reutilizables e independientes.
Estructura típica
src/
│
├── components/
│ ├── Header/
│ ├── Footer/
│ └── Sidebar/
└── services/
Arquitectura Orientada a Servicios (SOA)
El sistema está compuesto por servicios independientes que interactúan a través de APIs.
Estructura típica
src/
│
├── services/
│ ├── auth/
│ ├── payments/
│ └── notifications/
├── gateways/
└── shared/