Y eso es bueno porque nos gusta lo simple. No diría que nosotros, ya sabes, como desarrolladores, somos especialmente perezosos, pero no nos gusta complicar nuestra vida. Y así, construir aplicaciones utilizando servicios de terceros es inteligente y generalmente facilita tu vida.
Pero, ¿dónde está el problema? Bueno, el inconveniente ahora es que hemos creado una aplicación distribuida donde no tenemos ningún control sobre gran parte de la infraestructura en la que nuestro servicio depende. Por ejemplo, los servicios pueden ser realmente lentos. Usar un correo electrónico, incluso en un buen día, puede llevar medio segundo. Así que ahora tenemos un problema. Tenemos un code bloqueante en el camino crítico de la solicitud.
En otras palabras, nuestro usuario está perdiendo tiempo porque estamos haciendo más lenta nuestra API. Pero, bueno, debemos tener en cuenta que la experiencia del usuario no debe verse afectada debido a los requisitos comerciales. ¿Cómo lo estamos haciendo hasta ahora? ¿Es rápido? No. ¿Es confiable? Tampoco.
Así que imagina que estás agregando al usuario a una lista de correo y el servicio se cae. Entonces tenemos que gestionar los reintentos. Uno, dos, tres, cuatro veces. ¿Y si algo falla permanentemente? Ahora tienes que agregar estos errores a un servicio de registro. Y también necesitas idear, ya sabes, un sistema de recuperación. Así que ahora la estimación para construir esta característica tan simple pasa de, ya sabes, días a semanas. Y también tienes que construir y gestionar toda la infraestructura y los procesos.
Además, por cierto, las fallas parciales pueden ser realmente complicadas. Así que has agregado al usuario a la database pero no le has enviado un correo electrónico. Así que ahora tenemos tres opciones. Primero, podemos ignorar el error, lo que significa, ya sabes, que el usuario no estará en la lista de correo. Segundo, bueno, podemos mostrarle el error al usuario, lo que probablemente resultará en la pérdida de un cliente. O tercero, lo peor de todo, ya sabes, el usuario intentará registrarse nuevamente, tonto. Así que veamos eso. Así que supongamos que, ya sabes, el usuario recibe el error e intenta registrarse nuevamente. Pero ahora, usuario, quiero decir, db.user.create dará error porque hay un duplicado. Buena suerte recuperándote de eso. Así que este es el lío en el que estamos metidos.
Comments