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

Budowa mikroserwisu w Go/Golang: przewodnik biznesowy

2 mar 202213 min czytania

Dawid Karczewski

Senior full stack developer i CTO w Ideamotive.

Building microservices in Go in 2023

Patrząc z perspektywy 2023 roku: raport Microservices Adoption opublikowany przez O'Reilly w 2020 roku podkreślił rosnącą popularność mikroserwisów i sukcesy firm, które wdrożyły tę architekturę. To obszerne badanie, w którym wzięło udział 1500 osób - inżynierów oprogramowania, architektów technicznych i decydentów - pokazało, że 77% przedsiębiorstw sięgnęło po mikroserwisy. Co więcej, imponujące 92% z nich deklarowało wysokie zadowolenie z tej decyzji, co pokazuje potencjał mikroserwisów w usprawnianiu wytwarzania i wdrażania oprogramowania.

 

Co więcej, mikroserwisy stają się jedną z wiodących architektur oprogramowania dzięki skalowalności. Według tego raportuniemal 85% doświadczonych inżynierów i menedżerów uważa, że mikroserwisy staną się standardem w back-endzie i złożonych systemach.

 

W 2023 roku trend na mikroserwisy kwitnie. Ale czy mikroserwisy są dobre dla Twojego projektu? Czy warto zwrócić się w tej sprawie do programistów Go/Golang ?

 

Odpowiedź na te pytania da wyjaśnienie, czym są mikroserwisy, czym różnią się od architektury monolitycznej i jak może Ci w tym pomóc język programowania Google'a.

 

Zanurzmy się więc w temat!

Mikroserwis: podstawy

Czym jest architektura mikroserwisowa?

Architektura mikroserwisowa to podejście do wytwarzania oprogramowania, w którym pojedynczą aplikację rozbijasz na wiele mniejszych usług, z których każda działa we własnym procesie i komunikuje się lekkimi mechanizmami. 

 

Mikroserwisy projektuje się z myślą o możliwościach biznesowych i można je wdrażać niezależnie, automatycznym mechanizmem wdrożeniowym. Architektura mikroserwisów wymaga minimalnego zarządzania usługami zbudowanymi w różnych językach programowania ​​i z użyciem różnych technologii składowania danych.

Mikroserwisy a architektura monolityczna

Building a Microservice in Go Business Guide - Microservice Architecture

 

Mikroserwisy, czyli architektura mikroserwisowa, to podejście do wytwarzania oprogramowania, które pozwala zbudować aplikację jako zbiór małych usług w obrębie domeny biznesowej. Innymi słowy, oprogramowanie składa się z małych, niezależnych usług komunikujących się przez dobrze zdefiniowane interfejsy programistyczne (API).

 

Building a Microservice in Go Business Guide - Monolithic Architecture

 

Architektura monolityczna to dokładne przeciwieństwo mikroserwisów. W tym podejściu całe oprogramowanie jest jednym kawałkiem, zaprojektowanym jako samodzielna całość. Wszystkie komponenty programu monolitycznego są ze sobą powiązane i zależne.

 

 

Architektura monolityczna to powszechna metoda budowania aplikacji. Stosunkowo ułatwia wdrożenie, rozwój i testowanie oprogramowania. Jeśli więc wybierzesz tę metodę, dostaniesz gotowy produkt szybciej i taniej. 

 

Architektura monolityczna jest dobrym wyborem przy tworzeniu koncepcji eksperymentalnej albo dla firm na etapie zakładania.

 

Gdy jednak aplikacja potrzebuje większej skalowalności, lepiej sięgnąć po architekturę mikroserwisową. Przy aplikacji monolitycznej, żeby wprowadzić drobną zmianę, musisz modyfikować cały stos. To czasochłonne, trudne i ryzykowne, bo jeden punkt awarii może wyłożyć cały program. 

 

Architektura mikroserwisowa oznacza możliwość samodzielnej zmiany dowolnej funkcji - i uniknięcia wszystkich tych ryzyk oraz dodatkowych kosztów.

Co czyni je tak popularnymi?

Netflix wykorzystuje mikroserwisy, żeby dostarczać swoją popularną usługę streamingu wideo na całym świecie. Mikroserwisów używają też globalne firmy takie jak Amazon, Apple czy Uber. Trudno więc powiedzieć, że o tym typie architektury mówi się tylko w wąskich kręgach.

 

Zobaczmy, jakie możliwości biznesowe czynią rozwiązania mikroserwisowe tak popularnymi:

Kompatybilność

Mikroserwisy można tworzyć w różnych językach programowania, frameworkach, a nawet na różnym sprzęcie, bez utraty interoperacyjności.

Elastyczność

Architektura mikroserwisowa daje elastyczność oprogramowania, co oznacza, że zawsze możesz rozszerzyć rozwiązanie o nowe funkcje i wdrażać nowe usługi niezależnie od istniejących.

Prostota

Mikroserwisy są proste, bo organizuje się je wokół możliwości biznesowych. Ponieważ każda usługa to osobny blok kodu z własną bazą danych, testowanie i rozwój stają się łatwiejsze i zajmują mniej czasu.

Niezawodność

Jeśli jedna usługa przestanie działać (przez utrzymanie albo awarię), jej chwilowa niedostępność nie wpłynie na działanie reszty systemu.

Wybór właściwego stosu technologicznego

Gdy już wybierzesz mikroserwisy do swojego projektu, kolejnym krokiem jest wybór technologii, która pozwoli wycisnąć z tej architektury maksimum.

Kryteria wyboru technologii do mikroserwisów

Jak już wspomnieliśmy, do tworzenia mikroserwisów można użyć różnych frameworków i języków programowania. Sam proces zależy jednak w pełni od Twoich wymagań, które decydują o tym, co sprawdzi się najlepiej. Wybór języka programowania to jeden z najważniejszych kroków w całym procesie. 

 

W teorii nada się każdy język programowania. Żeby jednak uniknąć pewnych problemów i wycisnąć z mikroserwisów maksimum korzyści, technologia musi spełniać następujące wymagania:

Wysoka wydajność przetwarzania

Rozwiązanie mikroserwisowe musi być jak najszybsze w obsłudze baz danych i routingu.

Minimalna liczba bibliotek zewnętrznych. Większość z nich ma licencje nieodpowiednie dla rozwiązań korporacyjnych. Poza tym, choć dają solidną funkcjonalność, ich użycie bywa niebezpieczne z punktu widzenia cyberbezpieczeństwa.

Kultura automatyzacji

Procesy wytwarzania i testowania powinny być zautomatyzowane w możliwie największym stopniu, żeby skrócić czas wdrożenia i zmniejszyć ryzyko błędu człowieka.

Decentralizacja komponentów

Każda usługa powinna być zdecentralizowana, żeby przyspieszyć wytwarzanie oprogramowania i uprościć utrzymanie.

Łatwość znalezienia wsparcia

System należy zaprojektować tak, żeby łatwo było znaleźć ludzi zdolnych go utrzymywać.

Utrzymanie kultury ciągłej integracji i wdrażania

Pozwala to wdrażać i aktualizować produkt tak szybko, jak to możliwe, przy minimalnym koszcie. Kultura CI/CD przyspiesza i ułatwia też sam rozwój. 

 

Werdykt: Python, Java, JavaScript, .NET i Go spełniają te kryteria, bo każdy z nich ma dobrą czytelność i interoperacyjność oraz oferuje frameworki do budowy architektur mikroserwisowych. Coraz więcej firm wybiera jednak tworzenie aplikacji webowych w Golangu zamiast innych opcji ​​przy budowie mikroserwisów.

 

Na przykład The Economist wybrał język Go do tworzenia mikroserwisów przy przejściu z monolitu na architekturę mikroserwisową (głównie ze względu na doskonałą spójność z architekturą platformy). Poza tym składnia Go jest stosunkowo prosta, więc łatwo było od razu zacząć pisać działający kod. Szybkie zwycięstwo zespołu w okresie przejściowym.

Golang i mikroserwisy - małżeństwo idealne

Nie ma lepszego związku niż Go i mikroserwisy. Język Golang spełnia i przewyższa wszystkie wymagania opisane wyżej. Oto kilka kolejnych powodów, dla których Twój biznes skorzysta na budowaniu mikroserwisów w Golangu:

Wysoka czytelność i łatwość utrzymania

Go to prosty język, którego łatwo się nauczyć, i to być może najlepsza cecha języka programowania z punktu widzenia procesów biznesowych. Składnia Golanga jest stosunkowo skromna i od dawna używana bez większych zmian. Ponieważ nie trzeba uczyć się nowych paradygmatów ani składni, kod pisany w Go jest przejrzysty i łatwy do zrozumienia.

 

Czyni to Go idealnym wyborem do backendów, mikroserwisów, systemów chmurowych i nie tylko. Jego cechy pomagają też łagodzić wady mikroserwisów: 

  • pisanie warstw komunikacji, 
  • obsługa błędów usług, 
  • praca z architekturą rozproszoną.

 

Architektura mikroserwisowa w Golangu sprawia, że programiści nie spędzają mnóstwa czasu na czytaniu cudzego kodu i szybciej wchodzą w projekt. Nawet jeśli musisz zmienić zespół, wciąż bez problemu utrzymasz i zaktualizujesz swoje oprogramowanie.

Wydajność i szybkość

Golang kompiluje się szybciej niż większość innych języków, co oszczędza czas programistów i pieniądze właścicieli firm. Oto kilka powodów:

  • Ma szybszy kompilator niż inne języki ​​takie jak C czy C++.
  • Skierowane grafy acykliczne i brak cykli pozwalają kompilować pakiety osobno i równolegle.
  • Plik obiektowy skompilowanego pakietu Go zawiera informacje o samym pakiecie i jego zależnościach. Żeby skompilować pakiet, kompilator musi przeczytać plik obiektowy każdego importu, ale nie musi sprawdzać żadnych innych plików.

 

Wydajność Go również jest znakomita. Oto kilka testów pokazujących, że w wielu przypadkach Golang wypada lepiej niż popularne języki programowania

 

Building a Microservice in Go Business Guide - Python vs C#

 

Źródło: Benchmarks Game

Go dopełnia architekturę mikroserwisową 

dzięki ścisłemu rozdzieleniu modułów. Promuje niezależne komponenty realizujące logikę biznesową zgodnie ze wzorcami projektowymi mikroserwisów. Co więcej, faktyczny rozmiar skompilowanych binariów Go wskazuje na pożądaną, niewielką konstrukcję samego mikroserwisu.

Go trzyma się prostoty

Promuje programowanie zdarzeniowe bez potrzeby dziedziczenia, callbacków, futures, promise'ów czy strategii, które często prowadzą do niepotrzebnie złożonej logiki. Dzięki zwięzłości mikroserwisy w Go nie wiążą się ze sobą przy pojedynczych zadaniach.

Go bierze to, co najlepsze ze świata programowania

Daje:

  1. wysoką wydajność kompilacji jak C/C++, 
  2. skuteczną równoległość jak Java, 
  3. czytelność jak Python. 

 

Ma swoje wady, ale mocne strony czynią go świetnym uzupełnieniem architektury opartej na mikroserwisach.

Niezależna zmiana

Każdy mikroserwis jest niezależny od pozostałych, jest hermetyczny. Możesz więc zmieniać i aktualizować każdy z nich zgodnie ze swoimi wymaganiami i poprawiać niezależnie. 

Wsparcie dla wielu technologii

Programiści mogą tworzyć każdy mikroserwis innymi narzędziami, bo nie wpłynie to na rozwój pozostałych. Podobnie każdy mikroserwis może mieć inną bazę danych. 

Elastyczność harmonogramu wydań

Ponieważ mikroserwisy w Golangu są od siebie niezależne, mogą mieć różne daty wydania. Nie są powiązane i mają elastyczne harmonogramy wydań.

Dostępność specjalistów i popularność

Ponad 16 000 programistów w badaniu HackerEarth Insights uznało Go za najpopularniejszy język do nauki w 2020 roku. Zarówno wśród studentów (29%), jak i doświadczonych programistów (32%) Go był wyraźnym zwycięzcą jako najbardziej poszukiwany język programowania.

 

Co więcej, społeczność Go może pochwalić się ogromną liczbą blogerów Go. Nic dziwnego, że sam Go i mikroserwisy w Golangu zyskują popularność równolegle. 

 

Bez wątpienia product ownerzy nie odczują w najbliższych latach braku programistów webowych Go.

 

Building a Microservice in Go Business Guide - popular technologies

Porównanie frameworków mikroserwisowych w Golangu 

Omówmy teraz frameworki, których możemy użyć do architektury mikroserwisowej. Weźmiemy pod uwagę następujące:

  1. Go Micro
  2. Zestaw przejściowy
  3. Gizmo
  4. Kite

Go micro

Go Micro to zdecydowanie najpopularniejszy framework RPC, jaki spotkaliśmy. To framework RPC z wtyczkami. Go Micro daje nam:

  • Odkrywanie usług. Aplikacje rejestrują się automatycznie w systemie odkrywania usług;
  • Równoważenie obciążenia. Zapewnia równoważenie po stronie klienta, co pomaga rozkładać żądania między instancje usług;
  • Komunikacja synchroniczna. Zapewnia warstwę transportową Req/Res;
  • Komunikacja asynchroniczna. Ma wbudowane mechanizmy publikowania i subskrypcji;
  • Kodowanie wiadomości. Kodowanie i dekodowanie na podstawie typu treści z nagłówka;
  • Pakiety klienta i serwera RPC. Korzystają z powyższych funkcji i dają dostęp do interfejsu używanego przy tworzeniu mikroserwisów w Golangu.

 

Architekturę Go Micro można przedstawić następująco - 

 

Building a Microservice in Go Business Guide - go micro

 

To trójwarstwowy stos:

  1. Pierwsza warstwa zawiera abstrakcję usługi. 
  2. Druga warstwa to model klient-serwer. Serwer składa się z bloków używanych przy pisaniu usługi, a klient daje programistom interfejs służący wyłącznie do wysyłania żądań do usług napisanych w modelu serwera. 
  3. Trzecia warstwa to wtyczki.

 

Wtyczki są następujących typów:

  • Broker (daje interfejs do brokera wiadomości w komunikacji asynchronicznej)
  • Codec (służy do szyfrowania i deszyfrowania wiadomości)
  • Registry (zapewnia wyszukiwanie usług)
  • Selector (zawiera abstrakcję równoważenia obciążenia utworzoną w rejestrze)
  • Transport (kanał do synchronicznej komunikacji req/res między usługami)

Daje też funkcję o nazwie Sidecar. Sidecar pozwala integrować usługi napisane w językach ​​innych niż Go. Zapewnia nam także kodowanie i dekodowanie gRPC, rejestrację usług i handlery HTTP.

Go kit

Go Kit to zestaw narzędzi do budowania mikroserwisów. W przeciwieństwie do Go Micro jest to biblioteka, którą importuje się jako pakiet. Zasady Go Kit są dość proste:

  • Brak stanu globalnego
  • Kompozycja deklaratywna
  • Jawne zależności
  • Interfejsy jako kontrakty
  • Domain-Driven Design

Go Kit daje pakiety do:

  • uwierzytelniania (BasicAuth i JWT)
  • transportu (HTTP, gRPC itd.)
  • logowania (interfejs do logowania strukturalnego w usługach)
  • metryk (CloudWatch, Statsd, Graphite i inne)
  • śledzenia (Zipkin i Opentracing)
  • odkrywania usług (Consul, Etcd, Eureka itd.)
  • bezpiecznika (implementacja Hystrix w Go)

Architektura usługi w Go Kit wygląda tak - 

 

Building a Microservice in Go Business Guide - Go kit

Gizmo

Gizmo to zestaw narzędzi mikroserwisowych od The New York Times. Daje pakiety do łączenia serwera i demonów pubsub. Zawiera następujące pakiety:

  • Server (oferuje dwie implementacje serwera: SimpleServer (przez HTTP) i RPCServer (przez gRPC))
  • Server/Kit (eksperymentalny pakiet oparty na Go Kit)
  • Configuration (zawiera funkcje do konfiguracji z plików JSON, blobów JSON w Consul k/v albo ze zmiennych środowiskowych)
  • Pubsub (daje wspólne interfejsy do publikowania i pobierania danych z kolejek)
  • Pubsub/pubsubtest (zawiera testowe implementacje interfejsów publishera i subskrybenta)
  • Web (daje funkcje do parsowania typów z żądań i ładunków)

 

Pakiet Pubsub daje interfejsy do pracy z następującymi kolejkami:

  • pubsub/aws: dla Amazon SNS/SQS
  • pubsub/gcp: dla Google Pubsub
  • pubsub/kafka: dla tematów Kafki
  • pubsub/http: do publikowania przez HTTP

Gizmo plasuje się gdzieś między Go Micro a Go Kit. Nie jest kompletną „czarną skrzynką” jak Go Micro. Jednocześnie nie jest tak surowy jak Go Kit. Daje komponenty wyższego poziomu, takie jak pakiety config i pubsub.

Kite

Kite to framework mikroserwisowy dla Golanga. Daje pakiety klienta i serwera RPC. Tworzone usługi rejestrują się automatycznie w systemie odkrywania usług Kontrol. Kontrol jest napisany w Kite i sam jest usługą Kite. Oznacza to, że mikroserwisy Kite dobrze działają we własnym środowisku. Jeśli musisz podłączyć mikroserwis Kite do innego systemu odkrywania usług, potrzebna będzie konfiguracja. 

Dlaczego firmy używają Golanga?

W zasadzie są dwa powody, dla których język programowania Google'a wykorzystują firmy różnej wielkości:

Zaprojektowany do przetwarzania wielordzeniowego

Golang powstał z myślą o chmurze obliczeniowej. Wykorzystuje równoległość i współbieżność, jakie daje nowoczesny sprzęt.

 

Z tym podejściem do równoległości pracuje się bardzo łatwo. W porównaniu z Pythonem czy Javą uruchomienie funkcji w gorutynie wymaga minimum kodu szablonowego.

 

Gorutyny i oparte na kanałach podejście do równoległości bardzo ułatwiają wykorzystanie wszystkich dostępnych rdzeni CPU i obsługę równoległego I/O bez komplikowania pracy.

Stworzony do dużych projektów

Z czasem na tych fundamentalnych systemach, bibliotekach i językach zbudowano nowe, złożone systemy. Zbyt często nie myśli się o ukrytych kosztach złożoności. Prawda jest taka, że kod czyta się znacznie częściej, niż się go pisze. Złożoność mocno obciąża tempo pracy zespołu.

 

Kod w Go jest bardzo prosty i łatwy do czytania. Ta prostota pozwala zespołom współpracować w sposób wcześniej niemożliwy.

Gdzie stosować mikroserwisy w Golangu

Platformy technologiczne

Platformy technologiczne dają wspólny zestaw funkcji, który przyspiesza tworzenie aplikacji, więc rozwiązania szybciej trafiają do firm. Często wymagają wysokiej skalowalności i niezawodności, a te Golang zapewnia w 100%.

Systemy rezerwacji online

System rezerwacji online pozwala zamawiać usługi i płacić za nie przez aplikacje webowe lub mobilne, co pozwala firmom skalować działalność. W codziennej pracy takie systemy wymagają najwyższej niezawodności, skalowalności i integracji z innymi systemami. Skoro Golang daje takie możliwości mikroserwisowe, dlaczego nie napisać w nim swojego kodu?

E-commerce

Startupy e-commerce, małe i średnie firmy oraz duże przedsiębiorstwa mierzą się z czasami ładowania stron, problemami ze skalowalnością i dostępnością serwisu, na przykład podczas dużych promocji. Golang jest szeroko stosowany do rozwiązywania tych problemów.

Golang w systemach obsługi płatności

Przy globalnej pracy 24/7 i ostrych SLA stabilność i automatyczne odzyskiwanie są koniecznością, bo każdy krok w potoku płatności wymaga możliwie najniższych opóźnień, jakie daje Golang.

Streaming muzyki i wideo

Protokoły takie jak HLS w Golangu ułatwiają zbudowanie usługi streamingowej, którą łatwo się instaluje i która daje najefektywniejszą wydajność. Obsługuje najczęściej używane formaty plików i kodowania. Dużą zaletą streamingu w tym języku jest szybkość, zwłaszcza przy transmisjach na żywo. Bez płynnego przejścia przy kodowaniu, dekodowaniu i pakowaniu obrazu i dźwięku transmisja na żywo nie jest możliwa. Go obsługuje wszystkie te procesy bezproblemowo, co daje widzowi wysoką jakość przy minimalnych przerwach.

Prawdziwe przykłady budowania mikroserwisów w Go

Building a Microservice in Go Business Guide - Dropbox

 

Dropbox wiele zawdzięcza Pythonowi - językowi, który pozwolił firmie szybko iterować i się rozwijać. Gdy jednak baza użytkowników urosła, zaczęto szukać sposobów na efektywniejsze skalowanie systemów. Doprowadziło to do przeniesienia krytycznych wydajnościowo backendów z Pythona do Go, żeby skorzystać z lepszego wsparcia dla współbieżności i szybszego wykonania.

 

To była ogromna praca - około 200 000 linii kodu Go - wykonana przez mały zespół inżynierów. Z powodzeniem przenieśli główne części naszej infrastruktury do Go. Zviad Metreveli wcześniej opisał szczegóły tego przedsięwzięcia w mikroserwisie Go w Dropboksie.

Ludzie bardzo szybko stają się produktywni w Go, nasza infrastruktura opiera się dziś na Go i wszystkie nowe rzeczy budujemy w Go.

Zviad Metreveli, Senior Lead Engineer, Dropbox.

Poza tym Dropbox udostępnił jako open source kilka bibliotek Golanga , które pomagają usprawnić buforowanie, standardowy interfejs błędów i nie tylko.

 

W 2022 roku Dropbox nadal rozbija monolityczną bazę kodu w Pythonie i zamienia ją w zarządzaną platformę bezserwerową, która zmniejszy zaciemnienie kodu i uwolni usługi oraz stojące za nimi zespoły inżynierskie od wzajemnego splątania. W tym celu aktualizuje architekturę - na przykład standaryzację gRPC i użycie transkodowania gRPC-HTTP w Envoyu. Zobacz ich wpis na blogu.

 

Building a Microservice in Go Business Guide - Uber

Choć Uber historycznie opierał się głównie na Node.js i Pythonie, Go staje się językiem pierwszego wyboru przy budowie wielu nowych usług Uber Engineering.

 

Uber napisał w Golangu ponad sto usług. Geobase to jedna z ostatnich usług Ubera napisanych w tym języku. Dopasowuje pasażerów do kierowców, dzieląc dopasowania według samochodów. W praktyce Golang napędza większość usług Ubera o wysokim RPS.

Patrząc wstecz, jesteśmy bardzo zadowoleni z decyzji, żeby się na to zdecydować i napisać naszą usługę w nowym języku.

— Kai Wei.

Najważniejsze punkty:

  • Wysoka produktywność programistów. Programiście C++, Javy czy Node.js zwykle wystarczy kilka dni na naukę Go, a kod łatwo się utrzymuje. (Dzięki typowaniu statycznemu koniec z domyślaniem się i przykrymi niespodziankami.)
  • Wysoka przepustowość i niskie opóźnienia. W naszym głównym centrum danych poza Chinami usługa obsługiwała szczytowe obciążenie 170 tys. żądań na sekundę przy 40 maszynach pracujących z 35% wykorzystania CPU w Nowym Jorku w 2015 roku. Czasy odpowiedzi wynosiły < 5 ms w 95. percentylu i < 50 ms w 99. percentylu.
  • Wyjątkowa niezawodność. Ta usługa ma 99,99% dostępności od uruchomienia. Jedyne przestoje wynikały z początkujących błędów programistycznych i wycieku deskryptorów plików w bibliotece zewnętrznej. Warto zaznaczyć, że nie zauważyliśmy żadnych problemów ze środowiskiem uruchomieniowym Go."

 

Źródło: How we created the highest request per second Uber Engineering service with Go.

 

Building a Microservice in Go Business Guide - Alibaba

Silnik kontenerowy PouchContainer grupy Alibaba jest napisany w Golangu. Potrafi pakować, dostarczać i uruchamiać dowolną aplikację. Daje aplikacjom lekkie środowisko uruchomieniowe z silną izolacją i minimalnym narzutem.

 

PouchContainer działał stabilnie na dziesiątkach tysięcy węzłów w Alibabie i pomógł płynnie obsłużyć wszystkie transakcje online podczas Dnia Singla 2017 na milionach kontenerów.

 

Building a Microservice in Go Business Guide - American Express

 

American Express znany jest przede wszystkim z kart kredytowych i obsługi płatności.

 

W 2016 roku zespoły platformy płatności i programów lojalnościowych jako jedne z pierwszych zaczęły oceniać Go. Skupiały się głównie na mikroserwisach, routingu transakcji i równoważeniu obciążenia, a potrzebowały unowocześnić architekturę.

Po pracy w Go większość naszych programistów nie chce wracać do innych języków. 

— Benjamin Cain, wiceprezes i główny inżynier, American Express

Żeby pomóc innym firmom ocenić, czy Go jest dla nich, opublikowali przykład użycia Go: American Express Uses Go for Payments & Rewards.

 

Źródło: Choosing Go at American Express

 

Building a Microservice in Go Business Guide - PayPal

PayPal był pionierem płatności online i pozostaje wiodącym procesorem płatności dla sklepów internetowych, serwisów aukcyjnych i wielu innych użytkowników komercyjnych na świecie.

 

PayPal zatrudnia dziś ponad 100 programistów Go. Choć Go może nigdy nie zastąpi Node.js w niektórych zastosowaniach, w PayPalu jest językiem pierwszej klasy.

Go daje kanały i podprogramy do rozwiązywania złożonych problemów; mogliśmy ustrukturyzować kod zgodnie z naszymi wymaganiami.

— Bala Natarajan, Senior CTO, Developer Experience at PayPal.

Źródło: PayPal Taps Go to Modernize and Scale

 

Building a Microservice in Go Business Guide - Soundcloud

SoundCloud to serwis konsumencki, wiodąca platforma audio w internecie - a to znaczy wszystko, od domowych DJ-ów wrzucających swoje miksy po zawodowych dziennikarzy publikujących wywiady i podcasty.

SoundCloud utrzymuje około pół tuzina usług i kilkanaście repozytoriów napisanych w całości w Go. Coraz częściej sięgamy po Go, gdy startujemy z nowymi projektami serwerowymi. 

Peter Bourgon.

Źródła: Go at SoundCloud, Peter Bourgon on CRDTs, Go at SoundCloud

 

Building a Microservice in Go Business Guide - Twitch

To platforma do streamingu wideo na żywo, skupiona na transmisjach z gier, muzyce, treściach kreatywnych, rozgrywkach e-sportowych i nie tylko.

Twitch używa Go w wielu naszych najbardziej obciążonych systemach. Jego prostota, bezpieczeństwo, wydajność i czytelność czynią z niego dobre narzędzie do rozwiązywania problemów, które napotykamy, dostarczając wideo na żywo i czat milionom użytkowników. Go jest ważną częścią skalowania Twitcha, zwłaszcza w połączeniu z AWS Lambda. 

Spencer Nelson, inżynier w Twitchu.

W 2018 roku Twitch udostępnił framework RPC, którego używa do komunikacji między własnymi serwerami napisanymi w Go - Twirp: a sweet new RPC framework for Go

 

Źródło: Twitch Engineering: An Introduction and Overview

Podsumowanie

Mikroserwisy może i nie są najszybszym sposobem budowania oprogramowania, ale na dłuższą metę to mądry wybór. Tańsze i bardziej elastyczne niż architektury monolityczne, mikroserwisy mogą być rozwijane i testowane równolegle i niemal niezależnie przez małe zespoły. Architektura mikroserwisowa upraszcza też wdrażanie i diagnozowanie problemów. Nie wspominając o tym, że mikroserwisy są właściwym wyborem dla skalowalnych projektów.

 

Jeśli choć część powyższego dotyczy Twojego projektu, śmiało - pamiętaj tylko, że będziesz potrzebować właściwego stosu technologicznego, żeby wycisnąć z tej architektury maksimum. Język Go jest do tego znakomitym wyborem. Nie tylko spełnia wszystkie kryteria stosu mikroserwisowego, ale daje też ogromne korzyści biznesowe.

 

Golang różni się od innych języków ​​młodym wiekiem i możliwością tworzenia ciekawych projektów od samego początku istnienia.

 

Golang daje wysoką wydajność jak C/C++, bardzo skuteczne przetwarzanie równoległe jak Java i klarowną czytelność jak Python, Perl czy Erlang. Zaprojektowano go do obsługi mocno obciążonych systemów przy 100-procentowym wykorzystaniu architektury wieloprocesorowej. Z tych powodów wiele firm przechodzi na Go z innych języków ​​i tworzy wydajne oprogramowanie w architekturze mikroserwisowej.

 

Mikroserwisy w Golangu łatwo się czyta, a więc i łatwo utrzymuje. Jeśli z czasem będziesz musiał zmienić zespół, nie zagrozi to całemu biznesowi. 

 

W Ideamotive od dawna używamy Golanga, więc nasza rozległa Talent Network uzupełni Twój zespół o świetnych ekspertów. Możemy też zebrać doświadczony, w pełni samodzielny dedykowany zespół programistów, project managerów i projektantów dopasowany do pomysłu Twojego projektu.


Skontaktuj się z nami , żeby omówić, która architektura i który język będą najlepsze dla Twojego pomysłu i projektu!

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
Newsletter 9-1
Newsletter Ideamotive
Twój dwutygodniowy przegląd najgorętszych newsów technologicznych
Frame 29
Chcesz zatrudnić Dawida?
Jeśli chcesz dowiedzieć się więcej o dostępności Davida, umówmy się na rozmowę. David to doświadczony full-stack developer z bogatym doświadczeniem w Golangu.
Umów konsultację

Szukasz ekspertów Go do swojego zespołu?

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