Seis trampas, completas
Estas seis están enteras acá abajo, sin dejar el mail. La guía completa suma doce: por email van las otras seis, con S3, ECS, IP y el resto.
Transacciones y niveles de aislamiento
Confundir Repeatable Read con Serializable. En Postgres, Repeatable Read es snapshot isolation y NO previene write skew: dos transacciones que leen el mismo estado y escriben en filas distintas pueden violar una invariante global. Solo Serializable lo evita (a costa de reintentos).
REST y diseño de APIs
Las dos trampas clásicas: (1) creer que "POST crea y PUT actualiza" por regla — lo que importa es la idempotencia: PUT reemplaza y es idempotente, POST no. Un PUT también puede crear (upsert en una URI conocida por el cliente). (2) Devolver 200 con un cuerpo tipo {"error": "..."}: rompe caché, monitoreo y clientes que miran el status. Si el cliente mandó mal los datos es 400/422; si no autenticó 401; si no tiene permiso 403; si hay conflicto de estado 409.
Docker
Dos trampas: (1) meter estado dentro del contenedor (escribir uploads, DB o logs en su capa escribible): al recrearlo —un deploy, un crash, un reschedule— ese estado se pierde. El estado va en volúmenes o servicios externos. (2) Confundir imagen con contenedor: "buildeo un contenedor" o "corro una imagen" delata el error. Se buildea una imagen (molde inmutable) y se corre un contenedor (instancia). Bonus: creer que un contenedor es una VM liviana; no trae su propio kernel, comparte el del host.
Autenticación (OAuth/JWT)
Dos trampas: (1) "guardo la sesión en un JWT y hago logout borrándolo del cliente" — un JWT válido sigue siendo válido hasta que expira aunque lo borres del browser; no hay invalidación server-side gratis. Para "cerrar sesión ya" necesitás vida corta + una denylist/rotación de refresh tokens, o directamente sesiones con estado. (2) Mezclar autenticación con autorización: validar que el JWT tenga firma OK (autenticación) no dice nada de si ese usuario puede tocar ESE recurso (autorización); los scopes/roles y el chequeo de ownership son un paso aparte.
DNS
Dos trampas: (1) decir "el DNS está propagando" cuando cambiás un registro y no se ve el cambio. No hay una propagación global: el authoritative ya tiene el valor nuevo al instante; lo que ves viejo es una caché (resolver/SO/browser) que respeta el TTL previo. Bajar el TTL ANTES de la migración es la jugada. (2) Intentar poner un CNAME en el apex del dominio: no está permitido porque el apex ya tiene SOA/NS y CNAME no coexiste; se resuelve con A/AAAA o ALIAS/ANAME.
Consistencia y escala
La trampa clásica es recitar "CAP = elegí 2 de 3" como si pudieras renunciar a P. No podés: la partición te la impone la red, no la elegís. El trade-off real es C vs A cuando la partición ocurre. La segunda trampa es creer que consistencia eventual = "datos incorrectos" o "datos corruptos": es convergencia diferida, no incorrectitud. Si en la entrevista decís "elijo CP y AP según el caso" sin mencionar que P es obligatorio, ya perdiste.