Heti egymillió rendelés, ötezer autó – és a motor, ami mögötte van (x)

Címkék

Az elmúlt évben elképesztően megszaporodott online bevásárlások kiszolgálása a Tesco Technology szakértőinek komoly megmérettetés jelentett, a budapesti Transport and Fulfillment fejlesztőcsapatnak hála azonban sikerült venni a kanyart – méghozzá időben, és optimális fogyasztás mellett.

A mögöttünk álló több mint másfél évet globálisan meghatározó koronavírus-járvány és az azzal járó szociális távolságtartás rengeteg szokásunkat átírta, ami alól a bevásárlás sem kivétel. A világszerte bevezetett kijárási korlátozások hatalmas lökést adtak az online kereskedelemnek, minden korábbit meghaladó tömegek kezdték heti bevásárlásaikat is online felületeken, házhozszállítással intézni. Az online bevásárlásokra ugrásszerűen megnövekedett igények kiszolgálása sok áruházláncnak jelentett nagy kihívást - nem volt ezzel máshogy a Tesco sem, amelynek a Tesco Technology budapesti fejlesztőcsapata segített megoldást találni a rendelt árucikkek lehető leghatékonyabb célba juttatására.

Míg a pandémiát megelőzően az Egyesült Királyságban heti szinten nagyjából 500 ezer rendelés futott be az áruházhoz, a járvány kitörésével ez az érték mintegy 1,2 millióra ugrott. A Budapesten dolgozó Transport and Fulfillment csapatnak hála azonban az áruházlánc nem csak tartani tudta a lépést a "rendelésrobbanással", de még gyorsítani is tudott a tempón. A cég Angliában terjeszkedni tudott Whoosh névre hallgató szolgáltatásával: az egy órán belüli házhozszállítást biztosító megoldás idén nyáron már nem csak egy, hanem összesen 19 áruházból érhető el a régióban – 2022 első negyedében pedig 150 boltra terjed majd ki a szolgáltatás.

FOLYAMATOSAN A RENDELÉSEK NYOMÁBAN

A rövid kiszállítási idő tartásához persze rengeteg futárra van szükség, ehhez a Tesco külső erőforrásokat is igénybe vesz, egyelőre egyetlen külső partnertől, a DPDgroup szárnyai alatt működő Stuart futárszolgálattól - ugyanakkor már több más hasonló szolgáltatóval is folytat egyeztetéseket a vállalat.

A rendelésekkel kapcsolatos információk, és persze maguk az árucikkek kiosztása sem triviális feladat a partnerek futárjai felé. Az összehangolt működéshez a budapesti fejlesztőcsapat integrálta a Tesco saját rendszereit, a Stuart API-jával. A Tesco oldalán ehhez a Transport and Fulfillment Team egy négy, a Spring Boot keretrendszerre támaszkodó, Java nyelven íródott microservice-ből álló architektúrát épített fel, amelyek Rest API-n, illetve az Apache nevével fémjelzett Kafka frameworkön keresztül kommunikálnak, utóbbinak hála minimalizálva a késleltetést. Mindez Azure felhőben hostolt Kubernetes klaszteren kap helyet, Couchbase adatbázissal megtámogatva.

Partnerétől a Tesco a futárok rendelkezésre állásáról, illetve a kiszállítás alatt lévő rendelések állapotáról webhookokon keresztül kap folyamatosan információkat. A fejlesztőcsapat ugyanakkor a legrosszabbra is felkészült: ha a webhookok valamiét nem lennének elérhetők, az API direkt pollozására is kiépítettek egy Azure Function alapú tartalékmechanizmust.
Az Azure nyújtotta lehetőségeket a csapat igyekszik maximálisan kihasználni, az említett pollozási megoldáson túl a CI-hoz alkalmazott Jenkins pipeline-okat is elkezdte Azure DevOpsba migrálni. Ez utóbbi komoly előnye, hogy nem kell külön, dedikált infrastruktúrát felhúzni a CI számára - a tapasztalatok szerint az Azure egy jól átlátható, deklaratív megoldást kínál, amellyel minimális erőfeszítéssel felhúzható a felhős CI pipeline, így egy sor operatív üzemeltetési feladat levehető a fejlesztők és devopsos kollégák válláról.

NAVIGÁCIÓ, NAGYBAN

A kiszállítások, illetve az üzletek és raktárak közötti áruszállítás állapotának követése azonban szinte "gyerekjáték" a lehető leghatékonyabb útvonalak megtervezéséhez képest. A heti több mint egymillió rendelést az Egyesült Királyságban ugyanis a vállalatnak 5-6 ezer autóval kell kiviteleznie, így az optimális útvonalak kijelölésének fontosságát nem lehet eléggé hangsúlyozni. A fejlesztők lényegében a híres utazó ügynök problémával kerülnek szembe: a futároknak adott kiszállítási címeket kell érinteniük, majd a kiindulási pontra (de legalábbis egy Tesco áruházba) visszatérniük, az aktuális forgalmi viszonyokat is figyelembe véve a lehető leggyorsabban és legkisebb üzemanyag-fogyasztás mellett – a minimalizált környezetterhelés érdekében is.

Ehhez a vállalat egy gráfmotort, illetve routing engine-t, azaz útvonaltervező motort fejlesztett. Ezek érdekessége, hogy az az egyik Tesco Technology kolléga doktori munkájából nőtték ki magukat a cég kiszállítási hálójának gerincévé.

A motor a HERE Maps térképei alapján dolgozik, amelyen valós időben követhető a forgalmi helyzet az egyes városok útjain, beleértve a torlódásokat vagy épp útlezárásokat is. A térkép alapján az algoritmus először egy gráfot hoz létre, ezen fut az említett routing engine. Utóbbi meghatározza, hogy a nap közben három hullámban, reggel, kora délután és este útnak induló autók milyen sorrendben gördüljenek az utakra, milyen címeket érintsenek és milyen útvonalakon haladjanak, hogy a rendelt termékek a lehető leggyorsabban eljussanak a vásárlókhoz, fölösleges üzemanyag-égetés nélkül.

A Tesco már mind a gráfmotort, mind a routing engine-t élesben használja - előbbi hátránya azonban, hogy eredetileg (még a doktori munka részeként) Pythonban íródott, így nem éppen erőforrásbarát. Egy-egy munkamenet így jelenleg akár másfél órát is kitehet, illetve a motor alá pakolt Azure vas költségei sem elhanyagolhatók, a Tesco ugyanis 64 processzormaggal operáló VM-ekkel igyekszik felpörgetni a Python komótos tempóját. Persze már gőzerővel folyik a motor Java verziójának fejlesztése, amely már a tesztelési fázisnál jár és egy sor optimalizációval kiegészül. A másfél órás útvonalszámítás így percekre lesz csökkenthető, a budapesti fejlesztőcsapatnak köszönhetően.

A Tesco Technology budapesti csapata folyamatosan bővül, a fentiekhez hasonló kihívást jelentő projektekhez a vállalat főként "V-shaped" fejlesztőket keres: például egy Java fejlesztő esetében a "V" hegye jelöli a mély Java tudást, míg a kiterjedő szárak a különböző, horizontális kompetenciákat tartalmazzák. Ilyen lehet a DevOps vagy épp a prezentációs és üzleti kapcsolattartási képességek, amelyekkel hatékonyan be tudnak kapcsolódni Tesco Technology Magyarországon zajló, globálisan alkalmazott fejlesztéseibe – akár távmunkán keresztül, amit a vállalat maximálisan támogat.

[A Tesco Technology megbízásából készített, fizetett anyag.]

Hozzászólások

Azt nem tudom, hogy itthon használják-e a gráfos kiszállítást, de a teszkó hozta el nyugat-európát a kistérségünkbe.

Bármit kiszállít, ami van az áruházban, zöldséget, darab almát, fagyasztott halat, (szinte) bármit! Ha megrendeled egyik nap este 8-ig, akkor másnap reggel 8-10 közé kérheted a kiszállítást. Előre szól, hogy mit nem tud hozni és mit hoz helyette, bármire mondhatod azt, hogy jaa az mégse kell! Mindezt teljes országos lefedettséggel, kiviszik a tisza-partra is ha oda rendeled, ez ezresért.

Bónusz, hogy mindig tiszta autóval hozza egy mindig rendesen öltözött nem dohánybűzös ember, aki akár az ajtóig segít behordani a pakkot. 

Köszönöm teszkó! 

[nem, életemben nem dolgoztam egy percet sem náluk, semmilyen összefüggésben nincsen pénzügyi érdekeltségem]

Mondjuk azon mosolyogtam egy percet és nem is teljesen értem, hogy a python kódot gyorsítják java-ra migrálással. Majd egy szaki elmagyarázza, ez hogy lehetséges :)

Mi azért váltottunk róluk, a vége felé már konkrétan a rendelés fele nem érkezett meg (összeg- és mennyiségszerűen sem). Ha megrendelek valamit, az érkezzen is meg, ha nincs készleten a rendeléskor, ne legyen aktív (rendelhető). Ja, ehhez valósidejű készlet kéne, ami ebben a szegmensben alapvető elvárás lenne.

Máshol ezt meg tudták oldani, a Tesco-val borzasztóan elégedetlenek voltunk.

mondjuk ezt nehez lenne ugy tartani, hogy 2 hetre elore foglalhatsz idopontot, es kozbe is random modositgathatod a rendelest.

a kifli-nel pontos raktar kezeles van, ott amit rendelsz az jon is, cserebe max 2-3 napra tudsz folgalni es nem lehet torolni se a rendelesbol. ja es mar eleve a termekek 2/3-a nincs raktaron, tehat ugy kell vadasnzi mikor erkezik be pl. banan hogy hozzaadd a rendeleshez mielott elkapkodjak.

es miert adnanak prioritast a besataloval szemben? mikor utobbi biztos megveszi es ki is fizeti a termeket, mig az online rendelo meg a kiszallitasig meggondolhatja, meg utana se biztos, hogy atveszi...

Engem csak az érdekelne, hogy miért látok több Tescoban olyat, hogy a fél áruház teljesen üres (= polcok sincsenek), a másik felében pedig minden második-harmadik polc le van zárva. Az a stratégia, hogy így mennek neki a Lidlnek?

Igen, ezt én is hallottam, de akkor valaki mondja el, hogy a bevásárlóasszisztensek mit gyűjtögetnek kosarakba az áruházakban... (nem mindig, de néha-néha látni őket az áruház ügyfélterében) -- megjegyzem ez nem probléma, csak nem tudom miért tagadják... (mert ez csak átmeneti készlethiány/üzemzavar esetén történik?)

Megjegyzem a zöldségen pl látszik, hogy nem az ügyfélteri készletből hozzák ki, mert nagyságrendbeli minőségi különbség van közöttük tapasztalataim szerint. (a kiszállított nagyon jó minőség)

Amúgy itt az álláshirdetésÖsszegyűjtöd a vásárló által megrendelt termékeket az eladótérből, ellenőrződ a minőségét és frissességét, hogy a vásárló csak a legjobbat kapja. Természetesen, ha egy vásárló segítséget kér a polcok mellett, mosolyogva állsz rendelkezésére.

Szóval a bevásárlótérben miközben az épp személyesen bevásárlók kérdéseire mosolyogva válaszol készíti össze precízen az online rendelést... persze lehet vannak olyan Tesco áruházak ahol ez elkülönítetten megy, itt nálunk nem...

Egyébként ami UX szempontból még kérdés, hogy ha ez tényleg így van, az jó stratégia-e? 

Én rendszeresen rendeltem egy étteremből, ahol csak konyha és kiszállítás van. Egyszer arra mentem hazafelé, és úgy adtam le a rendelést, hogy beugrom érte. Kiderült, hogy kb. mindenki bunkó fasz, aki ott dolgozik, a konyha meg retkes. Többet nem rendeltem onnan.

Szerintem ha egy bolt házhozszállításra rendewzkedik be, akkor sem lehet ennyire elhanyagolt az ügyféltér.

Szerintem ha egy bolt házhozszállításra rendewzkedik be, akkor sem lehet ennyire elhanyagolt az ügyféltér.

 

Az elhanyagolt (rohad és koszos) meg a megritkított polcrendszer nem ugyanaz. Meg gondolom próbáltak helyet csinálni, hogy a vásárlók tudjanak távolságot tartani. Én egyébként mindig úgy tekintettem ezekre az áruházakra, hogy kicsit felpimpelt raktárak.

nemreg olvastam vhol hogy a tesco eladja az ingatlanjait, majd egy reszuket visszaberli. gondolom elkezdtek lecsokkenteni a szukseges teruletet... arrol is evek ota szo van, hogy a tesco mar nem fog pl. muszaki cikkeket arulni, hanem a teruletet odaadjak valamelyik muszaki lancnak.

Igen, ismerek ilyen áruházakat(pl. Veszprémben Mediamarkt), de például a híres/hírhedt Fogarasi útiban konkrétan lezárt polcsorok vannak az élelmiszer részleg közepén a műszaki részlegen felül. Nem zavarna a dolog, a napi bevásárlás megoldható. Ami bosszantó a rendszeres áruhiány.