Blog

Notas sobre ingeniería backend, arquitectura e IA.

Un ejemplo sencillo de Spring Integration

18 sept. 2026

Un ejemplo sencillo de Spring Integration 1. Introducción Spring Integration es un framework que ayuda a conectar sistemas dentro de una aplicación Spring. Usa las mismas ideas que los Enterprise Integration Patterns: mensajes, canales y endpoints. Si ya conoces Spring Boot, resulta familiar después de unos minutos. En este artículo mostraré un ejemplo mínimo de «hello world». Enviaremos un nombre a través de un gateway, lo pasaremos por un canal y obtendremos un saludo.

Leer más →

Construir una API Java fluent con Consumer y BiConsumer

17 sept. 2026

Construir una API Java fluent con Consumer y BiConsumer 1. Introducción Cuando construyo librerías internas pequeñas, intento que la API pública sea fácil de leer. Últimamente uso Consumer y BiConsumer a menudo para que los callers puedan configurar objetos sin escribir clases anónimas largas. El resultado se parece a un builder, pero cada paso es solo un lambda que prepara algo. En este artículo mostraré un ejemplo inventado: un MenuBuilder pequeño que permite añadir elementos a un menú.

Leer más →

Observabilidad para virtual threads: trazas de una petición Spring Boot 3 con Micrometer y OpenTelemetry

24 ago. 2026

Observabilidad para virtual threads: trazas de una petición Spring Boot 3 con Micrometer y OpenTelemetry 1. Introducción Una propiedad pasa un servicio Spring Boot a virtual threads: spring.threads.virtual.enabled=true Después de este cambio, el throughput puede mejorar. También se puede perder información de observabilidad. Las trazas pueden perder spans hijos, los logs pueden perder sus trace ids y las métricas de los thread pools ya no muestran el límite real. En este artículo mostraré cómo resolver estos tres problemas.

Leer más →

Structured concurrency y scoped values en Java 25: sustituir ThreadLocal en pipelines de peticiones

22 ago. 2026

Structured concurrency y scoped values en Java 25: sustituir ThreadLocal en pipelines de peticiones 1. Introducción Los virtual threads hacen barato ejecutar muchos tasks. Dos patrones antiguos todavía causan problemas en pipelines de peticiones: iniciar tasks de fan-out sin un scope compartido y guardar el contexto de la petición en ThreadLocal. En este artículo mostraré cómo StructuredTaskScope y ScopedValue resuelven estos problemas en Java 25. También mostraré cómo pasar de la API preview de Java 21 y qué problemas siguen necesitando atención.

Leer más →

Virtual threads en Java 21: guía práctica para plataformas backend

24 jul. 2026

Virtual threads en Java 21: guía práctica para plataformas backend 1. Introducción Las aplicaciones backend suelen usar thread pools limitados. Una petición que espera a una base de datos o a otro servicio HTTP mantiene ocupado un platform thread. Cuando el pool se llena, la latencia crece. En este artículo mostraré cómo funcionan los virtual threads, cómo activarlos, cómo comprobarlos y qué problemas evitar. Java 21 los convierte en una funcionalidad estable, pero no son un interruptor general de rendimiento.

Leer más →

ADR-01: generador de sitios estáticos para mi portfolio de ingeniería

21 jul. 2026

ADR-01: generador de sitios estáticos para mi portfolio de ingeniería 1. Introducción Necesitaba un sitio personal que pudiera mantener mientras crece mi carrera. Tenía que ser fácil de actualizar, estar guardado en Git, cargar rápido y ser sencillo de desplegar en GitHub Pages. En este artículo mostraré las opciones que consideré y por qué elegí Hugo para este sitio. 2. Contexto El sitio necesita páginas de portfolio y artículos. Quiero mantener separado el contenido del código del sitio para poder cambiar el diseño sin reescribir cada página.

Leer más →

De «Hello world» a un portfolio de ingeniería

21 jul. 2026

De «Hello world» a un portfolio de ingeniería 1. Introducción He reconstruido giro-dev.github.io desde una página provisional hasta un portfolio de ingeniería. El objetivo era que mi trabajo y mi experiencia fueran fáciles de encontrar. En este artículo mostraré qué ha cambiado y por qué he hecho estos cambios. 2. Objetivo Quería pasar de una página provisional a un perfil online para presentarme a puestos de Staff Engineer, Principal Engineer y Software Architect en empresas orientadas al producto.

Leer más →

Matriarch: generación de datos de prueba para Java

21 jul. 2026

Matriarch: generación de datos de prueba para Java 1. Introducción Los tests de Java suelen necesitar muchos objetos antes de poder probar el comportamiento real. Crear esos objetos a mano lleva tiempo y hace que los tests sean más difíciles de leer. En este artículo mostraré la idea de Matriarch, una librería Java pequeña que crea datos de prueba con el patrón Object Mother. 2. Problema Escribir fixtures de prueba para POJOs y Records de Java es repetitivo y puede introducir errores.

Leer más →