¿Has ordenado la entrega? Cómo Crossroads entrega 6,000 pedidos por día

La gente ama la entrega. Por una pequeña tarifa, compra la oportunidad de obtener los productos necesarios sin salir de su hogar: comida de su restaurante favorito, muebles de gran tamaño, un libro que quería leer durante mucho tiempo, y de hecho cualquier cosa. Y el aumento en el número de servicios para la entrega rápida de todo en el mundo solo confirma esta tesis. Sí, y para las tiendas es una ventaja: se ha asociado con cualquier entrega de productos a la puerta y ha aumentado su cheque.

Nosotros en "Crossroads" tenemos nuestra propia entrega. Para una persona del exterior, el proceso de entrega de una tienda a una casa se ve así:

  1. Elegí algo en el sitio y lo puse en la cesta.
  2. Ingresé la dirección y pagué el pedido.
  3. La tienda rápidamente le dio la orden al servicio de mensajería.
  4. El mensajero entregó el pedido.

De hecho, todo es un poco más complicado. Mi nombre es Vitaliy, soy el jefe del departamento de desarrollo y hoy les diré cómo funciona todo para nosotros. Y sobre que.



Dos aplicaciones son responsables de la estabilidad del proceso: un escaparate y una aplicación móvil de usuario. Todo es clásico con el escaparate: el comprador visita el sitio, pasa algún tiempo eligiendo productos y llenando la canasta, examinando las tarjetas de productos. El paso final aquí es hacer un pedido. Después de eso, la orden se transfiere para su posterior procesamiento a la oficina administrativa.

En general, un back office para una tienda en línea es un sistema en el que se realizan muchas acciones sobre productos: prescribimos la participación de productos en ciertas promociones, vinculamos pancartas a esto, resaltamos zonas de marca y más. Por supuesto, los pedidos se procesan aquí. Cuando el comprador completa el proceso de pedido y el pedido llega a la oficina administrativa, debe confirmarse. Esto sucede automáticamente si ya conocemos a este comprador, o por el operador en modo manual de acuerdo con el esquema habitual "Hola, ¿ha pedido algo aquí, confirme, los datos son correctos?", Y así sucesivamente. Y aquí la participación del back office en el proceso de formación de la entrega ya está terminando, se confirma el pedido, el estado cambia de "Procesado" a "En marcha". Un pedido en WMS (donde se reserva, recolecta, ordena productos que no están disponibles y que se hacen a pedido del proveedor) y, al mismo tiempo, los logísticos pueden comenzar a enrutarlo. En general, WMS y la logística son sistemas independientes que funcionan con pedidos en paralelo.

Mientras tanto, en stock


El sistema WMS es una combinación de nuestro software, almacenes, empleados de estos almacenes y dispositivos, que simplifica significativamente la vida de estos empleados. Una pequeña terminal, que está montada en la muñeca de un empleado, le permite ensamblar rápidamente una orden en la secuencia deseada.



La consistencia es importante porque entregamos pedidos a nuestros clientes en cajas especiales de Crossroads. Y con una caja, es rectangular. Como la mayoría de las cajas.

Por lo tanto, es necesario observar dos condiciones al mismo tiempo, y llenar la caja lo más posible para que el cliente no reciba dos cajas que estén medio llenas (no es económico, respetuoso con el medio ambiente y, en general, extraño), y llene la caja de acuerdo con el principio "de pesado a ligero" ". El sistema tiene en cuenta el tamaño del producto y su embalaje. Conociendo esto y los parámetros del cuadro, es posible formar pedidos para que el cuadro se llene al máximo. Esto también le permite deshacerse de situaciones en las que el auto del servicio de mensajería parece haberse ido para reemplazar todas las cajas cargadas al 100%, pero medio vacías.

Y el sistema escribe para el trabajador del almacén en qué orden recoger el pedido. Pocas personas quieren obtener una caja en la que un buen empleado del almacén puso tres docenas de huevos en el fondo, colocando cuidadosamente encima de 10 paquetes de leche y un par de kilogramos de verduras, por ejemplo. Con la leche, seguro, todo estará bien, lo que no se puede decir sobre los huevos. Todo tipo de cookies frágiles también están siempre en la parte superior.



Además, debe seguir las reglas del vecindario de bienes. Digamos que será bastante triste para usted si ordenó 2 variedades de manzanas, rollos y pescado, y todo esto apestaba no con pescado, sino con detergente en general, porque todo llegó en una caja. Por lo tanto, los alimentos, por separado, los productos químicos domésticos, por separado. La vecindad de los bienes está determinada por los estándares de SanPiN, por cierto. Y los observamos. Desde el punto de vista humano, este es un modelo lógico y único verdadero. Desde el punto de vista del almacén, estas son variables adicionales al construir la ruta del trabajador del almacén.

El sistema tiene todo en cuenta y crea una ruta, gracias a la cual el empleado recoge el pedido en la secuencia deseada: el terminal lo lleva a la estantería correcta. Si exagera, parece que el trabajo de la parte cliente de la aplicación es así: “Chico, ve a B4, lleva 5 paquetes de harina con ellos, ponlos en el fondo de la caja. Luego, desde A2, toma la leche. No, este no, ahí yace en esa celda.



Una vez que hicieron una solicitud para los chicos del almacén, fue necesario hacer una solicitud para los correos. Ayuda no solo a construir rutas, sino también en el proceso de imprimir rápidamente cheques y observar nuevos estados de pedidos. Bueno, métricas, dónde no hay métricas: vemos dónde se encuentra un servicio de mensajería en particular, normalmente se ajusta al horario o no, imprime un cheque al transferir el pedido al comprador o no, y así sucesivamente.



Por cierto, ¿por qué no imprimimos cheques a la vez? Cuando llevamos nuestras cajas al cliente, él puede rechazar cualquier producto por cualquier motivo. Por ejemplo, logró salir y comprar helado para sí mismo, o de inmediato hirvió dos litros de leche y decidió que el pescado y los pepinos en vinagre para esta noche eran solo una idea. En general, puede haber muchas razones para rechazar cualquier posición, incluido un "cambio de opinión". Por lo tanto, el servicio de mensajería elimina las posiciones que el cliente ha rechazado e imprime el cheque final.

Debajo del capó


Escribimos nuestras aplicaciones en Swift y Kotlin (iOS y Android, respectivamente). En este caso, todo el back-end está girando en PHP, decidimos hacer la base de datos en Postgres, para el corredor tenemos Rabbit mq.

Sí, está claro que en 2019 todo el mundo hace todo basándose en el principio de los dispositivos móviles primero, pero de alguna manera resultó que el sitio está más cerca y es más caro. Él trabaja en Lavarel. En la dirección de los microservicios, también estamos comenzando a movernos, por lo que en este momento, tanto el sitio como la aplicación son un monolito tan fuerte que se asienta y espera a que los microservicios lo retiren.

El mencionado Postgres, por cierto, se muestra como un cuello de botella de vez en cuando, por lo que cambiaremos algo. Utilizamos activamente equilibradores, porque la carga en los sistemas puede tomar valores muy diferentes.

Todo esto está convenientemente ubicado en los servidores de esta forma:
16 servidores de aplicaciones con PHP-FPM y Postgres, Postgres tiene 1 maestro y 4 esclavos. Como puede ver, no hay bicicletas. Todo el back office está completamente integrado con los sistemas internos: WMS, almacén, logística, contabilidad y marketing.

Lanzamos la aplicación móvil y el sitio web en 2017. Hoy, la carga promedio en el sistema es de aproximadamente 6,000 pedidos por día. Por un lado, no es mucho, por otro lado, todavía vale la pena considerar que esto no se distribuye de manera uniforme durante 24 horas, las personas no piden comida durante todo el día, también hay una liga para la actividad estándar durante las horas de trabajo. Las consultas PHP mismas (incluida la API) son aproximadamente 70,000 en 5 minutos.

Ruta de pedido


Tan pronto como el pedido se ensambla con éxito en el almacén y está listo para un viaje, se enruta. Ahora comenzamos a usar Yandex. Enrutamiento para esto: un buen producto que nos permite construir rápidamente la ruta óptima para los conductores, teniendo en cuenta las situaciones de tráfico: embotellamientos, clima, pisos, barreras y otras alegrías. Esto nos ayuda a ahorrar combustible, para que los correos no corten círculos alrededor de la ciudad. El conductor tiene una ruta clara, una lista del pedido en el que se deben transportar los pedidos, los pedidos se colocan en el automóvil de tal manera que se entregan en el mismo pedido.



Creamos la aplicación de mensajería para Android, como ya escribí, en Kotlin. En él se cose la ruta, la capacidad de comunicarse con el cliente (ocultamos el número del cliente, el conductor solo tiene el botón "Llamar"), la capacidad de editar el pedido y eliminar algo, imprimir el cheque y también pagar el pedido.



Por separado, sobre telemetría: la aplicación considera todo: el tiempo de viaje, la hora de llegada al cliente y la hora de salida, esto ayuda enormemente a generar muchos informes analíticos y rastrear la logística. Por ejemplo, el servicio de mensajería no se mueve durante un tiempo, pero en general debería hacerlo: lo contactan y le especifican si todo está bien. La conexión con la logística a este respecto es muy importante, porque hay situaciones en las que el servicio de mensajería, por ejemplo, a las 15.00 debe estar en una dirección, y a las 15.30 - en otra. Pero en la primera dirección hubo un problema debido al control de acceso en el patio, una barrera o puerta, tuve que pasar 10 minutos adicionales para contactar al cliente, para que el cliente se pusiera en contacto con la seguridad y así sucesivamente, ya sabes cómo sucede.



Pero desde el punto de vista del cliente a las 15.30, este nunca es su problema, está esperando el pedido en el momento indicado. Por lo tanto, el conductor se pone en contacto con los especialistas en logística, ellos supervisan de cerca específicamente su telemetría y ellos mismos se comunican con el siguiente cliente, especificando el intervalo de tiempo para la entrega debido a un enganche en la barrera. Por supuesto, en cualquier caso, es triste cuando el servicio de mensajería llega tarde. Pero cuando llega tarde y no lo advierte, es aún peor.

En general, si es básico, así es como trabajamos. Es posible que esté más interesado en aprender sobre el funcionamiento del almacén y WMS, o sobre las aplicaciones para el conductor o los trabajadores del almacén, o sobre el enrutamiento, luego simplemente escriba sobre eso en los comentarios, y haré una publicación por separado.

Gracias por leer

Source: https://habr.com/ru/post/484220/


All Articles