Weglot

Tvorba našeho prohlížeče webových stránek: pohled do techniky společnosti Weglot

Tvorba našeho prohlížeče webových stránek: pohled do techniky společnosti Weglot
Etienne
Napsal/a
Etienne
Zkontroloval/a
Aktualizováno dne
19. června 2023
26. května 2025

Mnoho uživatelů Weglot by rádo zajistilo, aby všechny adresy URL jejich webových stránek byly přesně přeloženy(po první vrstvě strojového překladu, kterýprovádí Weglot). Pro mnohé, pokud vlastníte rozsáhlé webové stránky přeložené do mnoha jazyků, to může být časově náročné.

Na základě zpětné vazby od našich uživatelů jsme si také všimli, že někteří z nich byli při zahájení svého prvního projektu překladu webových stránek trochu zmatení. Často se divili, proč v seznamu překladů vidí pouze adresu URL své domovské stránky, a ne všechny ostatní stránky, nebo jak vygenerovat překlady svého obsahu.

Věděli jsme tedy, že v této oblasti je co zlepšovat. Mohli bychom našim uživatelům pomoci snadněji nastoupit na palubu a spravovat jejich projekty rychleji a efektivněji, ale jediné, co jsme zatím neměli, bylo řešení.

Jak jste již možná uhodli... to vedlo k uvolnění funkce Správa adres URL, která umožňuje uživateli rychle a efektivně skenovat adresy URL svých webových stránek a generovat jejich přeložený obsah z ovládacího panelu Weglot .

Nedávno byla tato funkce přesunuta ze Seznamu překladů na novou stránku pro správu překladů podle URL, kde je ještě flexibilnější a výkonnější, takže jsme si řekli, že je nejvyšší čas vám říct, jak byla tato funkce uvedena v život.

Golang na pomoc

Na začátku roku 2020 mi výluka kvůli pandemii konečně poskytla příležitost pustit se do učení programovacího jazyka Golang, které jsem musel kvůli nedostatku času odložit.

Golang (zkráceně Go) je jazyk společnosti Google, který v posledních letech získává na popularitě.

GOLANG

Jedná se o staticky kompilovaný programovací jazyk, který byl navržen tak, aby vývojářům pomohl psát rychlý, robustní a souběžný kód. Jeho jednoduchost umožňuje psát a udržovat rozsáhlé a složité programy bez obětování výkonu: Golang lze považovat za nečekané dítě Pythonu a C: (poměrně) snadný na psaní a rychlý na výkon.

Podle mého názoru je nejlepším způsobem, jak se naučit nový programovací jazyk (nebo nový framework či cokoli jiného), najít si dobrý projekt, na kterém si osvojené poznatky vyzkoušíte v praxi. Není to nejjednodušší úkol: pokud to čtou vývojáři, vědí, jak těžké to může být

Dobrý vedlejší projekt musí splňovat určité specifikace:

  • Rozsah musí být dostatečně velký, aby se vývojář při vytváření programu mohl dostatečně seznámit s technologií, kterou se učí: vypisování "Hello world" do konzole málokdy stačí k pochopení nového jazyka.
  • Rozsah nesmí být tak velký, aby to vývojář pravděpodobně vzdal před dokončením projektu (všichni jsme to zažili).
  • V neposlední řadě to musí být zábava! Programovat po dvousté seznam úkolů nebude příliš zábavné, je pravděpodobné, že to vzdáte, jakmile si vymyslíte, jak to udělat. 
  • Bonusový bod: vedlejší projekt by měl v ideálním případě řešit nějaký reálný problém, což pomáhá soustředit se na úkol.

Proč se o tom zmiňuji? Když jsem přemýšlel o tom, co by mohlo být skvělým vedlejším projektem pro začátek učení Golangu, napadlo mě, že webový crawler by mohl dokonale odpovídat výše uvedenému popisu a mohl by také vyřešit některé problémy, které jsme chtěli vyřešit pro uživatele Weglot .

Přemýšlejme o tom, že webový crawler (často nazývaný "bot") je v nejjednodušší podobě program vytvořený za účelem návštěvy webových stránek a získávání informací.

Jedním z typických případů použití webového crawleru může být zjištění a návštěva každé stránky webu a následné vytvoření mapy webu. Nebo indexovat její obsah, například pomocí robotů Google.

V našem případě jsme potřebovali něco, co by naši uživatelé mohli použít ke skenování svých webových stránek a zpětnému importu všech adres URL svých stránek. 

Hledali jsme také nový způsob generování překladů. Poznámka na okraj pro ty, kteří neznají Weglot... "generování překladů" znamená, že se vaše adresy URL (a obsah v nich) objeví v seznamu překladů Weglot , což vám umožní provádět ruční úpravy překladů.

V té době museli uživatelé navštívit jejich webové stránky v přeloženém jazyce, aby je vygenerovali. Funguje to velmi dobře, pokud má váš web jen několik stránek a nemáte mnoho přeložených jazyků, ale může se rychle stát ohromujícím úkolem, pokud vlastníte velmi rozsáhlý web s tisíci stránkami.

Myšlenka použít k automatizaci tohoto úkolu webový crawler se rychle začala jevit jako ideální řešení a byl by to dokonalý případ využití funkcí souběžného programování v jazyce Golang!

V lednu 2020 jsem tedy začal vytvářet prototyp webového crawleru a zároveň jsem se učil základy jazyka Golang a brzy jsem měl něco, co jsem mohl ukázat technickému řediteli společnosti WeglotRémymu. 

Nebylo to nic moc, jednoduchý program, který vzal jako vstupní adresu URL a začal procházet webové stránky, přičemž navštívil všechny odkazy na stejné doméně, které našel, ale byl rychlý a efektivní.

Po rychlé ukázce byl Rémy nadšený poskytnutým řešením a potřebným časem na výzkum a vývoj, aby dokončil POC (proof of concept) a poté přemýšlel o tom, jak bychom mohli řešení hostovat pro budoucí produkční využití.

POC
Pozdější a sofistikovanější verze POC, kterou jsem předvedl Remymu.

Jako softwarový inženýr mám skvělý pocit, když na něčem pracuji sám a pak dostanu čas na plný vývoj svého produktu. Je to skvělý pocit uznání a motivovalo mě to po celou dobu, dokud jsme neměli produkt připravený k výrobě(což bylo ještě hodně daleko).

Problém hostingu

Vedle dokončování bota, který ještě potřeboval funkci generování obsahu a další práci na zohlednění rozdílů mezi různými CMS a integracemi, jsem začal přemýšlet o tom, jak bychom mohli bota hostovat a zpřístupnit našim uživatelům.

Nejprve mě napadlo použít klasické a osvědčené řešení: roztočit výpočetní instanci na AWS a vystavit bota za webovým serverem. Zdálo se to jako dobrý nápad, ale čím více jsem o tom přemýšlel, tím více jsem se obával několika problémů.

Za prvé, neměl jsem tušení o poplatku, který by server musel přijmout, a o tom, kolik uživatelů by tuto funkci používalo současně. Co když je zajištěná kapacita dostatečná, ale najednou se objeví mnoho uživatelů, kteří procházejí různé velmi rozsáhlé webové stránky najednou?

Protože jsem neměl žádné předchozí zkušenosti s hostováním programu Go, bylo těžké určit, jaké prostředky (procesor, paměť RAM...) budou stačit k zajištění skvělého uživatelského prostředí.

Navíc jsem měl pocit, že klasický "always up" webový server není nejefektivnějším řešením. Lidé by své webové stránky neprohledávali neustále: jakmile jednou importujete adresy URL a vygenerujete obsah, nepředpokládá se, že byste bota používali denně, i když často publikujete nový/aktualizovaný obsah.

Když jsem o tom přemýšlel, začalo mi to připadat jako dokonalý případ použití pro bezserverový hosting.

Pro ty, kterým před několika lety unikl trend serverless, v rychlosti shrnu, jak to funguje:

  • Navzdory názvu serverless kód stále běží na serveru.
  • Na rozdíl od serveru, který je stále spuštěný a čeká na připojení, bezserverový kód běží na vyžádání, když je bezserverový kód spuštěn, poskytovatel cloudu poskytne a přidělí určité zdroje pro běh kódu.

Tento model hostingu má hned 2 hlavní výhody:

  • Vývojáři nemusí spravovat infrastrukturu, vše zajišťuje poskytovatel. To znamená, že se nemusíte starat o zabezpečení nebo konfiguraci serveru.
  • A co je nejdůležitější, je škálovatelný už od návrhu! 

Vzpomínáte si, jak jsem říkal, že je těžké předvídat, jaké prostředky bude server potřebovat pro provoz bota? No, teď už se tím nemusíte zabývat, pro každý požadavek se vytvoří nový bezstavový izolovaný kontejner, ve kterém poběží váš kód, nehrozí, že by byla překročena kapacita serveru, každý požadavek dostane svůj vlastní kontejner, ve kterém poběží.

Takže v nejlepším z možných světů je všechno v nejlepším pořádku? Tedy téměř!

V roce 2020 byl bezserverový výpočet omezen na 5 minut (alespoň pro AWS, s bezserverovým hostingem na Google Cloud Platform nebo Microsoft Azure nemám zkušenosti). Dává to smysl, protože tento model hostingu byl navržen pro krátké úlohy, jako je například generování pdf nebo ořezávání obrázků. 

V našem případě však byla pětiminutová doba trvání těžkým problémem. Zatímco na prohledání malého webu s rychlou odezvou je to více než dost, u velkých webů e-shopů, které mohou mít klidně desítky tisíc stránek a jejichž odezva je někdy trochu pomalejší, by zcela jistě narazil na limit před dokončením úkolu.

Už jsem se chtěl vzdát serverless, když AWS na začátku roku 2020 oznámilo, že zvýší limit 5 minut na 15 minut! 

Bohužel, jak už to u AWS bývá, při oznámení nových funkcí neposkytují příliš informací o nich, časový limit byl prodloužen, ale nebylo vysvětleno, jak jej získat.

Ušetřím vás mnoha pokusů, omylů a výzkumů, které jsem dělal, abych zjistil, jak prodloužit limit na 15 minut, ale ujišťuji vás, že to nebylo snadné 🙂

Limit 5 minut byl ve skutečnosti limit vynucený na úrovni infrastruktury, AWS nebude udržovat spojení HTTP déle než 5 minut mezi svými různými službami, řešením bylo jednoduše nespustit bezserverový kód pomocí volání HTTP, existuje mnoho jiných způsobů, v našem případě jsme nastavili spouštění pomocí SQS: služba AWS pro řazení zpráv do fronty.

Sdělování výsledků

Po vyřešení problému s hostingem zbývalo dokončit ještě jeden úkol, než jsme mohli skončit. 

Zatím jsme měli funkčního bota, hostovaného škálovatelným a nákladově efektivním způsobem, poslední věc, kterou jsme potřebovali, bylo odeslat data vytvořená botem zpět uživatelům.

Protože jsem chtěl, aby funkce byla co nejvíce interaktivní, rozhodl jsem se pro komunikaci v reálném čase mezi botem a řídicím panelem Weglot .

Reálný čas není pro tento druh funkce povinný, vždy se můžete spokojit s jednodušším řešením, jako je dlouhé dotazování, ale chtěl jsem mít jistotu, že naši uživatelé dostanou zpětnou vazbu, jakmile crawler začne pracovat, a buďme upřímní, byl to také způsob, jak nechat bota zazářit a ukázat jeho potenciál 🙂

Protože jsme tehdy neměli nic, co by zvládalo komunikaci v reálném čase (neměli jsme pro to využití), rozhodli jsme se pro osvědčené řešení, napsali jsme jednoduchý websocketový server v nodejs a hostovali ho na instanci EC2 AWS.

Po několika pracích na botovi, jejichž cílem bylo implementovat komunikaci se serverem websocket a automatizovat nasazení, jsme byli konečně připraveni přejít k testování před uvolněním do produkce.

To, co začalo jako vedlejší projekt, se nakonec dostalo na palubní desku. 

Psaní crawleru a řešení četných problémů, na které jsem narazil, mě velmi bavilo. Nakonec jsem se toho také hodně naučil: nový programovací jazyk a nové dovednosti v ekosystému AWS.

Go je určitě jazyk, který budu používat znovu, opravdu se hodí pro síťové úlohy a kooperativní programování. Je to také velmi dobrý jazyk pro spojení s bezserverovým výpočtem díky své nízké paměťové náročnosti ve srovnání s jazyky, jako je Js, PHP nebo Python.

Protože nám bot otevřel nové perspektivy, máme několik plánů do budoucna. Plánujeme přepsat náš nástroj pro počítání slov, aby byl efektivnější a výkonnější, mohli bychom ho také použít k zahřívání mezipaměti (naplnit ji daty).

Doufám, že se vám tento pohled na techniku Weglotlíbil stejně jako mně psaní tohoto článku, a neváhejte si bota vyzkoušet sami!

ikona směru
Objevte Weglot

Přidejte se k více než 110 000 značkám, které už překládají své weby s Weglotem

Přeložte svůj web okamžitě s pomocí AI, doladíte ho lidskými úpravami a spustíte ho během několika minut.

V tomto článku se podíváme na:
Ikona rakety

Jste připraveni začít?

Nejlepší způsob, jak pochopit sílu Weglot vyzkoušet si ho na vlastní kůži. Vyzkoušejte ho zdarma a bez jakýchkoli závazků.

Nejlepší způsob, jak pochopit sílu Weglot vyzkoušet si ho na vlastní kůži. Vyzkoušejte ho zdarma a bez jakýchkoli závazků.

Pokud ještě nejste připraveni propojit svůj web, je k dispozici demo webová stránka ve vašem ovládacím panelu.

Přečtěte si články, které by se vám mohly líbit

Nic nebylo nalezeno.
Ikona FAQ

Časté dotazy

Nic nebylo nalezeno.

Modrá šipka

Modrá šipka

Modrá šipka