Zahtjevi klijenta
Pregled klijenta
Klijent je vodeći cross-channel trgovac u "zelenoj industriji", s više od 130 fizičkih trgovina i snažnom online prisutnošću.
Spryker Cloud Commerce OS odabran je kao e-commerce platforma za podršku online poslovanju koje trenutno vodi četiri online trgovine s približno 45.000 šifri artikala (SKU) po trgovini.
S obzirom na opseg klijentovog poslovanja i ambicije za daljnji rast, trebali smo razviti rješenje koje odgovara na njihove specifične integracijske zahtjeve, osiguravajući neometanu skalabilnost i neprekinuto poslovanje.
Izazovi u obradi podataka
Učinkovita obrada podataka ključna je za održavanje integriteta i performansi e-commerce platforme. Ovaj odjeljak opisuje značajne izazove s kojima smo se susreli prilikom obrade velikih skupova podataka unutar Spryker Cloud Commerce OS-a.
Pad performansi Spryker Cloud Commerce OS-a
Obrada velikih skupova podataka (50k+ zapisa) korištenjem Spryker Standard Implementacije dovodi do znatnog pada performansi. Ovaj problem posebno je uočen tijekom projekta kada smo prvi put pokrenuli testove performansi integracije koristeći Spryker Standard Implementaciju.
Ključni izazovi i zapažanja:
- Produljeno vrijeme uvoza: Vrijeme uvoza znatno raste s porastom broja zapisa, prvenstveno zbog obrade red po red
- Usko grlo u obradi: Velika količina eventova generiranih vezano uz uvoz, ponekad duplicirana, djeluje kao usko grlo koje usporava cijeli sustav. Ovaj problem ne utječe samo na procese uvoza, već i onemogućuje pravovremenu obradu drugih eventova
- Stabilnost Rabbit MQ-a i Jenkinsa: Operacije koje intenzivno troše resurse povremeno su dovodile do rušenja Rabbit MQ-a i Jenkinsa.
- Kašnjenja u objavi: Dolazi do kašnjenja u ažuriranju cijena proizvoda i dostupnosti zaliha na web trgovini, što rezultira nepodudarnostima gdje kupci mogu vidjeti zastarjele informacije.
Utjecaj na poslovanje
Posljedice uočenih izazova i neučinkovite obrade podataka ne odnose se samo na tehničke performanse i rasipanje resursa, već utječu i na poslovne operacije i zadovoljstvo kupaca te imaju sljedeći utjecaj:
Pregled poboljšanog mehanizma
Razvili smo robustan mehanizam koji znatno poboljšava performanse i skalabilnost. Ovaj odjeljak opisuje detalje našeg poboljšanog uvoza i obrade
Poboljšani mehanizam
Kako bismo odgovorili na klijentove integracijske zahtjeve i prevladali ograničenja Spryker Standard implementacije, odlučili smo pokriti cjelokupni proces koristeći dvije ključne komponente: Data Importer i Data Publisher. Ove komponente sastoje se od manjih koraka radi boljeg rukovanja greškama i veće učinkovitosti obrade.
Ovakav pristup omogućuje nam da unaprjeđujemo performanse i istovremeno učinkovito implementiramo prilagodbe specifične za projekt u budućnosti, čime ne koristimo samo ovom konkretnom klijentu, već i svakom kupcu sa sličnim zahtjevima.
Data Importer: Pregled cijena i zaliha
Primanje podataka iz SAP-a putem Glue API-ja: podaci se primaju i upisuju u uvoznu tablicu
Parametar veličine grupe (batch size): parametar za definiranje veličine bloka podataka (chunk), u našem slučaju veličina bloka definirana je na 50k zapisa
Izvršavanje Jenkins Joba: Jenkins job izvršava naredbu koja pokreće proces. Svi sljedeći koraci izvršavaju se u petlji sve dok se ne obrade svi zapisi u uvoznoj tablici. U slučaju greške, petlja se prekida, a poruka o grešci prikazuje se u Jenkins output konzoli.
Označavanje zapisa za obradu: Dodjeljivanje UUID-ova zapisima u uvoznoj tablici, prema veličini bloka. Svi sljedeći koraci i logika primjenjuju se samo na taj specifični skup zapisa, odnosno blok.
Izvršavanje kalkulacija: Ovaj korak priprema podatke i ažurira uvoznu tablicu informacijama poput dostupnosti, referenci ponuda, stranih ključeva itd. To nam omogućuje da u sljedećim koracima koristimo samo uvoznu tablicu, čime se smanjuje vjerojatnost database deadlockova na Spryker tablicama.
Uvoz podataka u Spryker tablice: Obogaćeni podaci uvoze se u Spryker tablice. Svi potrebni podaci preuzimaju se iz uvozne tablice, čime se osigurava da tijekom ovog koraka nisu potrebne dodatne kalkulacije.
Usporedna analiza
Naša inovativna implementacija pokazala je znatno poboljšanje u vremenu obrade. Ovo ubrzanje nije važno samo za održavanje pravovremenih ažuriranja proizvoda, već osigurava i ujednačenost na web trgovini.
Usporedna analiza
U testnom slučaju procijenili smo performanse sustava na velikom skupu podataka od 758k zapisa. Rezultati su bili impresivni.
Ako ekstrapoliramo iz našeg testnog slučaja, za postizanje klijentovog cilja uvoza 6 milijuna zapisa uz korištenje Spryker Standard Implementacije, bilo bi potrebno otprilike cijeli dan (24 sata). Međutim, uz našu poboljšanu implementaciju, isti zadatak mogao bi se obaviti u svega 80 minuta.
Ova razlika naglašava učinkovitost i djelotvornost naše poboljšane implementacije, čineći je moćnim alatom za obradu podataka velikih razmjera. Također, nastavljamo raditi na optimizaciji cjelokupnog procesa, čime bismo ukupno vrijeme mogli dodatno skratiti.