Szukasz najlepszych programistów Golang? Znajdziesz ich w kilka kliknięć.

Golang w aplikacjach webowych: kiedy i dlaczego warto go rozważyć?

11 maj 20216 min czytania

Dawid Karczewski

Senior full stack developer i CTO w Ideamotive.

Golang w aplikacjach webowych

W 2023 roku mnogość języków programowania, których można się uczyć i używać w projektach, potrafi przytłoczyć. Pewnie dobrze znasz cechy takich języków jak Java, Python, C#, itd. Dziś poznamy trochę mniej popularny i nowocześniejszy język - Go. 

 

W ankiecie Stackoverflow Go jest wskazywany jako 5. najbardziej lubiany i 3. najbardziej pożądany język programowania.

go-stack-overflow-most-loved

 

Go, często nazywany Golangiem dla ułatwienia wyszukiwania w sieci, to statycznie typowany, kompilowany język programowania zaprojektowany w Google przez Roberta Griesemera, Roba Pike'a i Kena Thompsona. Pierwsze wydanie ukazało się w 2007 roku. Język słynie z prostoty i wydajności - zarówno w składni, jak i w wykonaniu.

 

Go mocno wspiera programowanie współbieżne, przez co jest popularnym wyborem w nowoczesnych aplikacjach wymagających wysokiej wydajności: w programowaniu sieciowym, big data, uczeniu maszynowym i aplikacjach serwerowych.

 

Składnia Go przypomina C, ale język ma bezpieczeństwo pamięci, garbage collection, typowanie strukturalne i współbieżność w stylu CSP (Communicating Sequential Processes). Ma też solidną bibliotekę standardową z szerokim zestawem narzędzi i wsparciem dla aplikacji webowych, obsługi plików, testów i wielu innych rzeczy.

 

Go uchodzi też za jeden z najlepiej płatnych języków - programiści pracujący w nim zarabiają średnio 140 tys. dolarów rocznie.

 

Zostań z nami i dowiedz się, czym jest Go/Golang, czy nadaje się do aplikacji webowych i jakie jest 5 najpopularniejszych frameworków webowych w Golangu. 

Czym jest Go/Golang?

Go to statycznie typowany, kompilowany język programowania. Jego domena to golang.org i dlatego część osób mówi na niego Golang. 

 

Język pojawił się po raz pierwszy w 2009 roku, a stworzyło go Google. Roberta Griesemra, Roba Pike'a i Kena Thompsona połączyła niechęć do C++ - próbowali zaprojektować język, który weźmie przydatne właściwości innych języków, ale nie ich wady. 

 

Go łączy zalety takich języków jak C (typowanie statyczne i czas wykonania), Python i JavaScript (nieskomplikowana składnia). 

 

W 12 lat Go przegonił popularnością Ruby i Kotlina i stał się jednym z najbardziej lubianych i pożądanych języków w środowisku programistów - wynika z StackOverflow Developer Survey

 

Python_ The Definitive Business Guide

Czy Golanga można używać do tworzenia stron i aplikacji webowych?

Dyskusja o Golangu w aplikacjach webowych zdaje się nie mieć końca. Są programiści webowi którzy wierzą w wyższość Golanga w backendzie, i tacy, którzy polegają na „klasycznych” językach. Znajdziesz nawet programistów budujących swoje frontendy w Go, choć warto zauważyć, że to raczej frontend „po stronie serwera”.

 

Ogólnie jednak Go zdecydowanie nadaje się do aplikacji webowych. Jak każdy język ma jednak swoje plusy i minusy. Przyjrzyjmy się im, żeby odpowiedzieć na to pytanie czymś więcej niż tak lub nie.

 

Zalety i wady używania Go w aplikacjach webowych

Zalety Golanga w aplikacjach webowych

Łatwy do nauki

Składnia Go jest bardzo prosta, zwłaszcza jeśli masz za sobą C lub Javę. Twórcy języka pochodzą z Google, gdzie wielu programistów musiało pracować na tym samym kodzie. Postanowili więc stworzyć składnię możliwie prostą i czytelną, tak by inni programiści też rozumieli kod. Fragmenty kodu są przy tym dość niezależne - zmiana w jednej sekcji nie wpływa na drugą.

Świetna wydajność 

Golang jest szybki, bo kompiluje się do kodu natywnego i jest statycznie typowany. Sama kompilacja też jest szybka. Programiści twierdzą, że jest szybszy niż Python i tak szybki jak C++. 

Framework webowy nie jest potrzebny

Wielu z tych, którzy twierdzą, że Go nie nadaje się do aplikacji webowych, mówi, że język nie opiera się na żadnych dużych frameworkach. To w gruncie rzeczy nie problem. Go ma świetną bibliotekę standardową: czystą, spójną i łatwą w użyciu. Co więcej, nie musisz prowadzić długich poszukiwań odpowiedniego frameworka. 

Dobry pakiet net/http

Pakiet net/http jest kluczowy przy aplikacjach webowych i znajdziesz go w bibliotece standardowej Go. Go oferuje 3 żądania http: get, post i head. Tworząc http. Client i przekazując wartość do Timeout, możesz tworzyć kolejne opcje i żądania. 

Współbieżność

Go dzieli duże programy na małe zadania i pozwala im działać jednocześnie dzięki gorutynom i kanałom. Komputer wykonuje więc zadania dużo szybciej i mniej czasu spędza bezczynnie. 

 

Golang/Go jest więc łatwy do nauki i czytania, współbieżny dzięki gorutynom i kanałom, szybszy od wielu innych popularnych języków, ma świetną bibliotekę standardową i oferuje pakiet net/http do aplikacji webowych. 

Wady Go w aplikacjach webowych

Brak możliwości ponownego użycia

Nie użyjesz ponownie tego samego kodu dla tych samych funkcji na zbiorze różnych typów. W efekcie napiszesz więcej kodu i spędzisz więcej czasu nad aplikacją webową. Wiadomo też, że dłuższy kod trudniej utrzymać. Jeśli szukasz narzędzi, które podniosą Twoją produktywność, znajdziesz je tutaj

Młody język

Golang uchodzi za bardzo młody, zwłaszcza w porównaniu z Javą czy Pythonem. Nie ma więc jeszcze dużej społeczności programistów webowych Go (choć stale rośnie), lepsze biblioteki dopiero powstaną, a książki dopiero zostaną napisane. 

Ograniczenia wynikające z prostoty języka

Jego zaleta jest jednocześnie jego wadą. Go jest tak prosty, że bywa uznawany za powierzchowny. Przez to ma sporo ograniczeń i zjawisko zajmowania się niskopoziomowymi rzeczami w języku wysokiego poziomu. 

 

Podsumowując: język wymaga więcej kodu, wciąż się rozwija i ma ograniczone zastosowania oraz możliwości, zwłaszcza gdy chodzi o Golanga w backendzie. 

Jakie rozwiązania dobrze wychodzą w Go?

Mimo całej krytyki coraz więcej firm wybiera aplikacje webowe w Golangu, gdy chodzi o następujące typy projektów: 

Usługi chmurowe

Go jest bardzo skalowalny, współbieżny i dostarcza idiomatyczne API. Google - co oczywiste - używa Go w swoich usługach chmurowych. Golanga wykorzystały też Dropbox, Terraform i Docker. 

Media społecznościowe

Platformy społecznościowe zwykle mają duże obciążenia, a Go daje świetną wydajność i współbieżność. Dlatego YouTube, SoundCloud i Netflix zdecydowali się zatrudnić programistów webowych Go do swoich projektów.

Usługi na żądanie

Usługi takie jak Uber muszą zapewnić szybkie przetwarzanie map i obsłużyć ogromne ilości danych. Golang daje świetną wydajność i obsługuje tysiące żądań w ciągu sekundy. 

Najpopularniejsze frameworki webowe w Golangu

Ogólnie, jak wspomnieliśmy, framework w Golangu nie jest Ci potrzebny. Jeśli jednak chcesz przyspieszyć pracę albo potrzebujesz dodatkowej pomocy, język wspiera kilka świetnych frameworków webowych. Należą do nich:

Gin

Gin to bardzo prosty framework, stworzony do kluczowych zadań w aplikacjach webowych. Jest szybki, potrafi wyłapać awarie i paniki oraz się po nich podnieść, ma routing (możesz więc zbudować wygląd aplikacji webowej), zbiera błędy z żądań HTTP i zajmuje się renderowaniem. 

 

Gin ma obszerną dokumentację na GitHubie, która pomoże początkującym. Nie sprawdzi się jednak w dużych aplikacjach backendowych ani rozwiązaniach klasy enterprise. 

Beego

Beego ma bardziej specyficzne rzeczy, takie jak interfejsy i osadzanie struktur. Framework automatyzuje testowanie, pakowanie i wdrażanie, przez co budowa aplikacji webowej idzie szybciej. Możesz też monitorować QPS, zużycie pamięci i CPU oraz status gorutyn, co daje programiście pełną kontrolę nad aplikacją. Co więcej, Beego ma własny Object-Relationship Map (ORM), który mocno upraszcza organizację bazy danych oprogramowania.

 

Przez rozbudowane funkcje i złożony rdzeń może nie być odpowiedni dla początkujących, ale zaskoczy użytkowników Django taką samą linią poleceń. 

Kit

Kit skupia się głównie na budowaniu mikroserwisów i tworzeniu mocnych interfejsów. Programiści mogą wybrać bazy danych, etapy i komponenty, które lubią najbardziej. Framework jest przy tym lekki, więc łatwo się go używa. 

 

Korzystając z Kita, możesz skupić się na biznesowej stronie programowania, bo framework zaprojektowano pod interoperacyjność. 

 

Jedną z wad Kita jest duży narzut przy dodawaniu API do usługi, wynikający z intensywnego użycia interfejsów.

Echo

Echo to kolejny minimalistyczny framework, który mocno rozszerza możliwości Go. Ma rozszerzalne middleware, obsługuje centralnie błędy HTTP, renderuje, pomaga budować RESTful API i zawiera certyfikaty TLS. 

Framework Echo utrzymuje jeden programista, więc jego kod rzadko jest aktualizowany, co bywa sporą wadą.

Fasthttp

Jest tak prosto, jak brzmi: pakiet http/net, tylko szybszy. Http musi za każdym razem alokować pamięć dla gorutyny, a fasthttp ma model puli workerów z zerową alokacją. Fasthttp świetnie radzi sobie z ogromnymi ilościami danych - bez trudu obsługuje ponad 100 tys. qps i ponad milion równoczesnych połączeń keep-alive na współczesnym sprzęcie.

 

Jedyną wadą Fasthttp jest brak zgodności z Beego i HTTP/2. 

Martini

 

Martini jest wydajny i oszczędny, a przy tym mocno wyposażony do szybkiego pisania modułowych aplikacji i usług webowych w Golangu. Chwali się imponującym i łatwym do zintegrowania wsparciem zewnętrznym. Martini jest w grze od dłuższego czasu - ma sporo dokumentacji i dużą bazę wdrożeń.

 

Wybierając framework Golanga do swojego projektu, warto rozumieć cechy, zalety i możliwe ograniczenia każdego z nich. W tym artykule omówiliśmy 5 najpopularniejszych, ale Golang oferuje też wiele innych opcji, takich jak Gorilla, Gocraft czy Buffalo. Śmiało sprawdź i je, by podjąć dobrze poinformowaną decyzję.

 

Jeśli nie chcesz zagłębiać się w cechy każdego frameworka, oto tabela TL;DR z zaletami i wadami każdego z nich:

 

Porównanie frameworków Golanga

Podsumowanie 

Go jest w świecie programowania stosunkowo nowy, ale udowodnił, że jest dobrym wyborem do aplikacji webowych, obsługując Google, YouTube, Netflix i Ubera. 

Jest szybki, łatwy, wspiera współbieżność i ma świetną bibliotekę, która nie wymaga dodatkowych frameworków. Jednocześnie część programistów uważa go za powierzchowny i ograniczony oraz irytuje się długim kodem bez generyków. 

 

Golang w aplikacjach webowych to idealne rozwiązanie dla usług chmurowych, platform społecznościowych i usług na żądanie. 

 

Jeśli chcesz ułatwić sobie pracę albo rozszerzyć możliwości Go, sięgnij po frameworki takie jak Gin, Beego, Kit, Echo, Martini czy fasthttp. 

 

Jeśli wciąż nie masz pewności, czy Go pasuje do Twojego projektu, albo potrzebujesz dedykowanych programistów Golanga do zespołu, śmiało się z nami skontaktuj!

Dawid Karczewski

Dawid jest full stack developerem. Tworzy aplikacje w Ruby on Rails i React Native od pierwszego pomysłu aż po wdrożenie. Buduje dla naszych klientów rozwiązania, które pomagają im rosnąć.

Zobacz wszystkie wpisy autora
CEE IT 2022

Outsourcing i offshoring IT w Europie Środkowo-Wschodniej: raport 2022

Białoruś • Polska • Rumunia • Ukraina

Czytaj teraz
Newsletter 9-1
Newsletter Ideamotive
Twój dwutygodniowy przegląd najgorętszych newsów technologicznych

Szukasz ekspertów od Go do swojego zespołu?

W naszej sieci talentów czekają dziesiątki zweryfikowanych specjalistów Golang.