Wednesday, December 17, 2025

Los atributos de calidad de una arquitectura de software

 El DDD, introducido por Eric Evans en 2003, es un enfoque de desarrollo de software para sistemas complejos donde el diseño se centra en el dominio del problema. En lugar de diseñar basándonos en la base de datos o en la tecnología (Data-Driven), diseñamos basándonos en las reglas de negocio y procesos reales.

Visión Geométrica y Espacial: El Mapa de Contextos

Imagina un mapa geopolítico. Un sistema grande no es un solo país homogéneo; es un continente dividido en naciones (Bounded Contexts).

  • Cada nación tiene su propio idioma (Ubiquitous Language).

  • Una palabra como "Cliente" puede significar algo distinto en la "Nación de Ventas" (alguien que compra) que en la "Nación de Soporte" (alguien con un ticket abierto).

  • El Sharding (que vimos antes) es una partición de datos física; el DDD es una partición lógica y conceptual que permite que cada "nación" escale de forma independiente.

Friday, August 8, 2025

WebFlux CORS error

 Hi:

I tried to use Spring Web Gateway Configuration and the follow problem occur using Spring Webflux:

-----------------------

"from origin 'null' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed", spring cloud gateway

----------------------

The solution was to use predicates of Spring Webflux instead:

-------------------

server:

  port: 7002

eureka:

  instance:

   hostname: localhost

  client:

    register-with-eureka: true

    fetch-registry: true

    service-url:

      defaultZone: http://localhost:8761/eureka/

spring:

  application:

    name: server-gateway

  cloud: 

    gateway:

      server:

        webflux:

          routes:

          - id : service-envio

            uri: lb://abc

            predicates:

            - Path=/senvios/**

            filters:

            - RewritePath=/senvios/*, /

          default-filters:

          - DedupeResponseHeader=Access-Control-Allow-Origin Access-Control-Allow-Credentials, RETAIN_UNIQUE

          globalcors:

            cors-configurations:

              '[/**]':

                allowedorigins: "*"

                allowedmethods: "*"

                allowedheaders: "*"

                allowed-credentials: true 

-------------------


Best Regards,