Programmering

10 åpen kildekode-prosjekter som viser kraften til Google Go

Nå 10 år i naturen har Googles Go-programmeringsspråk sikkert gjort seg bemerket. Lett og rask å kompilere, Go har vekket betydelig interesse på grunn av sine sjenerøse biblioteker og abstraksjoner som letter utviklingen av samtidige og distribuerte (les: sky) applikasjoner.

Men det virkelige målet for suksess for ethvert programmeringsspråk er prosjektene som utviklere lager med det. Go har bevist seg som et førstevalg for rask utvikling av nettverkstjenester, programvareinfrastrukturprosjekter og kompakte og kraftige verktøy av alle slag.

Her er 10 bemerkelsesverdige prosjekter skrevet i Go, hvorav mange har blitt mer kjent enn språket de ble skrevet på. Alle har markert seg betydelig i sine respektive domener. Alle prosjektene som er omtalt her er vert på GitHub, så det er enkelt for Go-nysgjerrige å ta en titt på Go-koden som får dem til å krysse av.

Docker

Du ville ha vanskelig for å finne en bedre suksesshistorie for Go enn Docker. På litt over et år ble denne programvarebeholderteknologien plakatbarnet for Go's egnethet til store, distribuerte programvareprosjekter. Docker-teamet likte Go fordi det tilbød en rekke fordeler: statisk kompilering uten avhengigheter, et sterkt standardbibliotek, et fullt utviklingsmiljø og muligheten til å bygge for flere arkitekturer med minimalt bry.

Kubernetes

Hvis Docker er skrevet i Go, er det grunn til at andre viktige skyorienterte containerprosjekter også vil bli skrevet i Go. Kubernetes, Googles prosjekt for containerorkestrering, er et Go-prosjekt, og det samme er de fleste Kubernetes-delkomponenter og økosystem. Eksempel: Superlett Kubernetes spinoff, k3s, for folk som bare trenger det grunnleggende om Kubernetes og ikke noe mer.

Google vurderte å skrive Kubernetes på andre språk, inkludert C / C ++, Java og Python. Men ifølge Joe Beda, medstifter og tidligere teknisk leder for Kubernetes og for tiden hovedingeniør i VMware, slo ingen av disse språkene "sweet spot" som Go. Som Beda sa det: "Go er verken for høyt eller for lavt nivå."

Fedora CoreOS

CoreOS (nå et Red Hat-prosjekt) bruker Docker for å gjøre Linux til en flokk med løst sammenkoblede beholdere, en mulig vei vekk fra det sammenfiltrede nøsten av avhengigheter som har blitt sine qua non av Linux-pakkehåndtering. Det er derfor ingen overraskelse at CoreOS utnytter Docker til å oppnå denne magien - og at to av CoreOS grunnleggende tjenester, Etcd og Fleet, begge er skrevet i Go. Fleet lar deg "behandle CoreOS-klyngen som om den delte et enkelt init-system." Etcd, en distribuert nøkkelverdilager, håndterer synkronisering av innstillinger mellom Docker-applikasjoner og CoreOS-forekomster. Begge ble skrevet i Go på grunn av Go's "utmerkede støtte på tvers av plattformer, små binærfiler og et stort samfunn bak det."

TilstrømningDB

InfluxDB er en “distribuert tidsseriedatabase uten eksterne avhengigheter.” Uttrykket “tidsserie” betyr at InfluxDB hovedsakelig er opptatt av å ta inn beregninger eller hendelser, og la dem analyseres i sanntid. “Ingen eksterne avhengigheter” betyr at du ikke trenger annen programvare for å bruke InfluxDB; det er helt selvstendig (slik Go-apper pleier å være). Data kan skrives til eller leses fra databasen ved hjelp av REST-anrop som sender JSON, og spørsmål kan gjøres via et enkelt SQL-språk som til og med tillater regekser. InfluxDB er svært elastisk og horisontalt skalerbar, og det er sannsynlig at Go ble valgt som språk for å gjøre disse funksjonene mulige og enkle.

Istio

Istio-prosjektet, som er en del av Kubernetes-universet, takler et problem som både forstås og håndteres dårlig i mange bedriftsapplikasjonsmiljøer: Hvordan håndterer du nettverksstoffet som forbinder tjenestene dine til hverandre og til omverdenen? Istio tilbyr et programmerbart “servicenettverk”, eller lag av nettverksproxyer, mellom hver container i en Kubernetes-klynge og mellom disse containerne og omverdenen, slik at eventuelle endringer i nettverket kan gjøres programmatisk via et delt kontrollplan. Go passet godt for dette gitt Kubernetes ble også skrevet i Go, men også på grunn av Go's egnethet for desentraliserte, distribuerte nettverksprosjekter.

Traefik

Et annet nettverksrelatert prosjekt skrevet i Go er Traefik, en omvendt proxy og lastbalanser for nettverkstjenester. Traefik er designet for å jobbe med et bredt utvalg av orkestreringsalternativer, fra Kubernetes og Docker Swarm til Amazon ECS And Azure Service Fabric. Traefik oppretter automatisk rutene som trengs av mikrotjenester som kjører under disse orkestratorene for å snakke med omverdenen. Det genererer også sporingsdata og statistikk som passer til din orchestrator.

Hugo

Statiske nettstedgeneratorer er alle raseri akkurat nå. Tross alt tilbyr de en rask og praktisk måte å lage et raskt, sikkert nettsted med bare statisk HTML, CSS og JavaScript. Hugo er en statisk nettstedsgenerator som benytter seg av mange Go-funksjoner for å fungere raskt og greit - nemlig Go’s verktøy for gjengivelse av HTML, nettverksbiblioteker, internasjonaliseringsfunksjoner og evne til å distribueres som en enkelt omfordelbar plattform-native binær. Alle disse Go-funksjonene gjør det enkelt for Hugo å pakke ut, kjøre og bruke til å bygge nettsteder raskt.

Terraform

HashiCorp - grunnlagt av skaperen av Vagrant, det Ruby-baserte verktøyet for å administrere utviklingsmiljøer - trakk fart og kraften til Go for å bygge et større og mer ambisiøst prosjekt: Terraform, et system for å bygge IT-infrastruktur i lokaler eller i skyen som definisjon ble filer omgjort til kode. Eventuelle endringer du gjør kan rulles frem eller tilbake, og du får en fullstendig oversikt over hva som vil skje - dvs. en utførelsesplan -før du påkaller koden din.

KakerlakkDB

Go brukes til å bygge mange typer distribuerte, cloud-native apps. CockroachDB, så oppkalt etter sin elastisitet, er en distribuert database designet for å overleve alle slags ulykker (til og med feil i datasenteret) og likevel fortsette å svare på dine SQL-spørsmål. CockroachDB er skrevet helt i Go, bortsett fra en smule C ++ for ytelsesintensive kjernefunksjoner hentet fra forgjengerprosjektet RocksDB.

Gravitasjonsteleport

Go har blitt standardspråket for mange nettverksprosjekter, og for nedstrøms-prosjekter som bygger på dem. Eksempel: Go’s implementering av SSH, i seg selv nyttig, fungerer som grunnlaget for prosjekter som Gravitational Teleport. Gravitational Teleport lar brukerne få sikker tilgang til servere via et skall. Det håndhever sikkerhet via enkel pålogging, men uten å kreve den typen administrasjonsomkostninger (f.eks. Nøkkeladministrasjon og rotasjon) slike ting vanligvis trenger.

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