Fiabilidad en las llamadas a servicios externos
Cuatro mecanismos
Tiempo límite. En cada llamada, siempre. Una llamada sin límite de tiempo retiene un recurso hasta que el sistema se asfixia.
Reintento con retardo creciente. Solo para acciones seguras de repetir, y solo para errores transitorios. Reintentar un error de validación es un desperdicio.
Cortacircuitos. Tras una serie de fallos, se deja de intentar durante un tiempo. Eso te protege a ti y al servicio que ya sufre.
Modo degradado. Qué muestra el sistema cuando el servicio no está disponible: datos en caché, funcionalidad parcial o un mensaje claro.
El problema de la duplicación
Cuando una llamada falla por tiempo límite, se desconoce si la acción se ejecutó. En cada acción con impacto —un cargo, un envío, una creación— envía una clave única que permita al otro lado detectar una repetición. Sin ella, un reintento podría cobrar dos veces.
Qué monitorizar
Tasa de error y tiempo de respuesta por servicio externo por separado, y el estado del cortacircuitos. Una caída del proveedor que aparece en tu lado como 'el sistema va lento' desperdicia horas de investigación innecesaria.
En profundidad
Separa una dependencia crítica de una secundaria, y asegúrate de que una secundaria no pueda tumbar una ruta principal. Un servicio de analítica o enriquecimiento en la ruta síncrona es un punto de fallo sin ninguna justificación de negocio.