Lecciones aprendidas al solucionar un problema con el carrito de compras

Rate this content
Bookmark

Los errores de producción pueden ser complicados, especialmente cuando no se pueden reproducir fácilmente o no ocurren con frecuencia. En esta charla, repasaremos un caso de estudio de un problema de coincidencia de cantidad en el carrito de compras y los pasos de solución de problemas que tomamos para resolverlo. Luego, basándonos en ese problema, aprenderemos algunas lecciones que todos podemos aplicar como desarrolladores frontend.

FAQ

Hussein es un desarrollador de personal en Shopify con 10 años de experiencia en desarrollo completo y siete años trabajando específicamente con React.

El problema era que los clientes reportaban recibir una cantidad diferente de productos a los que realmente habían pedido en la aplicación de mercado de restaurantes, construida en React y Redux.

Inicialmente, revisaron el pedido en el backend, los registros del servidor y los correos electrónicos enviados al proveedor para asegurarse de que los números fueran correctos, concluyendo que los datos estaban correctos y que el error era del cliente.

Utilizaron Fullstory, una herramienta de análisis que permite grabar las sesiones de usuario, donde pudieron ver el error ocurriendo en producción, observando discrepancias en las cantidades de los productos en el carrito de compras.

La solución fue utilizar lo que el cliente ve al momento de pagar o en el carrito de compras como la fuente de verdad, ignorando los datos del servidor si había discrepancias, asegurando así que la versión que ve el cliente es lo que realmente obtienen.

Las principales lecciones fueron que la fuente de verdad no siempre es el servidor, es importante asumir que el error podría ser propio, y que las grabaciones de pantalla son útiles para identificar problemas en aplicaciones de frontend.

Hussein aplica las lecciones aprendidas para evitar repetir errores similares en Shopify, donde la escala y las consecuencias financieras serían mucho mayores, y comparte estos conocimientos con otros desarrolladores.

Hussien Khayoon
Hussien Khayoon
9 min
02 Dec, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla discute las lecciones aprendidas al solucionar un problema con el carrito de compras en una aplicación de mercado de restaurantes. El error era difícil de reproducir pero ocurrió con más frecuencia a medida que la aplicación crecía. La investigación involucró verificar los registros del frontend y utilizar herramientas como Sentry y Fullstory. La solución consistió en utilizar la vista del cliente al finalizar la compra como fuente de verdad y enfatizar la importancia de las pruebas y la responsabilidad financiera.

1. Lecciones aprendidas de solucionar un problema con el carrito de compras

Short description:

Voy a hablar sobre las lecciones aprendidas de solucionar un problema con el carrito de compras. Hoy hablaremos sobre React y trabajar con un ecosistema. Compartiré un error que encontré en una aplicación de mercado de restaurantes. Tenía un flujo de comercio electrónico estándar, pero ocurrió un problema extraño.

Voy a hablar hoy sobre las lecciones aprendidas de solucionar un problema con el carrito de compras. Así que, la mayoría de nosotros hemos utilizado carritos de compras. Mi nombre es Hussein. Soy un desarrollador de personal en Shopify y he estado trabajando en el desarrollo completo durante unos 10 años ahora. React durante siete. He cometido todos los errores posibles con React. Ahí está mi Twitter, si quieres seguirme. Fanático del Chelsea, desafortunadamente.

¿Por qué esta charla? Así que, hoy estamos hablando mucho sobre React. Muchos de nosotros usamos React. Codificamos en React. Pero la realidad es que siempre trabajas con un ecosistema. Siempre. Entonces, ya sea el navegador en el que estás usando React, las API web, como viste muchas de las escuchas de eventos. Tratas con clientes, si das un paso atrás. Todos tratamos con clientes en nuestro código. Y siempre tenemos un dominio comercial. Específicamente yo, ahora estoy en comercio electrónico. Entonces, todos tratamos con eso. Entonces, trabajas en un ecosistema, lo que agrega complejidad a tu aplicación, lo que a su vez agrega errores a tu aplicación. Y hoy estoy hablando de uno de esos errores que tuve. Así que, solo un breve contexto sobre este error. No fue en Shopify, fue en una startup en la que trabajé antes en 2019. Era una aplicación de mercado de restaurantes, construida en React y Redux, cientos de usuarios, millones en GMV, no tan grande, en comparación con Shopify, por supuesto. Teníamos alrededor de 50 empleados, alrededor de 10 a 15 eran desarrolladores de tecnología. Entonces, hay un camino feliz en la aplicación, que es bastante estándar en el comercio electrónico. Inicias sesión, agregas artículos a tu carrito, proporcionas información de envío, pagas, recibes ese dinero y luego recibes tus artículos. Bastante estándar, ¿verdad? Como esto es lo que hacen la mayoría de los sitios de comercio electrónico. Eso es lo que teníamos. Pero luego tuvimos un problema muy extraño aquí.

2. Solución de problemas del error del carrito de compras

Short description:

Una vez al mes o menos, un cliente informaba un error en el que recibían menos artículos de los que habían pedido. Verificamos el pedido en el backend, los registros del servidor y los correos electrónicos al proveedor. Nuestros datos en la base de datos coincidían con todo, por lo que el cliente cometió un error. Es importante tener en cuenta las suposiciones al solucionar errores.

Una vez al mes o menos, como una vez al mes o menos, un cliente informaba un error específico, y decían que recibieron menos artículos de los que realmente habían pedido. ¿Qué significa eso? Entonces, la aplicación es un poco diferente ahora. Así que tuve que hacer un poco de trabajo de captura de pantalla. Aquí puedes ver, por ejemplo, cinco cajas de piña, es lo que pidieron. Entonces, un cliente, por ejemplo, diría que en realidad recibieron seis o siete cajas, no cinco. Muy extraño, muy malo. ¿Qué hacemos entonces? En la vida de una startup, hicimos lo mismo que cualquier desarrollador haría. Verificar el pedido en el backend. Asegurarnos de que los números fueran correctos. Revisamos los registros del servidor, para ver si había errores y si los números coincidían. Verificamos los correos electrónicos que enviamos al proveedor, ¿eran el número correcto? Y lo que vimos es que resulta que nuestros números en la database coinciden con todo. Así que le dijimos al cliente, estás equivocado. Nuestros data son correctos, qué lástima. ¿Entiendes a lo que me refiero? Entonces cometiste un error, básicamente. Y por eso es importante hablar sobre nuestras suposiciones cuando tenemos errores. Esto te da un poco de contexto sobre lo que estábamos pensando en ese momento.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Remix Flat Routes – Una Evolución en el Enrutamiento
Remix Conf Europe 2022Remix Conf Europe 2022
16 min
Remix Flat Routes – Una Evolución en el Enrutamiento
Top Content
Esta charla presenta la nueva convención Flat Routes que probablemente será la predeterminada en una futura versión de Remix. Simplifica la convención existente y también te brinda nuevas capacidades.
Cómo hacer un juego web tú solo
JS GameDev Summit 2023JS GameDev Summit 2023
27 min
Cómo hacer un juego web tú solo
Nunca ha sido tan fácil hacer tu propio juego web, pero sigue siendo extremadamente difícil. ¿Qué juego deberías hacer? ¿Qué motor deberías elegir? Vamos a discutir cómo responder a estos problemas y formas de aprovechar la plataforma única que es la web.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
Desplegar una aplicación no es un proceso fácil. Te encontrarás con muchos problemas y puntos de dolor que resolver para que funcione correctamente. Lo peor es: ahora que puedes desplegar tu aplicación en producción, ¿cómo no vas a poder desplegar también todas las ramas del proyecto para tener acceso a vistas previas en vivo? ¿Y poder hacer un revert rápido a pedido?Afortunadamente, el clásico conjunto de herramientas de DevOps tiene todo lo que necesitas para lograrlo sin comprometer tu salud mental. Al mezclar expertamente Git, herramientas de Unix y llamadas a API, y orquestar todo ello con JavaScript, dominarás el secreto de los despliegues atómicos seguros.No necesitarás depender de servicios comerciales: ¡conviértete en el maestro perfecto de las herramientas y netlifica tu aplicación desde casa!
Tu Ritmo con GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Tu Ritmo con GraphQL
Construir con GraphQL por primera vez puede ser desde desafiante hasta pan comido. Comprender qué características buscar en tus herramientas de cliente y servidor y adoptar los hábitos correctos (y deshacerte de los viejos hábitos) es la clave para tener éxito con un equipo de cualquier tamaño en GraphQL.

Esta charla ofrece una visión general de los desafíos comunes que he visto en numerosos equipos al construir con GraphQL, cómo superaron las fuentes comunes de frustración y la mentalidad que finalmente adoptaron, y las lecciones aprendidas, para que puedas adoptar y seguir confiando en GraphQL con confianza.
Aplicaciones React (+Native) full-stack y seguras con tRPC.io
React Advanced Conference 2021React Advanced Conference 2021
6 min
Aplicaciones React (+Native) full-stack y seguras con tRPC.io
Top Content
¿Por qué estamos los desarrolladores tan obsesionados con desacoplar cosas que son de naturaleza acoplada? tRPC es una biblioteca que reemplaza la necesidad de GraphQL o REST para APIs internas. Al usarla, simplemente escribes funciones de backend cuyas formas de entrada y salida se infieren instantáneamente en tu frontend sin ninguna generación de código; haciendo que la escritura de esquemas de API sea cosa del pasado. Es ligera, no está vinculada a React, se puede almacenar en caché HTTP y se puede adoptar de forma incremental. En esta charla, daré un vistazo a la DX que puedes obtener de tRPC y cómo (y por qué) empezar.
Uso de UDP en el navegador para conexiones más rápidas entre cliente/servidor
JS GameDev Summit 2023JS GameDev Summit 2023
21 min
Uso de UDP en el navegador para conexiones más rápidas entre cliente/servidor
Top Content

Workshops on related topic

Cómo crear experiencias de edición que tu equipo amará
React Advanced Conference 2021React Advanced Conference 2021
168 min
Cómo crear experiencias de edición que tu equipo amará
Workshop
Lauren Etheridge
Knut Melvær
2 authors
El contenido es una parte crucial de lo que construyes en la web. Las tecnologías web modernas aportan mucho a la experiencia del desarrollador en términos de construir sitios impulsados por contenido, pero ¿cómo podemos mejorar las cosas para los editores y creadores de contenido? En este masterclass aprenderás cómo usar Sanity.io para abordar la modelización de contenido estructurado, y cómo construir, iterar y configurar tu propio CMS para unificar los modelos de datos con experiencias de edición eficientes y agradables. Está dirigido a desarrolladores web que desean ofrecer mejores experiencias de contenido para sus equipos de contenido y clientes.