Programovanie

10 projektov s otvoreným zdrojovým kódom dokazujúcich silu aplikácie Google Go

Teraz, 10 rokov v divočine, si programovací jazyk Google’s Go určite získal meno. Ľahký a rýchlo zostaviteľný produkt Go vyvolal značný záujem vďaka svojim veľkorysým knižniciam a abstrakciám, ktoré uľahčujú vývoj súbežných a distribuovaných (čítaných: cloudových) aplikácií.

Skutočnou mierou úspechu každého programovacieho jazyka sú však projekty, ktoré s ním vývojári vytvárajú. Go sa osvedčil ako prvá voľba pre rýchly vývoj sieťových služieb, projekty softvérovej infraštruktúry a kompaktné a výkonné nástroje všetkého druhu.

Tu je 10 pozoruhodných projektov napísaných v službe Go, z ktorých mnohé sa stali slávnejšími ako jazyk, v ktorom boli napísané. Všetky z nich dosiahli významnú známku v príslušných doménach. Všetky tu uvedené projekty sú hostené na GitHube, takže je pre Go-zvedáka ľahké nahliadnuť do Go kódu, vďaka ktorému sú začiarknuté.

Docker

Len ťažko by ste pre Go našli lepší príbeh úspechu ako Docker. Za niečo viac ako rok sa táto technológia kontajnerovania softvéru stala potomkom vhodnosti spoločnosti Go pre veľké distribuované softvérové ​​projekty. Tímu Docker sa program Go páčil, pretože ponúkol množstvo výhod: statickú kompiláciu bez závislostí, silnú štandardnú knižnicu, úplné vývojové prostredie a schopnosť stavať pre viac architektúr s minimálnymi problémami.

Kubernetes

Ak je Docker napísaný v jazyku Go, je zrejmé, že v jazyku Go by boli napísané aj ďalšie významné cloudové projekty kontajnerov. Kubernetes, projekt orchestrácie kontajnerov spoločnosti Google, je projektom Go, rovnako ako väčšina subkomponentov a ekosystémov Kubernetes. Príklad: Superľahký spinoff Kubernetes, k3s, pre ľudí, ktorí potrebujú iba základné informácie o Kubernetes a nie viac.

Google zvážil napísanie Kubernetes v iných jazykoch vrátane C / C ++, Java a Python. Ale podľa Joe Beda, spoluzakladateľa a bývalého technického vedúceho spoločnosti Kubernetes a v súčasnosti hlavného inžiniera spoločnosti VMware, žiadny z týchto jazykov nenarazil na „sladké miesto“ ako Go. Ako povedal Beda, „Go nie je ani príliš vysoká, ani príliš nízka úroveň.“

Fedora CoreOS

CoreOS (teraz projekt Red Hat) využíva Docker na premenu Linuxu na stádo voľne spojených kontajnerov, možnú cestu od zamotaného klbka závislostí, ktoré sa stalo sine qua non správy balíkov Linux. Nie je teda prekvapením, že CoreOS využíva Dockera na uskutočnenie tohto kúzla - a že dve základné služby CoreOS, Etcd a Fleet, sú napísané v Go. Flotila vám umožňuje „zaobchádzať so svojím klastrom CoreOS, akoby zdieľal jeden systém init.“ Etcd, distribuovaný obchod s kľúčmi a hodnotami, sa stará o synchronizáciu nastavení medzi aplikáciami Docker a inštanciami CoreOS. Oba boli napísané v Go kvôli „vynikajúcej podpore viacerých platforiem, malým binárnym súborom a skvelej komunite za nimi.“

InfluxDB

InfluxDB je „distribuovaná databáza časových radov bez externých závislostí“. Termín „časová rada“ znamená, že InfluxDB sa zaoberá hlavne získavaním metrík alebo udalostí a umožňuje ich analýzu v reálnom čase. „Žiadne externé závislosti“ znamená, že na používanie servera InfluxDB nepotrebujete žiadny ďalší softvér; je úplne samostatný (ako to býva v aplikáciách Go). Dáta je možné zapisovať alebo čítať z databázy prostredníctvom volaní REST, ktoré odosielajú JSON, a dotazy je možné robiť pomocou jednoduchého jazyka SQL, ktorý umožňuje dokonca aj regulárne výrazy. InfluxDB je vysoko elastický a horizontálne škálovateľný a je pravdepodobné, že ako jazyk bol zvolený jazyk Go, aby boli tieto funkcie možné a ľahké.

Istio

Projekt Istio, ktorý je súčasťou vesmíru Kubernetes, sa zaoberá problémom, ktorý je v mnohých prostrediach podnikových aplikácií pochopený aj zle spracovaný: Ako sa vysporiadate so sieťovou štruktúrou, ktorá spája vaše služby navzájom a s vonkajším svetom? Istio poskytuje programovateľnú „sieť služieb“ alebo vrstvu sieťových proxy medzi každým kontajnerom v klastri Kubernetes a medzi týmito kontajnermi a vonkajším svetom, aby bolo možné akékoľvek zmeny v tejto sieti vykonať programovo prostredníctvom zdieľanej riadiacej roviny. Go sa k tomu dobre hodil, keďže Kubernetes bol tiež napísaný v Go, ale aj kvôli vhodnosti Go pre decentralizované, distribuované sieťové projekty.

Traefik

Ďalším projektom súvisiacim so sieťou, ktorý je napísaný v Go, je Traefik, reverzný proxy server a nástroj na vyrovnávanie zaťaženia pre sieťové služby. Traefik je navrhnutý na prácu so širokou škálou možností orchestrácie, od Kubernetes a Docker Swarm po Amazon ECS a Azure Service Fabric. Traefik automaticky vytvára trasy potrebné pre mikroslužby bežiace pod týmito orchestrátormi na komunikáciu s vonkajším svetom. Generuje tiež sledovacie údaje a štatistiky vhodné pre vášho orchestrátora.

Hugo

Statické generátory webov sú práve teraz zúrivé. Koniec koncov, ponúkajú rýchly a pohodlný spôsob, ako vytvoriť rýchly a bezpečný web iba so statickým kódom HTML, CSS a JavaScript. Hugo je statický generátor stránok, ktorý využíva rýchle a bezproblémové fungovanie mnohých funkcií Go - konkrétne nástrojov Go na vykreslenie HTML, jeho sieťových knižníc, jeho funkcií internacionalizácie a jeho schopnosti nasadenia ako jediného redistribuovateľného binárneho kódu z natívnej platformy. Všetky tieto funkcie Go umožňujú Hugovi ľahké rozbalenie, spustenie a použitie na rýchle vytváranie webov.

Terraform

Spoločnosť HashiCorp - založená tvorcom spoločnosti Vagrant, nástroja založeného na Ruby na správu vývojových prostredí - čerpala z rýchlosti a sily spoločnosti Go pri budovaní väčšieho a ambicióznejšieho projektu: Terraform, systému na budovanie IT infraštruktúry v priestoroch alebo v cloude. prostredníctvom definičných súborov premenených na kód. Akékoľvek zmeny, ktoré vykonáte, je možné posúvať dopredu alebo dozadu a získate úplné zhrnutie toho, čo sa presne stane - t. J. Plán vykonania -predtým vyvoláte svoj kód.

ŠvábDB

Go sa používa na vytváranie mnohých druhov distribuovaných cloudových natívnych aplikácií. CockroachDB, tak pomenovaný pre svoju odolnosť, je distribuovaná databáza navrhnutá tak, aby prežila všetky druhy kalamít (dokonca aj zlyhania dátových centier) a napriek tomu naďalej odpovedala na vaše dotazy SQL. CockroachDB je celý napísaný v jazyku Go, s výnimkou veľkého množstva C ++ pre výkonovo náročné základné funkcie prevzaté z predchodcu projektu RocksDB.

Gravitačný teleport

Go sa stal predvoleným jazykom pre mnoho sieťových projektov a pre následné projekty, ktoré na nich stavajú. Príklad: Implementácia SSH spoločnosťou Go, sama o sebe užitočná, slúži ako základ pre projekty ako Gravitational Teleport. Gravitačný teleport umožňuje používateľom bezpečný prístup k serverom prostredníctvom shellu. Vynucuje zabezpečenie prostredníctvom jednotného prihlásenia, ale bez toho, aby vyžadoval druh administratívnej réžie (napr. Správa a rotácia kľúčov), také veci zvyčajne potrebujú.