S Ondřejem Brablcem o IT zákulisí Shoptetu

Místo e-shopařů jsme tentokrát zpovídali našeho Ondřeje Brablce. Ten šéfuje celému shopteťáckému oddělení Operation starající se o rychlost a stabilitu Shoptetu. A tak není nikdo povolanější, kdo by věděl první poslední o tom, jak všechno vlastně vzniká. Co Ondřej v rozhovoru prozradil? Třeba to, s jakými problémy se potýkají a co se právě chystá.

Ondřeji, můžeš nám představit Shoptet z technologického pohledu? 

Pokud se jádra týká, tak je to vlastně na první pohled dost jednoduché, PHP aplikace ve vlastním MVC frameworku, MariaDB Galera Cluster, Elasticsearch pro vyhledávání, RabbitMQ pro asynchronní/dávkové zpracování, Redis jako volatilní cache.

Shoptet API je napsané v Nette a nová generace Shoptet frontendu vzniká v Reactu (Next.js/GraphQL).

Nové projekty spouštíme jako MVP nejdříve na WordPressu. Zde odvedl neuvěřitelnou práci Jakub Kolář. Pokud se projekty ukáží jako životaschopné, dojde k jejich reimplementaci do něčeho robustnějšího. Nyní to čeká Obchodiště, u kterého předvídáme, že by mohl vyrůst v samostatný business projekt s mezinárodní ambicí, a proto zvažujeme použít Symfony framework.

Jaké zajímavé technologické problémy řešíte?

Každý týden vzniká přibližně tisíc trialů a mnoho desítek projektů přechází do produkce. To znamená průběžně cca 22 tisíc samostatných databází, které je nutné balancovat mezi čtyři Galera Clustery. Musíme tedy řešit i zálohování, mazání a obnovování projektů (je tak lehké založit e-shop, že na něj někdy majitel pak zapomene a vzpomene si třeba až po měsíci).

Každý den pouštíme přibližně 250 tisíc úloh pro dávkové zpracování. V jednom vlákně by běžely 18 dní, takže paralelizujeme v několika frontách (prioritní, krátké, dlouhé joby). K tomu, aby úkoly stíhaly doběhnout v daném časovém slotu, nám pomáhá Longest Job First algoritmus.

Síťové DDoS za nás řeší náš provider VSHosting, ale v poslední době se množí útoky na aplikační úrovni. Pokud jde útok z ČR, tak je jasné, že se pohádaly nějaké doplňky a uživatelské úpravy (nekonečné smyčky, amplifikace dotazů). Učíme se je automaticky poznávat a limitovat a zároveň neomezit kampaně e-shopů. Zde nás čeká generační výměna ELK a chceme vyzkoušet elastalert, zároveň zkoumáme možnosti APM pomocí Elasticu.

I tak standardní věc, jako je fulltextové vyhledávání, se při našem počtu projektů zkomplikuje. Používáme například 100 indexů pro CZ a 10 pro SK a jednotky pro ostatní jazyky. Každý jazyk obsluhuje jiný počet ingress workerů. Počet indexů i workerů je konfigurovatelný.

Jakým způsobem pracujete?

Některé týmy mají vlastní roadmapu a projektové řízení (například API, Obchodiště), jiné týmy mají vlastní Kanban. Hlavní tým pracuje v týdenních sprintech. Soustředíme se na kvalitu, netlačíme na čas. Standardem je dodržovaní coding style rules a peer code review. Postupně zavádíme a zvyšujeme úroveň kontrol PHPStanu.

Důležitá je pro nás stabilita a postupné vylepšování. Každá změna je testována manuálně i QA týmem, každým dnem přidáváme další automatické testy (používáme Codeception).

K řízení projektů nově produktový tým používá ProductBoard a vývoj historicky pracuje s Phabricator. Neměníme technologie jako na běžícím páse, a tak pokud chceme začít používat něco jiného, musí nám to dávat smysl. Doposud nám například pro vývoj vyhovoval Vagrant, ale se zaváděním reactového frontendu jsme spustili Kubernetes cluster. Ten bychom chtěli využít i pro CI, a tak dává smysl dockerizovat i vývojové prostředí.

Řekneš nám více ke zmíněným projektům?

Jádro je trošku starší, ale sledujeme trendy a postupně ho vylepšujeme. Jeden z našich posledních úkolů byl generační upgrade Elasticsearche.

Založte si vlastní e-shop na Shoptetu bez závazků

Nevyplňujte toto pole:

Vedle toho tu máme i úplně nové projekty „na zelené louce“. Jsme hrdí na naše Shoptet API, které vzniklo pod technickým vedením Pavla Káchy a projektovým vedením Petra Hendla. Přes něj mohou naši partneři napojovat své služby, což dramaticky zvýšilo potenciál Shoptetu. Například přidání platební brány je pro nás už jenom otázka komunikace s partnerem, konfigurace a E2E otestování.

Zmíněno bylo i Obchodiště, což je úplně nový B2B marketplace.

Právě připravujeme pilotní provoz projektu postaveného na novém reactovém frontendu. Ten vznikl ve spolupráci s kluky z VersionPressu. K jádru se připojuje přes GraphQL. Jsme sice ještě daleko od masového nasazení, ale vidíme v tom obrovský potenciál.

Máte poměrně velkou komunitu vývojářů, kteří s Shoptetem pracují. O co přesně jde?

Díky Shoptet API a úpravám, které mohou dělat sami majitelé e-shopů, je kolem nás obrovská komunita lidí, kteří se tím živí. Pro ně máme web Shoptet Developers, kde sdílíme novinky a návody. Pro naše partnery máme i uzavřenou facebookovou skupinu a dokonce i Slack kanál, kde mohou získat velmi rychlou reakci přímo od vývojového týmu.

I když pracujeme na novém, plně customizovatelném frontendu, který bude mít možná reactově evangelizační dopad v české kotlině, stejně se snažíme vyždímat maximum z toho, co nám současný šablonový frontend umožňuje. Pod vedením Vaška Vracovského vznikla například možnost vytvoření doplňkových šablon v blank mode režimu. Život kodérům se snažíme ulehčit i například pomocí Shoptet developer tools, které najdete v browser konzoli.

Spolupráci s partnery budeme rádi nadále prohlubovat, plánujeme nabízet techničtější školení a také konzultace.

Jak zlepšujete kvalitu kódu? 

Vždy jsme měli ambice řešit technický dluh, ale procesně jsme pro něj nealokovali dostatek zdrojů. Proto jsme nedávno založili Development Culture Club a alokovali mu trvalý budget 20 % kapacity vývoje. Jako firma jsme si vytvořili dobrou pozici na trhu, ve vývoji jsme minulý rok pracovali na vylepšení automatického testování a nyní přišel konečně i čas na větší refaktoring.

Jaký je technický tým, a koho hledáte?

Na backendu je nyní 10 lidí, na frontedu 3, v QA týmu 4 a v DevOps týmu 3 kolegové. Tento rok plánujeme posílit všechna oddělení o +1, největší výzva je u backendu, kde chceme nabrat až 6 nových vývojářů. Průběžně hledáme lidi jak pro vylepšování jádra, tak vývojáře na nové projekty. Uvítáme kolegy, kteří nás obohatí o nové znalosti a pohledy. Hledáme i Shoptet Developer Evangelistu, který by zaštítil komunikaci s partnery. Aktuálně se zájemci mohou hlásit na pozice Šéf vývoje pro e-commerce platformu a PHP vývojář.

Musím ocenit super vztahy mezi kolegy, nikdo si nehraje na vlastním písečku. U takhle komplexní věci spolu lidi musí spolupracovat a radit se, aby pochopili všechny vazby a souvislosti.  

Jak bys popsal prostředí v Shoptetu? 

Už nejsme rozdivočelý startup, jsme zaběhnutá firma, businessově se nám daří. Lidi jsou vyzrálejší a zkušenější. Jak jsem říkal, je tu klid na práci, minimum stresu a tlaku. Často k nám jdou lidi, kteří freelancovali a stavěli e-shopy a láká je, že tady mohou dělat něco řádově většího.  

Na týmových aktivitách chceme letos zapracovat, zatím nás oslovila nabídka security offsite hackatonu. Co už ale má solidní základy, je budování našeho závodního týmu. Máme pronajatou dráhu a závodní stroje.

Mohlo by vás zajímat:

Navigace pro příspěvek

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Odesláním zprávy souhlasíte s podmínkami ochrany osobních údajů