Sklep sprzedawał szybciej, niż magazyn nadążał dzielić paczki
System obsługi zamówień dla producenta nawozów – pobiera je z Shopify, dzieli na przesyłki według wagi i reguł wysyłki, i prowadzi przez cały proces realizacji.
Sklep na gotowej platformie uruchamia się w tydzień i przez pierwsze miesiące wszystko działa. Problem pojawia się wtedy, gdy zamówień jest dużo, a produkt jest ciężki, płynny albo objęty przepisami o przewozie chemii. Wtedy „zamówienie” przestaje równać się „paczce”.
Co się działo wcześniej
Scotts Miracle-Gro sprzedaje nawozy i środki do pielęgnacji trawników. Sklep stoi na Shopify, który świetnie przyjmuje zamówienia i nie ma zdania na temat tego, jak podzielić dwadzieścia kilogramów produktu między przesyłki, których waga jest ograniczona, albo co zrobić, gdy jedna pozycja jedzie z innego magazynu niż reszta.
Przy każdym większym zamówieniu decydował o tym człowiek na magazynie. Do pewnej skali to działa, a potem zaczyna kosztować. Błędy w podziale, powtórne pakowanie, przesyłki droższe, niż musiały być, i klient, który dostaje trzy paczki w trzech różnych dniach, bez słowa wyjaśnienia.
Co zbudowaliśmy
Aplikację, która siedzi między sklepem a realizacją i przejmuje całą logikę obsługi zamówienia.
Pobieranie zamówień ze sklepu. Integracja z Shopify, która zdejmuje zamówienie i pilnuje, żeby żadne nie zniknęło po drodze ani nie zostało przetworzone dwa razy.
Dzielenie na przesyłki. Reguły wagowe, magazynowe i produktowe decydują, z ilu paczek składa się zamówienie i co trafia do której. To samo zamówienie w różnych konfiguracjach rozpada się inaczej i robi to system, a nie człowiek z kalkulatorem.
Prowadzenie przez proces. Zamówienie przechodzi kolejne stany aż do wysyłki, a każdy krok zostaje zapisany. Gdy coś się zatnie, widać w którym miejscu.
Dane do planowania. Informacje o zamówieniach wracają w postaci, z której da się korzystać przy planowaniu, zamiast siedzieć wyłącznie w panelu sklepu.
Jak to zmienia pracę
Najwięcej zmienia to, że o podziale przesyłki nie decyduje już pracownik magazynu. Reguła działa za każdym razem tak samo, więc koszt wysyłki da się przewidzieć, a pytanie „dlaczego dostałem to w trzech paczkach” przestaje zależeć od czyjegoś nastroju tamtego dnia.
Druga zmiana dotyczy odporności. Integracja ze sklepem bez zabezpieczeń gubi zamówienia przy każdej dłuższej awarii – i dowiadujesz się o tym od klienta. Tutaj przetwarzanie jest kolejkowane i powtarzalne, więc chwilowa niedostępność jednej strony nie kosztuje utraconego zamówienia.
Dlaczego zrobiliśmy to w ten sposób
Gotowa platforma sklepowa jest dobrym miejscem na sprzedaż i złym miejscem na reguły operacyjne firmy. Logika podziału przesyłek siedzi więc poza sklepem, w osobnej aplikacji. Dzięki temu zmiana reguł wysyłki nie wymaga grzebania w sklepie, a zmiana platformy sprzedażowej w przyszłości nie oznacza odbudowywania całej obsługi zamówień od nowa.
Pokaż stos technologiczny
- NestJS
- TypeORM
- TypeScript
- RxJS
- Swagger
- Jest
- CQRS
- DDD
- Google Cloud Tasks
- Google Cloud Logging
- Winston