Heti egymillió rendelés, ötezer autó – és a motor, ami mögötte van
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.]