E-trgovina
Marketplace za e-trgovinu
Marketplace izgrađen od početka do kraja, gde su pretraga, katalog i logistika isporuke morali da deluju kao jedan proizvod, a ne kao tri integracije.
Pregled
Marketplace živi ili umire na tome da li kupci mogu da pronađu stvari i da veruju da će stići. To je značilo da tri sposobnosti koje se često grade kao odvojeni sistemi — pretraga, katalog i logistika isporuke — moraju da se ponašaju kao jedan, koherentan proizvod. Arhitektirao sam ga i izgradio od početka do kraja.
Problem
Zamka sa marketplace-om je tretirati ga kao CRUD aplikaciju sa prikačenim poljem za pretragu. U stvarnosti, pretraga jeste proizvod: ako je relevantnost loša, katalog je isto kao da je prazan. A ni logistika nije naknadna misao — gde kupci imaju konkretna očekivanja u vezi s isporukom, „kada i kako ovo stiže” je deo odluke o kupovini, a ne detalj nakon naplate. Sve troje je moralo da se dizajnira zajedno.
Rešenje
Marketplace od početka do kraja sa katalogom, pretragom i isporukom integrisanim kao jedan tok. Pretraga radi na Elasticsearchu tako da su relevantnost i brzina prvorazredne, a ne slučajne; katalog i logika marketplace-a opslužuje aplikacioni backend; a integracije sa servisima za dostavu čine ispunjenje porudžbina delom površine proizvoda. Pokrenut je i radi u produkciji.
Arhitektura
Ovo je bio poliglotski sistem i po okolnostima i po izboru — Ruby on Rails i Laravel na backendu, TypeScript/Vue.js frontend, Elasticsearch za pretragu, sve kontejnerizovano Dockerom. Umesto da se pretvara da je marketplace jedna uniformna stvar, dizajn se oslonio na jasne granice servisa: podsistem pretrage, jezgro kataloga/marketplace-a, i integracije logistike svaki su imali svoje odgovornosti i ugovore.
Elasticsearch stoji uz primarno skladište podataka kao namenski model za čitanje pri otkrivanju. Držati ga sinhronizovanim — pravovremeno indeksirati promene kataloga tako da pretraga nikada ne pokaže zastareo inventar — jeste onaj detalj koji je nevidljiv kad radi, a bode oči kad ne radi.
Tehnički izazovi
Relevantnost pretrage je pomerajuća meta: „ispravno” rangiranje zavisi od kataloga, upita i onoga na šta kupci zapravo kliknu, i traži podešavanje, a ne jednokratno postavljanje. Izgradnja pipeline-a za indeksiranje tako da prikaz pretrage ostane konzistentan sa katalogom pod stalnom promenom bila je posao koji se stalno vraćao.
Integracija sa spoljnim servisima za dostavu donela je uobičajenu stvarnost sistema trećih strana — različiti modeli podataka, dostupnost koju ne kontrolišeš, načini otkazivanja oko kojih moraš da dizajniraš tako da pad kurirske službe nikada ne postane pad naplate.
Naučene lekcije
Odluči šta je središnja petlja tvog proizvoda i sagradi sve ostalo u njenoj službi. Ovde je petlja bila pronađi → veruj → kupi → primi, i svaki arhitektonski izbor — namenski indeks pretrage, prvorazredna integracija logistike — bio je opravdan time da li tu petlju čini tešnjom. Marketplace koji je tek katalog sa pretragom jeste katalog; vrednost je u tome da se cela petlja oseća kao jedna stvar.