Code Monkey home page Code Monkey logo

mycv-nestjs-backend-hexagonal-architecture's Introduction

Hexagonal Architecture

También conocida como Puertos y Adaptadores (Ports and Adapters), se basa en la separación del dominio de negocio de los detalles de implementación. Todas las entradas y salidas de la aplicación se exponen a través de puertos.

Ports

Los puertos son las interfaces que definen la interacción con el exterior y exponen únicamente datos de nuestro dominio, dejando que toda la lógica de transformación esté de puertas afuera y no se contamine el interior.

Adapters

Y los adaptadores son precisamente la forma de conectar el exterior con los puertos, implementando la comunicación y la conversión de datos entre el dominio y lo que se necesite fuera. Los adaptadores no pertenecen al core como tal y podrían implementarse cada uno completamente por separado si quisiésemos mientras dependan del puerto que usan/implementan.

Ventajas

  • Mas fácil de testear
  • Arquitectura más mantenible a largo plazo
  • Flexibilidad en cuanto a tecnologías externas
  • Nos permite retrasar al maximo la eleccion de la tecgnologías

Desventajas

  • Arquitectura muy pesada ya que se agregan muchas clases e interfaces
  • Coste de adaptación por parte de los desarrolladores nuevos que no son tan expertos en la arquitectura lo que impacta en los tiempos de las primeras actividades.
  • Puede ser confuso al aplicar con frameworks muy extrictos ya que se debe considerar al framework como algo externo también.

Cuando usar

  • Proyectos grandes.
  • Proyectos con tiempos de vida muy largos
  • Necesidad de una mayor flexibilidad en cuanto a tegnologias.
  • Equipos relativamente expertos, almenos deberia haber 1 o 2 expertos en la arquitectura.

TypeORM Migration Comands

Si una entidad dao cambia deberiamos generar un cambio en nuestras migracionesy de esta manera va quedando un registro de cambios en la base de datos.

Si algo sale mal podemos ejecutar revert

Si cambia algo en algun dao, se debe generara un nueva migracion y luego esto se correra en el servidor de integracion continua.

1- You can create a new migration using CLI:

typeorm migration:create migrations/migrationName

2- Generate migration from entities:

 npm run typeorm migration:generate -- src/config/db/migrations/NewMigration

3- To execute all pending migrations use following command:

typeorm migration:run -- -d src/config/db/migrations

4- Revertir cambios

typeorm migration:revert -- -d src/config/db/migrations

mycv-nestjs-backend-hexagonal-architecture's People

Contributors

yasniel1408 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.