Programování

10 projektů s otevřeným zdrojovým kódem, které dokazují sílu Google Go

Nyní, 10 let v divočině, si programovací jazyk Google Go jistě udělal jméno. Lehký a rychle kompilovatelný Go vyvolal značný zájem díky svým velkorysým knihovnám a abstrakcím, které usnadňují vývoj souběžných a distribuovaných (číst: cloud) aplikací.

Skutečným měřítkem úspěchu jakéhokoli programovacího jazyka jsou ale projekty, které s ním vývojáři vytvářejí. Go se osvědčil jako první volba pro rychlý vývoj síťových služeb, projektů softwarové infrastruktury a kompaktních a výkonných nástrojů všeho druhu.

Zde je 10 pozoruhodných projektů napsaných v Go, z nichž mnohé se staly slavnějšími než jazyk, ve kterém byly napsány. Všechny se ve svých příslušných doménách významně zapsaly. Všechny zde uváděné projekty jsou hostovány na GitHubu, takže je pro Go-Curie snadné nahlédnout do kódu Go, díky kterému jsou zaškrtnutí.

Přístavní dělník

Jen těžko byste pro Go našli lepší příběh o úspěchu než Docker. Za něco málo přes rok se tato technologie kontejnerizace softwaru stala potomkem vhodnosti Go pro rozsáhlé distribuované softwarové projekty. Tým Dockeru měl Go rád, protože nabízel spoustu výhod: statickou kompilaci bez závislostí, silnou standardní knihovnu, úplné vývojové prostředí a schopnost stavět pro více architektur s minimálními potížemi.

Kubernetes

Pokud je Docker napsán v Go, je logické, že v Go budou také napsány další významné cloudové projekty kontejnerů. Kubernetes, projekt orchestrace kontejnerů společnosti Google, je projektem Go, stejně jako většina subkomponent a ekosystému Kubernetes. Příklad: Superlehký spinoff Kubernetes, k3s, pro lidi, kteří potřebují pouze základy Kubernetes a ne jen o málo víc.

Google zvažoval psaní Kubernetes v jiných jazycích, včetně C / C ++, Java a Python. Ale podle Joe Bedy, spoluzakladatele a bývalého technického vedoucího Kubernetes a v současné době hlavního inženýra společnosti VMware, žádný z těchto jazyků nenarazil na „sladké místo“ jako Go. Jak řekl Beda, „Go není ani příliš vysoká, ani příliš nízká úroveň.“

Fedora CoreOS

CoreOS (nyní projekt Red Hat) používá Docker k přeměně Linuxu na stádo volně spojených kontejnerů, což je možná cesta od zamotaného klení závislostí, které se stalo sine qua non správy balíčků Linux. Není tedy žádným překvapením, že CoreOS využívá Dockera k dosažení tohoto kouzla - a že dvě základní služby CoreOS, Etcd a Fleet, jsou obě napsány v Go. Flotila vám umožňuje „zacházet se svým clusterem CoreOS, jako by sdílel jeden systém init.“ Etcd, úložiště distribuovaných klíčů a hodnot, zpracovává synchronizaci nastavení mezi aplikacemi Docker a instancemi CoreOS. Oba byly napsány v Go kvůli „vynikající podpoře mezi platformami, malým binárním souborům a skvělé komunitě za tím“.

InfluxDB

InfluxDB je „distribuovaná databáze časových řad bez externích závislostí.“ Termín „časová řada“ znamená, že se InfluxDB zabývá hlavně získáváním metrik nebo událostí a umožněním jejich analýzy v reálném čase. „Žádné externí závislosti“ znamená, že k používání aplikace InfluxDB nepotřebujete žádný další software; je zcela soběstačný (jako jsou aplikace Go). Data lze zapisovat nebo číst z databáze prostřednictvím volání REST, která odesílají JSON, a dotazy lze provádět pomocí jednoduchého jazyka SQL, který dokonce umožňuje regulární výrazy. InfluxDB je vysoce elastický a horizontálně škálovatelný a je pravděpodobné, že jako jazyk byl zvolen Go, aby tyto funkce byly možné a snadné.

Istio

Projekt Istio, který je součástí vesmíru Kubernetes, řeší problém, kterému je v mnoha podnikových aplikačních prostředích rozuměno i špatně zacházeno: Jak řešíte síťovou strukturu, která spojuje vaše služby navzájem a s vnějším světem? Istio poskytuje programovatelnou „síť služeb“ nebo vrstvu síťových proxy mezi každým kontejnerem v klastru Kubernetes a mezi těmito kontejnery a vnějším světem, takže jakékoli změny v této síti lze provádět programově prostřednictvím sdílené řídicí roviny. Go se k tomu dobře hodilo, protože Kubernetes byl také napsán v Go, ale také kvůli Goově vhodnosti pro decentralizované, distribuované síťové projekty.

Traefik

Dalším projektem souvisejícím se sítí napsaným v Go je Traefik, reverzní proxy a nástroj pro vyrovnávání zatížení pro síťové služby. Traefik je navržen pro práci s širokou škálou možností orchestrace, od Kubernetes a Docker Swarm po Amazon ECS a Azure Service Fabric. Traefik automaticky vytváří trasy potřebné mikroslužbami běžícími pod těmi orchestrátory, aby mohli mluvit s vnějším světem. Také generuje trasovací data a statistiky vhodné pro vašeho orchestrátora.

Hugo

Statické generátory webů jsou právě teď vztek. Koneckonců nabízejí rychlý a pohodlný způsob, jak vytvořit rychlý a bezpečný web pouze se statickým HTML, CSS a JavaScriptem. Hugo je statický generátor webů, který využívá mnoho funkcí Go k rychlé a bezproblémové práci - konkrétně nástroje Go pro vykreslování HTML, jeho síťové knihovny, jeho funkce internacionalizace a jeho schopnost nasadit jako jediný redistribuovatelný binární soubor z nativní platformy. Všechny tyto funkce Go umožňují Hugovi snadné rozbalení, spuštění a použití k rychlému vytváření webů.

Terraform

HashiCorp - založený tvůrcem Vagrantu, nástroje založeného na Ruby pro správu vývojových prostředí - čerpal z rychlosti a síly Go při budování většího a ambicióznějšího projektu: Terraform, systém pro budování IT infrastruktury v prostorách nebo v cloudu prostřednictvím definičních souborů přeměněných na kód. Jakékoli provedené změny lze posunout dopředu nebo dozadu a získáte úplné shrnutí toho, co se přesně stane - tj. Plán provádění -před vyvoláte svůj kód.

Šváb

Go se používá k vytváření mnoha druhů distribuovaných cloudových nativních aplikací. CockroachDB, tak pojmenovaný pro svou odolnost, je distribuovaná databáze navržená tak, aby přežila všechny druhy kalamit (dokonce i selhání datových center) a přesto nadále odpovídala na vaše dotazy SQL. CockroachDB je napsán celý v Go, s výjimkou smidgenu C ++ pro výkonově náročné základní funkce převzaté z předchůdce projektu RocksDB.

Gravitační teleport

Go se stal výchozím jazykem pro mnoho síťových projektů a pro následné projekty, které na nich staví. Příklad: Implementace SSH Go je sama o sobě užitečná a slouží jako základ pro projekty, jako je Gravitational Teleport. Gravitační teleport umožňuje uživatelům bezpečný přístup k serverům prostřednictvím shellu. Vynucuje zabezpečení prostřednictvím jednotného přihlašování, ale bez nutnosti takové administrativní režie (např. Správa klíčů a rotace), které takové věci obvykle potřebují.

$config[zx-auto] not found$config[zx-overlay] not found