Noltio logo

Go. Golang. Čistokrevný backend aplikací.

Co je jazyk Go.

Jazyk Go, označovaný také Golang – abyste na internetu našli hledané informace snáze – je kompilovaný, řekněme středněúrovňový, jazyk. Protože je kompilovaný, ve výsledku program běží přímo z binárního souboru a je znatelně rychlejší než jazyky interpretované, jako je JavaScript.

Co v jazyce Go píšeme.

V Go píšeme backend všech aplikací – webových, desktopových i mobilních. Jednotlivé služby (microservices) běží na serveru a frontend aplikace se k nim vzdáleně připojuje.

Frontend samozřejmě nezmizí. Víme ale, že pokud frontend a backend oddělíme, usnadníme tím budoucí vývoj nových funkcí, zvýšíme rychlost a zlepšíme uživatelský zážitek.

V Go píšeme backend. Využíváme přitom architekturu microservices (chcete-li česky, mikroslužeb). Frontend zase stavíme na poměrně nové technologii Svelte.

Architektura microservices.

Architektura spočívá v rozdělení aplikace a prováděných akcí na několik samostatných plně autonomních částí. Umožňuje rychlejší zpracování požadavků a nižší režii při dalším vývoji. Každá tato autonomní část je jedna microservice.

Každou microservice můžeme dále vyvíjet bez jakéhokoliv vlivu na zbytek kódu aplikace. Novou verzi jsme pak schopni nasadit bez dopadu na ostatní mikroslužby.

Tato architektura vývoje aplikace jí zajišťuje zejména vyšší stabilitu a rychlost, což ocení koncový uživatel, nebo nižší režii při vývoji, z níž budou nadšeni zase vývojáři.

Výhody a nevýhody.

Rychlost. Aplikace i vývoj jsou rychlejší. Umožňuje to jak samotné využití jazyka Go, tak použitá architektura aplikace.

Dlouhá životnost. Každá mikroslužba dělá jen malé množství úkonů, ale precizně. Mohou být využívány i po drastických změnách v aplikaci. Na podobných principech stojí i Unix.

Nezávislost. Jednotlivé microservices jsou na sobě nezávislé, pouze si vzájemně předávají, kdo má co zpracovat. Kromě toho každá může být postavena na jiném jazyce (tedy nejen na Go).

Vyšší síťový provoz. Protože mezi sebou mikroslužby neustále komunikují, zvyšuje se tok dat po síti, na což musí být server, na kterém budou služby běžet, připraven.

Komplikovanější sledování. Protože nejde o monolit, ale o spoustu autonomních malých služeb, je náročnější sledovat jejich aktuální stav. I s tím je tedy třeba počítat.

Srovnání Go a Node.js.

Pokud vás zajímá reálné srovnání dvou identických programů (REST API) napsaných v Node.js a Go, jedno takové jsme vytvořili. Benchmarking si můžete prohlédnout v tomto repozitáři.

Výsledek je takový, že ve třech případech ze čtyř byl jazyk Go mírně rychlejší. Při requestu, který vracel dohromady 20 000 záznamů, byl Go rychlejší dokonce o 65 %!