Kompilovaný multiparadigmatický jazyk

Go

Golang je kompilovaný multiparadigmatický jazyk. Protože program běží přímo z binárního kódu, je ve výsledku znatelně rychlejší než jazyky interpretované, jako je třeba JavaScript. I proto je mnohem vhodnější pro provoz náročných aplikací, jako je ta vaše.

Co v Goučku píšeme

Go píšeme většinu backendové části vašich webů a aplikací. To je například zpracování objednávky na e-shopu nebo automatické kontrolování uhrazených faktur z vašeho interního systému. I přesto, že navenek nejsou tyto části aplikace vidět, pro fungování produktu jsou velmi důležité.

Potrpíme si na rychlosti, efektivitě a kvalitě kódu. U složitějších projektů využíváme microservices architekturu, díky které celý backend navíc získává dlouhou životnost.

65 %

Až o tolik rychlejší byl jazyk Go v našem jednoduchém benchmarkingu, kdy jsme prováděli srovnání s Node.js backendem.

Microservices architektura

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,y na kterých 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. My to ale zvládáme.

Srovnali jsme backend v Go a Node.js

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 %!