Vlastní datová centra, výroba serverů i vývoj softwaru. To jsou pilíře úspěchu české internetové jedničky Seznam.cz. Dalším je nově také redakční systém pro obsahové weby, na kterém vývojáři pracovali poslední dva roky. Moderní publikační platforma pro články, fotky a videa ušetří čas vývojářů a je dostatečně flexibilní pro zpravodajské, oborové i úplně nové projekty.
Místo monolitického systému flexibilní moduly
Novou platformu jsme pilotně vyzkoušeli na webu Garáž.cz, následovaly web a mobilní aplikace Seznam Zprávy, před nedávnem jsme na ni převedli obsahovou část Sport.cz. Novinka nahrazuje naši dřívější platformu, kterou jsme ale stavěli na zcela jiné filozofii. Počítala s větší centralizací jednotlivých komponent, jednalo se o monolitický systém a jeden repozitář pro všechny komponenty. Ukázalo se, že tento systém naráží na limity ve chvíli, kdy jeden tým specifickou úpravou pro konkrétní komponentu mohl rozbít něco v jiném týmu. Výhodou nové platformy je, že je částečně na míru pro naše jednotlivé obsahové weby, ale zároveň je velká část sdílená. Vyjádřeno v číslech, sdílíme přibližně 60 % na frontendu a 80 % na backendu. Stejný kód tedy nepíšeme vícekrát, ale jen jednou. Lze ho použít na všech službách, a zároveň je pro každou službu zaručena flexibilita.
Vše máme nově postavené modulárním způsobem. Základem je skeleton, což je malý program, který do sebe dokáže nahrávat další programy. Mimo skeleton s moduly pak mohou běžet ještě samostatné mikroslužby, které dále rožšiřují systém o specifickou funkcionalitu. Dohromady má systém aktuálně přes čtyřicet modulů. Každý modul má sadu unit testů a integračních testů, které udržují funkční jednotlivé moduly. Na službách, které vycházejí ze skeletonu, jsou unit testy, integrační testy, E2E testy, performance testy a QApe . Protože služba může rozšiřovat nebo upravovat funkcionalitu modulů.
Snazší vylepšování jednotlivých funkcionalit
Platformu neustále vyvíjíme a zohledňujeme potřebu dalších nových funkcí. Když přijde změna, je výhoda, že stačí upravit jen jeden z modulů, který pak ostatní mohou využít, a není třeba vyrábět úpravu pro každou z našich obsahových služeb zvlášť. Stejně tak je to s reportováním chyb, opravují se jen jednou. Každá ze služeb si také zvolí jen to, co potřebuje. Příkladem modulu, který využívají jen některé služby, je třeba živé vysílání.
Výrazně vylepšeným modulem na nové platformě jsou tagy – štítkování. Ty samozřejmě používá každá redakce. My ale máme už jen jednu databázi štítků nad všemi službami, kterou spravujeme centrálně. Hlavní výhoda tohoto řešení je, že nevznikají duplicity. Díky modulu rušíme synonyma nebo zkratky, aby se štítky neduplikovaly. Máme to zaznamenané i do budoucna. Například České aerolinie a ČSA, to je u nás jeden štítek a kdyby náhodou vznikl jakýkoli druhý se stejným obsahem, umíme to vyřešit. Stejně tak umíme řešit i překlepy v založených štítcích. Štítek nemá na obsahovém webu svou profilovou stránku, pokud je duplicitní nebo špatný. Při tolika webech a velkém množství obsahu je to velmi užitečné.
Nejlepší navázání na další systémy firmy
Pro základ a modulárnost frontendových komponent nám slouží framework IMA.js se šablonovací knihovnou React. Ostatní backendové komponenty jsou postavené v Python, kde pro základ API používáme Flask. Hlavní databází je MongoDB, ale pro konkrétní případy používáme i Redis a MySQL.
Všechny komponenty jsou baleny do Docker, které se pak spouští v Seznam Kubernetes. Pro monitorování metrik z jednotlivých komponent nám slouží Prometheus. Pro dashboardy a alerting pouzivame Grafanu. Logy z jednotlivych komponent dohledáváme v Kibaně.
Na první pohled je vlastní vývoj cesta, která je dražší a celkově náročnější, přesto je pro nás výhodnější. Kdybychom sáhli po hotovém open source řešení zdarma, nebo i po outsourcovaném řešení, museli bychom v každém případě zajistit stabilitu webu s ohledem na naši velkou návštěvnost. Systém bychom museli napojovat na seznamáckou analytiku, doporučování obsahu, interní a externí přihlašování, vyhledávání, reklamní systém a několik dalších věcí. Díky vývoji řešení přímo pro naše potřeby získáváme konkurenční výhodu oproti ostatním platformám na trhu. Máme nejméně deset vnitrofiremních partnerů, které potřebujeme integrovat do celku. Integrace do služeb Seznamu open source řešení nenabízí. Naše požadavky jsou v některých případech dost specifické.
Výhody pro redaktory
Redaktoři, editoři a další lidé v redakci dostávají do ruky technicky úplně nový systém a nové nástroje pro práci s textem, který ale současně nenaboural jejich dosavadní zvyky. Nebylo smyslem dělat změny pro změny, takže vizuálně vypadá upgrade dost podobně jako původní verze. Změny jsme dělali jen tam, kde jsme viděli potenciál zlepšení redakční práce. Příkladem je ovládání netextových prvků v editaci výsledného textu, nahrávání fotek a videí zůstalo naopak stejné.
Počty a typy položek, které dávaly smysl, jsme zachovali. Ty, které smysl postrádaly, jsme zrušili nebo předělali do jiných, ale snažili jsme se, aby změn v nejčastějších scénářích redakce bylo minimum. Lidi obecně přijímají změny těžce, proto u každé musejí vnímat její důvod a výhody, které jim přináší. Zlepšili jsme například celý WYSIWYG editor – What You See Is What You Get. Předtím neodpovídal takřka vůbec definici – že co edituji, to dostanu. Nyní je tomu editor podstatně blíže. Vše navíc pracuje mnohem rychleji.
Odlišnost od ostatních platforem je, že z WYSIWYG editoru nebereme HTML, ale surová data. Ta se potom dál k jednotlivým konzumentům, například do mobilní aplikace, fulltextu či webové stránky, dostávají v surové podobě. To nikdo z redakce neocení, ale pro nás ve vývoji je to nesporná výhoda.
Máme jedno API, které lze využít na kterékoli platformě. Současně s novou platformou se vydaly aktualizované mobilní aplikace, ty pracují na stejném API jako webová stránka. Pro prvky, které jsme dříve z WYSIWYG editoru získávali v HTML formátech, nyní aplikace dokáže použít nativní prvky, takže je může jednodušeji zpracovat.
Šetříme práci programátorů
Výhoda této platformy také je, že můžeme nastavovat vzhled webu přímo z administrace. Bez zásahu programátorů přímo z administrace je také možné úplně přeskládat stránku, nebo poskládat novou stránku pro nové téma. Lze také udělat ve stránce změnu a tu si otestovat pomocí AB testu. Platforma nám tak dává silný nástroj v tom, že i neprogramátor může měnit a přeskládávat webovou i mobilní stránku z existujících prvků. Stránky může ovlivnit kdokoli, kdo má administrátorská práva. Takový přístup do administrace má pochopitelně jen několik lidí, protože je to mocný, ale zároveň nebezpečný nástroj. Kdyby se někdo spletl, projeví se chyba hned v reálném prostředí. Nám to ovšem šetří kapacity vývojářů, kteří se nemusí zabývat těmito menšími změnami. Vývojové týmy pracují především na větších úpravách a nových funkcionalitách.
Oproti předchozí verzi máme pro každý typ stránky možnost definovat dvě odlišné podoby layoutu, jeden pro desktop a jeden pro mobil, ze kterého na naše weby přichází stále více lidí. Teď si jen jednoduše nadefinujeme, které prvky a v jakém pořadí mají být na malých zařízeních a které na desktopu.
Sečteno a podtrženo. S novou publikační platformou budeme schopni kontinuálně rozvíjet naše obsahové weby dalších nejméně deset let. Už tento rok ji plánujeme využít pro spuštění nejméně jednoho nového projektu. Můžeme využívat synergie. Čím více podobných projektů s touto platformou propojíme, tím více dává smysl ji rozvíjet a zlepšovat společné functionality. Abychom to mohli dělat co nejlépe, rozšiřujeme tým expertů. Vývojáři, kteří by se chtěli zapojit do tohoto a dalších technologických projektů v Seznamu, jsou u nás vítáni a mohou si vybrat z několika aktuálně otevřených pozic.