Ideas & Insights

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

Tu compilador verifica la sintaxis. Tus tests deberían verificar la arquitectura.

La mayoría de los equipos documentan las reglas de arquitectura en wikis. Aquí te mostramos cómo escribirlas como tests ejecutables que hacen fallar CI cuando tu grafo de dependencias se desvía.

Tu suite de tests verifica que devuelva 42 cuando recibe el input correcto. No verifica que pueda importar . El compiler acepta ambos. Tus unit tests aceptan…

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,…