Skip to content

Architecture

Este microservicio está implementado siguiendo los principios de la arquitectura hexagonal (también conocida como arquitectura de puertos y adaptadores). Esta arquitectura permite una clara separación de responsabilidades y facilita la prueba y mantenimiento del código.

La capa de dominio contiene la lógica de negocio central del microservicio, independiente de cualquier infraestructura o tecnología específica.

Definir las entidades, reglas de negocio y lógica central del conteo de inventario.

  • Entidades:
    • InventoryCounting: Representa un conteo de inventario con sus propiedades y comportamientos.
  • Value Objects:
    • Objetos inmutables que representan conceptos del dominio como identificadores, nombres, cantidades, etc.
  • Interfaces de Repositorio:
    • Definen cómo se debe acceder y persistir las entidades del dominio.
  • Interfaces de Servicios:
    • Definen los servicios externos necesarios para el dominio.
  • Patrón Observer:
    • Interfaces Observer y Subject para implementar el patrón de diseño Observer.
  • Errores del Dominio:
    • Definiciones de errores específicos del dominio.

La capa de aplicación orquesta el flujo de datos entre el exterior y el dominio, implementando los casos de uso de la aplicación.

Coordinar la ejecución de casos de uso específicos utilizando las entidades y servicios del dominio.

  • Casos de Uso:
    • Counting/Create: Crea un nuevo conteo de inventario.
    • Calendar: Gestiona operaciones relacionadas con fechas y tiempos.
    • Notification: Maneja el envío de notificaciones.
    • Verification: Realiza verificaciones sobre los conteos.
    • HandleError: Gestiona errores de manera centralizada.
  • Observadores:
    • Implementaciones concretas del patrón Observer para reaccionar a eventos del dominio.
  • Sujetos:
    • Implementaciones concretas del patrón Subject para notificar a los observadores.

La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en el dominio y la aplicación.

Proporcionar implementaciones técnicas específicas para las interfaces definidas en las capas internas.

  • Controladores HTTP:
    • Manejan las solicitudes HTTP y las convierten en llamadas a casos de uso.
  • Repositorios:
    • Implementaciones concretas para acceder a la base de datos MongoDB.
  • Servicios Externos:
    • Implementaciones para interactuar con servicios externos como usuario, producto, ubicación, etc.
  • Eventos:
    • Implementaciones para publicar eventos a través de AWS SNS.
  • Validadores:
    • Implementaciones para validar datos de entrada utilizando Zod.
  • Proveedores:
    • Configuración y provisión de dependencias.
  • Contexto:
    • Gestión del contexto de la aplicación.
  • Métricas y Logging:
    • Implementaciones para recopilar métricas y registrar logs.