Ideas & Insights

Explorando desarrollo AI-first, guardrails de código y la arquitectura de la descartabilidad.

Tu capa de dominio importa Postgres. A tu CI le da igual.

Los diagramas de arquitectura limpia se ven genial en una pizarra. Así es como hacer que tu pipeline de build imponga la dirección de las dependencias para que el código de dominio no pueda alcanzar la infraestructura.

Alguien en tu equipo acaba de importar en . El PR compila. Los tests pasan. La revisión de código tiene trescientas líneas y nadie se da cuenta. Tres meses…

Tu bucle de reintentos asume que la primera petición falló. Probablemente no lo hizo.

Un timeout o un crash no significan que tu petición a la API se haya perdido. Aquí te explicamos cómo las idempotency keys hacen seguros los reintentos, y el patrón de almacenamiento que realmente previene duplicados.

Tu servicio se cae a mitad de una petición . El cliente ve un timeout y reintenta. Ahora tienes dos cargos. El cliente está enfadado. La base de datos es…

Un circuit breaker sin goroutines, sin timers y sin overhead en segundo plano

La mayoría de las bibliotecas de circuit breaker lanzan hilos en segundo plano para sondear la recuperación. No los necesitas. Aquí tienes un diseño dirigido por requests que elimina todo el overhead en segundo plano sin sacrificar la corrección.

Cada circuit breaker de producción que he revisado eventualmente lanza un hilo en segundo plano. Puede ser una goroutine de Go, un de Java, o una tarea tokio…

Tu Servicio Web Tiene una Ruta de Graceful Shutdown. Ese es el Bug.

El software crash-only trata cada fallo como un crash y cada inicio como una recuperación. Para los servicios web, esto significa eliminar tu lógica de shutdown y diseñar un estado que sobreviva a un kill -9.

Tu servicio web tiene un shutdown handler. Hace flush de los buffers, cierra conexiones, escribe checkpoints. Lo probaste una vez, tal vez. En producción,…

Tus pruebas pasan. Tu mutation score es del 40%. Esto es lo que los surviving mutants te están diciendo.

La code coverage dice que estás a salvo. El mutation testing dice que tus pruebas son, en su mayoría, decoración. Así es como los surviving mutants exponen la brecha, y cómo cerrarla.

Tus pruebas pasan. Tu reporte de coverage dice 87%. Pero tu mutation score es del 40%, y la mitad de tus mutants siguen vivos. Ese 40% no significa que tu…

El mutation testing en Rust funciona, pero tus tiempos de compilación te lo harán pagar

cargo-mutants encuentra los tests que solo pretenden verificar tu código. Aquí te explicamos cómo funciona el mutation testing en Rust, qué detecta y si el coste en tiempo de compilación merece la pena.

Tienes un 100 % de cobertura de líneas. Cada branch se ejecuta. Cada función se llama. Entonces alguien cambia un por un en tu lógica de precios, ejecuta los…