Prompteo

Unidad 5 · 2 min

Patrones de arquitectura en el código

Puertos y adaptadores, repositorio, unit of work, capa de servicio, eventos de dominio y CQRS, con el código de esta misma app como ejemplo.

Patrones de arquitectura en el código

Architecture Patterns with Python, de Harry Percival y Bob Gregory, reúne los patrones que hacen que la arquitectura se note en el código y no solo en un diagrama.

Puertos y adaptadores

Alistair Cockburn formuló la arquitectura hexagonal con un objetivo explícito: que una aplicación pueda ser manejada por usuarios, programas, tests o scripts por igual, y que se pueda desarrollar y probar aislada de sus dispositivos y bases de datos definitivos.

Prompteo, esta misma app, está construida así:

  • src/core/domain/ — dominio puro, sin imports de framework.
  • src/core/ports/ — interfaces salientes; ahí vive ContentRepository.
  • src/core/application/ — casos de uso que orquestan el dominio por los puertos.
  • src/adapters/ — implementaciones: content/static-content.ts implementa ContentRepository leyendo los course.json.
  • src/app/ y src/components/ — el adaptador que maneja la app, que depende hacia adentro y nunca al revés.

Los patrones del libro

  • Repositorio: abstracción sobre el almacenamiento persistente que finge que todo está en memoria; sus métodos centrales son add() y get(). El ORM depende del dominio, no al revés.
  • Capa de servicio: capa de orquestación. Evita duplicar la coreografía entre entrypoints y evita la pirámide de tests invertida.
  • Unit of work: arregla una capa de servicio acoplada a la sesión; junta los eventos de dominio y se los pasa al message bus después del commit.
  • CQS y CQRS: Meyer separó comandos de consultas en Eiffel; Fowler atribuye CQRS a Greg Young.