Las mejores prácticas para entornos multiusuario pueden resultar contraproducentes.

  • por Derek Comartin
  • Publicado en Derek Comartin (CodeOpinion)
  • Seleccionado el
  • Architecture
Las mejores prácticas para entornos multiusuario pueden resultar contraproducentes. - Derek Comartin (CodeOpinion)
Imagen: Derek Comartin (CodeOpinion)

Tienes un sistema multiusuario, pero descubres un error bastante grave. ¿Cómo es posible? ¡Si seguiste todas las buenas prácticas!

Tu API HTTP coloca un mensaje en una cola para generar una factura. Un proceso en segundo plano recoge ese mensaje y lo ejecuta. Aparentemente, todo funcionó correctamente. No hubo excepciones, ni llamadas a la base de datos fallidas, ni errores en los registros.

Sin embargo, algo salió terriblemente mal.

Se suponía que la solicitud se ejecutaría para el inquilino A, pero lo que realmente sucedió es que se ejecutó para el inquilino B. El inquilino equivocado.

YouTube

Visita mi canal de YouTube , donde publico todo tipo de contenido sobre arquitectura y diseño de software, incluyendo este vídeo que muestra todo lo que aparece en esta publicación.

Probablemente intentaste evitar que esto sucediera desde el principio. Tal vez tomaste la decisión de diseño de que no querías que el ID del inquilino estuviera presente en todas partes y se transmitiera desde tu API HTTP a los mensajes, a las tareas en segundo plano y a tu base de datos…