Menu

10 trhů, 1 aplikace. Jak se modernizuje jádro největšího srovnávače ve střední Evropě?

Heureka je největší srovnávač zboží na českém trhu a ve střední Evropě, který působí na 10 trzích v 9 jazykových mutacích. BlueGhost pomáhal Heurece ve 3 oblastech.

Spolupráce začala na vedlejším srovnávači cen, Srovnanicen.cz. Dále pokračovala tvorbou microsites, které Heureka používá pro své PR aktivity: Den dopravy zdarma, Shop roku, Produkt roku, Darky.heureka.cz a další. V poslední době se BlueGhost věnuje technologickému upgradu jádra hlavního srovnávače.

Velkým úkolem pro BlueGhost je pomoc s modernizací samotného jádra Heureky.

Původní Heureka běžela na třech různých platformách, které bylo nutné nákladně udržovat. Cílem projektu bylo předělat Heureku z monolitického systému do webových servis a současně se zbavit tří platformem a nahradit je jednou univerzální, která bude fungovat pro všech 10 trhů.

To znamenalo zbavit největší srovnávač v ČR v konkrétní oblasti technického dluhu.

Technologický dluh se v posledních pár letech stal problematickým pro rozvoj dalších funkcí v celém projektu. Zároveň bylo nutné postupovat obezřetně. Srovnávač Heureka.cz patří mezi top 20 největších českých webů, proto byl každý detail tohoto projektu extrémně důležitý, neboť i malá úprava mohla mít velký dopad na tisíce uživatelů.

Plán byl připraven na straně Heureky, kde vznikly tzv. One Platform týmy.

Každý tým má na starost svojí entitu nebo entity. BlueGhost je součástí týmu One Advisory a má na starost Articles, Category Texts a Question & Answers. Tyto entity poskytují část obsahu pro homepage, kategorie i detaily produktů (Articles jsou součástí homepage Heureka.cz. Heureka.sk, Pazaruvaj.com i Arukereso.hu.). To znamená, že vyvinuté entity jsou klíčové pro zdárný běh projektu hned na několika trzích.

Celá architektura tohoto projektu byla velice komplexní.

Na začátku dostal tým svůj čistý prostor v cloudu, který si musel připravit (naprogramovat si celý deploy) a celkem volné ruce v tom, jak se rozhodne celý projekt uchopit. BlueGhost implementoval několik microservices pro různé části Heureky. Za tím účelem si vytvořil vlastní knihovnu, kterou poté využíval napříč všemi službami. Jednotlivé části Heureky tak, jak ji známe, nyní nově fungují jako samostatné služby, které spolu komunikují přes REST API nebo přes asynchronní API.

Heureka má poměrně propracovaný stack a jednotlivým týmům nechává volnost v tom, který programovací jazyk pro danou entitu použijí. V řešení od BlueGhostu se tak objevuje například React, Symfony nebo rychlý framework Slim, vhodný pro API. Jiné týmy naopak mohou pracovat například v Pythonu, Golangu nebo TypeScriptu a díky použité architekture to vzájemnou práci nijak neohrozí.

Entity, které BlueGhost vyvíjel, jsou na první pohled velmi jednoduché, nicméně pozadí a celá struktura projektu je složitá a navazuje na práci dalších týmů.

V rámci vývoje byla pro úspěch klíčová komunikace mezi týmy, specifikace vzájemných požadavků a jejich naplnění. Tým Modrého ducha spolupracoval například s týmy na SEO, Search, Product detail, Image, Road to product, Partner, Mail service a dalšími. Celý vývoj probíhal agilně a v průběhu bylo nutné vypořádávat přicházející požadavky z ostatních týmů. Z toho důvodu se obsah a funkce entit průběžně měnily a doplňovaly o nové.

Každá z realizovaných entit, Articles, Category texts a Questions & Answers, se skládá ze tří hlavních částí:

Microservices: Obsahují business logiku entit a poskytují API pro UI komponenty. Jsou psané v PHP 8.2 s použitím Doctrine a Slim frameworku. Jedním z hlavních požadavků byla rychlost, proto se místo běžných webserverů (apache, nginx) použil RoadRunner, se kterým dosahujeme skvělých reakčních časů.

Vedle klasického API poskytují microservices i asyncAPI a přes RabbitMQ messages komunikují s jinými entitami v rámci Heureka ekosystému. Microservices běží v GCP v docker kontejnerech orchestrovaných přes Kubernetes. Nasazení do prostředí probíhá automaticky pomocí GitLab CI a nástroje Helm. Infrastruktura (MySQL) a ostatní služby jsou zapsané dle principů IaC pomocí Terraformu. Služby jsou monitorované přes nástroje Prometheus a Grafana. Dokumentace je v Backstage - automaticky generovaná dle změn v kódu.

UI komponenty: Představují uživatelské rozhraní entit (se kterými komunikují přes API) a vykreslují se jako nedílná součást webu Heureka.cz (i všech ostatních mutací). Komponenty jsou napsané v ReactJS a nastylované v souladu s design systémem Heureky.

Administrace: Slouží správcům k vytváření a editaci článků (Articles) nebo moderování poradny (Questions & Answers). Ke každé entitě jsme dodali její vlastní administrační rozhraní. Jsou napsaná v ReactJS a komunikují s entitou přes microservice API.

Velkým úkolem, kterému tým čelil, byla migrace původních dat ze starých systémů do nových entit.

Nejenže migrace probíhala z různých lokalizací, protože každá entita běžela již ve zcela samostatném systému, samostatné databázi a architektuře, ale zároveň bylo nutné spojit několik typů úplně rozdílných článků do jedné společné entity Articles a té vše přizpůsobit.

Hlavní přidanou hodnotou práce na projektu je její celkový dopad, neboť velká část lidí v Česku a na Slovensku s Heurekou přichází do kontaktu.

Realizace trvala rok a jednalo se o první fázi dlouhodobého projektu. Největší výzvou bylo skloubit všechny entity dohromady a zasadit je společně pod jednu střechu tak, aby vznikl srovnávač, na který jsou uživatelé zvyklí.

Čeho BlueGhost dosáhl

1. Velmi obtížná migrace dat z různých jazykových mutací a datových struktur do nové podoby jednotné pro všech 10 trhů, na kterých Heureka působí.

2. Koordinace a komunikace s mnoha týmy na straně Heureky tak, aby část práce odbavená BlueGhostem zapadla do širšího celku.

3. Moderní cloudová aplikace využívající nejmodernějších technologie, optimalizovaná na rychlost.

Plánujete podobný projekt?

Dlouhodobá spolupráce může začít
jedním kliknutím

Domluvit schůzku
Marketingový specialista JIŘÍ HOCHMAN
Projektová manažerka MARTINA FILIPOVÁ
Backend developer ONDŘEJ POSPÍŠIL
Technický konzultant MICHAL ZÍMA
Backend developer ROMAN PIŠTĚK
Backend developer JAN VALEŠ
©2022 - 2023
©BlueGhost for Heureka