Hlavní navigace

Lukáš Putna (Heureka): Mnohonásobně rozšíříme produktovou nabídku ve všech zemích

Jan Sedlák

Heureka Group rozjela převod devíti zemí na jednu technologickou platformu. Projekt serveru zabere několik let.

Doba čtení: 12 minut

Sdílet

Český internetový srovnávač cen Heureka rozjel v rámci skupiny Heureka Group rozsáhlý projekt, v rámci kterého chce všech devět zemí sjednotit na jedné technologické platformě. To má mimo jiné vytvořit silnější základy v rámci regionu a možnost čelit Googlu a spol. Zároveň tato změna umožní přidávat produktové novinky a lépe řešit vývoj, popisuje v rozhovoru pro Lupa.cz technologický ředitel (CTO) Heureky Lukáš Putna.

V Heurece jste začali sjednocovat vše na jednu platformu. O co přesně se snažíte?

Chceme sjednotit produkty, které spadají pod skupinu Heureka Group. To by jak nám, tak uživatelům mělo přinést nové příležitosti. Do toho spadá spojování technologické, produktové i byznysové. Je to jeden obrovský projekt, který chceme v následujících letech realizovat.

Důvodů pro spojování je poměrně hodně. Z technologického pohledu jde třeba o to, že nyní třikrát vyvíjíme ty samé věci. Jsme v devíti zemích a reálně máme tři platformy, tři různé kódy. A zároveň všechny tyto tři aplikace dělají v podstatě to samé. Sjednocení nám pomůže v tom, že budeme moci ve stejném počtu lidí dělat jednu věc více do hloubky.

Co třeba děláte třikrát?

Je toho hodně, ale typicky je to třeba proces párování. Vytváříme katalog produktů, které získáváme z e-shopů. Jde o poměrně sofistikovaný proces s algoritmy, strojovým učením a rozpoznáváním obrázků. Každý e-shop si ten samý produkt pojmenovává jinak, má tam jiné popisky, údaje, obrázky. V Česku a Slovensku máme nyní zapojených 48 tisíc e-shopů, což znamená 48 tisíc různých feedů, ze kterých musíme vytvořit katalog. To je jedna z věcí, kterou děláme několikrát – v podstatě devětkrát, tedy pro každou zemi, ve které působíme.

Jak takovéto technologické „špagety“ vzniknou? Historickými nánosy, spojováním a podobně?

Osobně si myslím, že je to stářím kódu. Ten je potřeba jednou za čas refaktorovat, ale ideální je to dělat průběžně. A v týmech je třeba naučit se žít v neustálé změně. My jsme si z tohoto důvodu nově zvolili architekturu microservices, ve které Heureku píšeme. Celý systém tak bude poskládaný z „kostiček“, které půjde relativně jednoduše měnit.

Ony špagety vznikají vedle zastarávání také tím, že na kódu dělá hodně lidí, kdy každý má jiné styly a jiné návyky. To se v případě dvanácti let fungování Heureky nanese na sebe. Technologie jdou rychle dopředu, objevují se nově frameworky a další mizí. Ale obecně se dá říci, že u nás kód nebyl dlouho refaktorovaný. Kdyby byl, technický dluh by byl mnohem nižší.

Jak tedy k těmto změnám přistupujete? Píšete něco nového na zelené louce s tím, že vedle toho udržujete současnou podobu, a poté dojde k přepnutí? Nebo postupně odsekáváte do microservices různé části?

Nechceme dělat jednorázovou velkou akci, kdy bychom to celé přepnuli. Tohle většinou nefunguje. Je to složité, končí to v problémech a ještě rok po spuštění se vše opravuje. Věci měníme průběžně po malých částech. Stejně přistupujeme k přechodu na novou jednotnou platformu. Není to jeden projekt, ale řada malých částí, které nakonec k oné platformě vedou. Částečně tedy něco přepisujeme a něco píšeme na zelené louce a postupně to do sebe zapojujeme.

Nyní například máme Heureka Košík. My bychom chtěli, aby tento košík fungoval pro všechny země. Než bude existovat jedna platforma jako taková, bude muset být košík zapojen do všech samostatných platforem. Vytvoříme košík, který bude fungovat mezinárodně, a zapojíme ho do současných platforem. Mezitím jiný tým udělá další funkci, která bude tvořit jednu platformu, a tímto způsobem postavíme nové „krabičky“, které za několik let budeme moci označit za jednu platformu.

Lukáš Putna, Heureka
Autor: Heureka

Lukáš Putna, Heureka

Takže napíšete nový košík, který už bude fungovat v rámci microservices, a v první fázi jej přes konektory a API napojíte na různé země?

Přesně tak. Tato část sjednocení platforem bude náročná na promyšlení a bude vyžadovat mezikroky, jako jsou konektory a specializovaná API. Česká Heureka a slovinské Ceneje.si z velké části už fungují na microservices, takže jsou už připravené a API tvoří „most mezi krabičkami“. Už s tímto konceptem tedy pracovat umíme, takže jsme na front-end schopní napojovat řadu věcí. Maďarské Árukereső.hu není napsané v microservices a bude třeba napsat konektor, aby zvládl API zpracovat.

U front-endu máme takový systém se šablonami, což lze označit za koncept mikrofront-endu. To znamená, že stránka je složená z různých front-endových služeb, které do webu „sypou“ data. Hlavička Heureky je jiná služba, kterou dělá jiný tým než levé menu, a tak dále. Přesně v tomto duchu chceme sjednotit platformy.

Kdybyste tento velký projekt sjednocení do jedné platformy nerozjeli, přestali byste v budoucnosti být schopní držet krok s dalším vývojem na trhu?

Obecná odpověď je, že ano, přestali. Zároveň nám to ale umožní nabídnout nové a lepší služby. Bude například možné sdílet v rámci zemí recenze, z Maďarska jednoduše nakupovat v Česku a tak dále. Druhou věcí je to, že pokud tyto věci dělat nebudeme, tak je dost možné, že se objeví nějaký globální hráč, který tyto funkce bude mít. Typicky to může být Amazon, ale i takový Google, který se o byznys, kde působí Heureka, poměrně dost zajímá. Díky sjednocení budeme moci mít v našem regionu mnohem silnější pozici.

Z technického pohledu bychom pak museli mnohem více investovat do přepisu a nemohli bychom se věnovat samotným produktovým inovacím. Leda bychom museli najmout velké množství nových lidí.

Byla by zastarávající technologie problémem i při najímání lidí?

Stoprocentně ano. Osobně se účastním skoro všech pohovorů při najímání technických lidí a toto je velké téma. Dnes je na trhu tolik zajímavých IT firem, že je možné si práci vybírat. Kdybychom lidem na pohovoru říkali, že máme monolitické PHP a že ho s námi mají jít opravovat, nikdo by k nám nešel. Vnímám to tak, že u náborů nejsou důležité všemožné benefity, ale hlavně se musí dělat zajímavá a smysluplná věc.

Jaký je váš výchozí technologický stav a kam ho postupně přesouváte?

Heureka se začala vyvíjet klasickým stylem, kdy tam byl webový server, PHP, MySQL. To byl standard a úplně to stačilo. Na Slovinsku pak monolitický kód mají napsaný v .NET. Tam si následně řekli, že to začnou psát v Pythonu a v Heurece jsme na něj naskočili také. Front-endové věci pak máme v JavaScriptu, takže Node.js a někde i React.

Ale obecně se dá říci, že nevynucujeme, v čem se má psát. Běžně je to Python, ale když někdo přijde, že chce psát v Go a obhájí si to, nemáme s tím problém. Dnes už víme, že určitá část košíku se bude vyvíjet v PHP a důležité je, abychom měli API a infrastrukturu.

Máme různé typy velkých dat. Jednou z věcí je katalog, který je nyní uložený v jedné MySQL databázi. V nové platformě tato data přetahujeme do Elasticsearch a aktuálně se bavíme o tom, kde je zdroj pravdy – zda se data kopírují z MySQL do Elasticu, nebo zda jsou v Elasticu data originální. Pro vyhledávání a filtrování na Heurece reálně používáme Elasticsearch jako cluster.

Pak máme databázi obrázků, která je obrovská. Na Heurece je 25 milionů produktů a ke každému patří několik obrázků. To máme uložené v clusteru Ceph. Při naší velikosti nejde řešení postavená bez clusteru škálovat. Budoucnost je pro nás v clusterových řešeních. Ceph u nás obsahuje produktové a 3D obrázky, návody, XML feedy pro partnery a persistent volume pro Kubernetes.

Máme také analytickou databázi, což jsou informace o tom, kam a jak se kliká a podobně – tedy business intelligence. Tohle sjednocujeme v nástroji Keboola, která dokáže dobře dávat na jedno místo velké množství zdrojů dat. Mohli bychom jít do Hadoopu, ale ten je hodně náročný na hardware a také neexistuje tolik lidí, kteří by Hadoop dobře uměli.

Od jakých objemů dat se vyplatí nasadit Ceph? To v Česku není vůbec běžná věc.

V současné době máme 25 TB primárních dat a 95 TB clusterovaně. Jedna věc je každopádně množství dat, druhá věc pak jejich dostupnost. Dat může být relativně málo, ale potřebujeme, aby se obrázky načítaly velice rychle. Jde nám tedy o rychlost, distribuovanost a využití více serverů. Proto máme Ceph.

Používáte vlastní serverový hardware?

Všechny tři platformy běží na našich vlastních serverech. Česká Heureka má zhruba po jednom a půl racku ve dvou datových centrech. Jde o zapojení do clusteru, kdy třeba tři servery na Elastic jsou v jednom datacentru a tři v druhém.

To není zase tolik racků. Takže máte vysokou hustotu?

Je to tak. Používáme starší MicroCloud žiletky, které jsou 3U po osmi nodech. Pak máme novější multi-node servery Twin, kde se využívá 2U po čtyřech nodech a procesory od AMD. Vše je od Super Micro.

Má smysl pro dnešní velké internetové firmy, jako je Heureka, kupovat storage řešení od firem typu Dell EMC, HPE nebo NetApp?

Je to hodně o byznysu dané firmy. My jsme schopní si poradit s výpadky. Máme to distribuované, takže nám nevadí, když server nebo disk vypadnou, cluster si s tím poradí. V korporacích typu banky a spol. tradiční storage smysl má. Dostanou SLA, musí splňovat regulace a podobně. My si raději postavíme vlastní cluster, za který si zodpovídáme a řešíme si podporu. Nemáme komu zavolat a problémy řešíme na fórech.

Lukáš Putna, Heureka
Autor: Heureka

Lukáš Putna, Heureka

Stejně celý internet funguje díky Stack Overflow…

To je pravda. Často je i podpora od firem pomalejší než Stack Overflow.

Každopádně potřebujete mít vlastní hardwarový tým.

To je trochu stinná stránka v tom smyslu, že lidi musí mít velké znalosti. Technologií je hodně a pro firmu je drahé a těžké to neustále udržovat. V konceptu celé platformy podobné věci řešíme tak, že jsme si Heureku rozdělili na produktové oblasti. Jde o katalog, nákup a tak dále. Na základě těchto oblastí si stavíme sekce, které mají specializace v daných oblastech a tyto specializace rozvíjí kontinuálně.

Když si uděláte různé CAPEX a OPEX propočty ohledně toho, kolik vás stojí provoz vlastního hardwaru oproti cloudu typu AWS či Azure, jak to celé vychází?

Cloudové řešení dle našich propočtů vychází na provoz dvakrát až třikrát dráže. Započítali jsme servery, čas lidí a další aspekty. Je to do velké míry dáno tím, že máme hodně, transakcí, dotazů…

… takže kdybyste to měli v S3, tak na vás Amazon zbohatne?

Ano, bylo by to drahé. Náš systém na to není postavený. Kdybychom ho samozřejmě stavěli pro cloud, udělali bychom ho jinak, protože bychom počítali s tím, co a jak je v těchto cloudech drahé. Dělali bychom jiné optimalizace, možná šli i do AWS Lambda a podobně. Každopádně naše výpočty stojí na tom, že bychom naši architekturu vzali tak, jak je, a přesunuli ji do cloudu.

A proč v rámci předělávání Heureky nepřepíšete systém právě pro cloud?

Je to právě o tom, o čem už jsme mluvili – není to tak, že bychom měli jedno zcela nové řešení, které najednou přepneme. Potřebovali bychom spojit naši infrastrukturu s cloudem a to pořád vychází draho. Budeme tedy nadále mít vlastní servery a clustery. To přináší i některé složitosti, zejména u konektivity. Naše platformy nyní fyzicky běží v Česku, Maďarsku a Slovinsku. Microservices spolu velmi komunikují po síti, což klade určité nároky.

Takže si kupujete tranzit?

Ano. V Česku máme datacentrum spojené s kancelářemi přímou optickou linkou a podobné věci nás budou čekat i v rámci jednotné platformy. Budeme muset spojit datacentra, ale finální řešení ještě rozhodnuté není. Hodně řešíme odezvy. Když například databáze musí na všechny svoje nody rozeslat informaci o něčem a nody musí potvrdit commit, bude se čekat na nejpomalejší článek. Možností na řešení je hodně, třeba by to šlo stavět v jednom datacentru, ale ještě jsme se nerozhodli.

Jinak jsem ještě nezmínil, že veškeré služby, které máme, běží v Dockeru a v Česku už v Kubernetes clusteru. Díky tomu jsme schopní s aplikacemi dobře operovat a případně je přesouvat.

Kontejnery provozujete přímo na bare metalu, nebo pod tím máte ještě nějakou vrstvu?

Kubernetes máme přímo na bare metalu. Pokud se budeme bavit o infrastruktuře v rámci platformy, kde budeme muset řešit servery napříč datacentry, tak na mezivrstvu nejspíše dojde. Zatím jsme to nepotřebovali, protože serverů zatím není tolik.

Tvorba nové platformy je tedy projekt na několik let. Kolik se na něm podílí a v průběhu času bude podílet lidí?

Reálně to zasáhne všechny. Každý zaměstnanec se do změn a platformy bude muset zapojit. Ze začátku je to hodně o vývojářích a produktových lidech, ale pak přijdou lidé z obsahu, podpory a tak dále. Už nyní při vývoji se snažíme další sekce firmy do debaty zapojit, abychom jenom nepřišli, že jsme udělali novou platformu a „tady to máte a pracujte s tím“.

Dle mého je Heureka velmi efektivní v tom, jak velký produkt a byznys má a kolik ho vytváří lidí. V produktovém vývoji pro všechny tři stávající platformy je nás aktuálně 60. V tom jsou jak programátoři, tak produktoví manažeři nebo SCRUM masteři. Máme ale ambici stát se takovým komplexním rádcem, který poradí, co si lidé mají koupit a podobně. Z 60 lidí se tak během tří až pěti let chceme rozrůst na 100 až 120 zaměstnanců v oddělení produktu a vývoje. Díky tomu budeme schopní dělat produktové inovace a nebudeme muset pouze prioritizovat a dělat jenom to nejnutnější.

Takže budete další firma, kdo bude na rozpáleném trhu s vývojáři přilévat olej do ohně?

Je to tak, ale budeme to dělat spíše třetinově, protože máme pobočky v Budapešti, Lublani, Plzni a Liberci. Ten je zároveň pro nás jako původem libereckou firmu hodně velký. V Praze je to hodně divoké, ale nezajímá nás jen ona.

Je najímání lidí v regionech jednodušší a stojí tam lidé méně?

Najímání lidí v regionech jednodušší není, je to každopádně další možnost. Jinak v Praze je hodně technologicky vyspělých firem, které lidem dávají velkou expertízu. Typicky jde o Hadoop, což je hodně ceněná znalost. To zvyšuje cenu lidí. Neříkám, že v regionech takoví lidé nejsou, ale přeci jenom v Liberci zase tolik velmi zkušených specialistů na Hadoop není.

Jak běžný uživatel pozná spojení více platforem do jedné nové a jaké to bude mít byznysové dopady pro vás?

V rámci všech zemí si velice pomůžeme. Budeme schopní vzít z české Heureky recenze iPhonu XS, kterých je aktuálně skoro sto, a zobrazit je v Chorvatsku, kde zatím žádné nejsou. Produkt bude díky tomu kvalitnější. Budeme také moci mnohonásobně rozšířit produktovou nabídku ve všech zemích.

Je to i o dílčích prvcích katalogu produktů a celkovém obsahu. Například budeme schopní rozšířit a zkvalitnit 2D i 3D obrázky u veškerého zboží. Neméně důležité jsou parametry produktů, u nichž je párování celkem věda a sjednocení v rámci regionu velmi zkvalitní produktové vyhledávání i filtrování.

Sjednocená platforma vám tedy usnadní i přístupy na nové trhy?

Chceme propojit e-shopy a značky se zákazníky na všech trzích. Jednotná platforma to usnadní a zefektivní. Pomůže s jednodušším napojením e-shopů, s lepším sdílením parametrů, galerií a třeba i recenzí – těch přibude na našich srovnávačích zhruba 800 tisíc měsíčně. Díky tomu se staneme největším nákupním rádcem s nejširším katalogem produktů na jednom místě. V rámci regionu měsíčně oslovíme zhruba 20 milionů uživatelů. Trhy, na kterých působíme, rostou v průměru o 25 procent. Je tam tedy velký potenciál, který chceme využít.

EBF19

Podívejte se také na náš lednový rozhovor s Tomášem Bravermanem: