Prácticas recomendadas de datos de API de terceros de comercio electrónico

StackOverflow https://stackoverflow.com/questions/1425629

  •  07-07-2019
  •  | 
  •  

Pregunta

¿Cuál sería la mejor práctica para la siguiente situación? Tengo una tienda de comercio electrónico que reduce los niveles de inventario de un distribuidor. ¿Debería el sitio, por cada vez que un usuario carga una página de detalles del producto, utilizar la API de terceros para obtener los datos más actualizados? O, ¿debería el sitio usar API de terceros y luego almacenar esos datos durante un cierto tiempo en su propio sistema y actualizarlos periódicamente?

Para mí parece obvio que debe actualizarse cada vez que se carga la página de detalles del producto, pero ¿qué pasa con las tiendas de comercio electrónico de alto tráfico? ¿Se utilizan soluciones completamente diferentes para ese caso?

¿Fue útil?

Solución

En este caso, definitivamente almacenaría en caché los resultados del sitio del distribuidor durante un período de tiempo, en lugar de presionarlos cada vez que reciba una solicitud. Sin embargo, no usaría simplemente un tiempo de espera de 5 minutos o 30 minutos para todas las entradas de caché. En cambio, usaría algunas heurísticas. Si es posible, por ejemplo, si su aplicación está escrita en un lenguaje como Python, puede adjuntar un script simple a cada producto que implemente el tiempo de espera.

De esta manera, si se trata de un artículo que se solicita con poca frecuencia o que tiene una gran cantidad en stock, puede almacenarlo en caché durante más tiempo.

if product.popularityrating > 8 or product.lastqtyinstock < 20:
   cache.expire(productnum)
distributor.checkstock(productnum)

Esto le brinda flexibilidad a la que puede recurrir si lo necesita. Inicialmente, puede establecer todas las reglas en algo como:

 cache.expireover("3m",productnum)
 distributor.checkstock(productnum)

De hecho, el script probablemente no incluiría la llamada a la función CheckStock porque eso estaría en la aplicación principal, pero se incluye aquí por contexto. Si Python parece demasiado pesado para incluir solo esta pequeña cantidad de flexibilidad, eche un vistazo a TCL, que fue diseñado específicamente para este tipo de trabajo. Ambos pueden integrarse fácilmente en aplicaciones C, C ++, C # y Java.

Otros consejos

En realidad, hay otra solución. Su distribuidor mantiene el catálogo de productos en sus servidores y le da acceso a él a través de Open Catalog Interface . Cuando un usuario desea hacer un pedido, se lo redirige al catálogo del distribuidor, elige los artículos y luego transfiere la selección a su tienda.

Es ampliamente utilizado en la rama SRM (Gestión de relaciones con proveedores).

Depende de muchos factores: el tráfico a su sitio, la frecuencia con la que cambian los niveles de inventario, el impacto comercial de la visualización de datos obsoletos, con qué frecuencia los proveedores le permiten llamar a su API, su SLA de API en términos de disponibilidad y rendimiento , y así.

Una vez que tenga estas respuestas, por supuesto, hay muchas posibilidades aquí. Por ejemplo, para un sitio de poco tráfico donde es importante obtener el inventario correcto, puede llamar a la API de terceros en cada llamada, pero volver a un comportamiento alternativo (como el uso de datos en caché) si la API no responde dentro de un cierto tiempo de espera.

A veces, las API bien diseñadas incluirán sugerencias sobre el período de validez de los datos. Por ejemplo, algunas API REST-over-HTTP admiten varios encabezados de control de caché HTTP que se pueden usar para especificar un período de validez o para recuperar datos solo si ha cambiado desde la última solicitud.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top