10 Open Source-Projekte, die die Leistungsfähigkeit von Google Go unter Beweis stellen

Die Programmiersprache Go von Google hat sich seit 10 Jahren einen Namen gemacht. Go ist leicht und schnell zu kompilieren und hat aufgrund seiner großzügigen Bibliotheken und Abstraktionen, die die Entwicklung von gleichzeitigen und verteilten (read: cloud) Anwendungen erleichtern, großes Interesse geweckt.

Das wahre Erfolgsmaß jeder Programmiersprache sind jedoch die Projekte, die Entwickler damit erstellen. Go hat sich als erste Wahl für die schnelle Entwicklung von Netzwerkdiensten, Software-Infrastrukturprojekten und kompakten und leistungsstarken Tools aller Art erwiesen.

Hier sind 10 bemerkenswerte Projekte, die in Go geschrieben wurden, von denen viele berühmter geworden sind als die Sprache, in der sie geschrieben wurden. Alle haben in ihren jeweiligen Bereichen einen bedeutenden Eindruck hinterlassen. Alle hier vorgestellten Projekte werden auf GitHub gehostet, so dass es für Go-Neugierige einfach ist, einen Blick auf den Go-Code zu werfen, der sie zum Ticken bringt.

Docker

Es fällt Ihnen schwer, eine bessere Erfolgsgeschichte für Go als Docker zu finden. In etwas mehr als einem Jahr wurde diese Software-Containerisierungstechnologie zum Aushängeschild für Go's Eignung für große, verteilte Softwareprojekte. Das Docker-Team mochte Go, weil es eine Reihe von Vorteilen bot: statische Kompilierung ohne Abhängigkeiten, eine starke Standardbibliothek, eine vollständige Entwicklungsumgebung und die Fähigkeit, mit minimalem Aufwand für mehrere Architekturen zu erstellen.

Kubernetes

Wenn Docker in Go geschrieben ist, liegt es nahe, dass auch andere wichtige Cloud-orientierte Containerprojekte in Go geschrieben werden. Kubernetes, Googles Container-Orchestrierungsprojekt, ist ein Go-Projekt, ebenso wie die meisten Unterkomponenten und das Ökosystem von Kubernetes. Ein typisches Beispiel: Der superleichte Kubernetes-Spinoff k3s für Leute, die nur die Grundlagen von Kubernetes brauchen und nicht ein bisschen mehr.

Google erwog, Kubernetes in anderen Sprachen wie C / C ++, Java und Python zu schreiben. Laut Joe Beda, Mitbegründer und ehemaliger technischer Leiter von Kubernetes und derzeit Chefingenieur bei VMware, hat keine dieser Sprachen den „Sweet Spot“ wie Go erreicht. Wie Beda es ausdrückte: "Go ist weder zu hoch noch zu niedrig." 

Fedora CoreOS

CoreOS (jetzt Red Hat - Projekt) verwendet Docker Linux in eine Herde von lose gekoppelten Behälter zu drehen, einen möglichen Weg aus der entfernt Knäuel von Abhängigkeiten, die das geworden ist sine qua non des Linux - Paketverwaltung. Es ist daher keine Überraschung, dass CoreOS Docker nutzt, um diese Magie zu erreichen - und dass zwei der grundlegenden Dienste von CoreOS, Etcd und Fleet, beide in Go geschrieben sind. Mit Fleet können Sie "Ihren CoreOS-Cluster so behandeln, als ob er ein einzelnes Init-System gemeinsam nutzen würde". Etcd, ein verteilter Schlüsselwertspeicher, übernimmt die Synchronisierung der Einstellungen zwischen Docker-Anwendungen und CoreOS-Instanzen. Beide wurden in Go geschrieben, weil Go "hervorragende plattformübergreifende Unterstützung, kleine Binärdateien und eine großartige Community dahinter" bietet.

InfluxDB

InfluxDB ist eine "verteilte Zeitreihendatenbank ohne externe Abhängigkeiten". Der Begriff „Zeitreihen“ bedeutet, dass InfluxDB sich hauptsächlich mit der Erfassung von Metriken oder Ereignissen befasst und deren Analyse in Echtzeit ermöglicht. "Keine externen Abhängigkeiten" bedeutet, dass Sie keine andere Software benötigen, um InfluxDB zu verwenden. Es ist völlig eigenständig (wie es Go-Apps normalerweise tun). Daten können über REST-Aufrufe, die JSON senden, in die Datenbank geschrieben oder aus dieser gelesen werden, und Abfragen können über eine einfache SQL-Sprache durchgeführt werden, die sogar reguläre Ausdrücke zulässt. InfluxDB ist hochelastisch und horizontal skalierbar, und wahrscheinlich wurde Go als Sprache gewählt, um diese Funktionen möglich und einfach zu machen.

Istio

Das Istio-Projekt, das Teil des Kubernetes-Universums ist, befasst sich mit einem Problem, das in vielen Unternehmensanwendungsumgebungen sowohl verstanden als auch schlecht behandelt wird: Wie gehen Sie mit der Netzwerkstruktur um, die Ihre Dienste miteinander und mit der Außenwelt verbindet? Istio bietet ein programmierbares „Service-Mesh“ oder eine Schicht von Netzwerk-Proxys zwischen jedem Container in einem Kubernetes-Cluster und zwischen diesen Containern und der Außenwelt, sodass Änderungen an diesem Netzwerk programmgesteuert über eine gemeinsam genutzte Steuerebene vorgenommen werden können. Go passte gut dazu, da Kubernetes auch in Go geschrieben wurde, aber auch wegen der Eignung von Go für dezentrale, verteilte Netzwerkprojekte.

Traefik

Ein weiteres in Go geschriebenes netzwerkbezogenes Projekt ist Traefik, ein Reverse Proxy und Load Balancer für Netzwerkdienste. Traefik wurde für die Verwendung mit einer Vielzahl von Orchestrierungsoptionen entwickelt, von Kubernetes und Docker Swarm bis hin zu Amazon ECS und Azure Service Fabric. Traefik erstellt automatisch die Routen, die Microservices benötigen, die unter diesen Orchestratoren ausgeführt werden, um mit der Außenwelt zu sprechen. Außerdem werden Ablaufverfolgungsdaten und Statistiken generiert, die Ihrem Orchestrator entsprechen.

Hugo

Statische Site-Generatoren liegen derzeit voll im Trend. Schließlich bieten sie eine schnelle und bequeme Möglichkeit, eine schnelle und sichere Website nur mit statischem HTML, CSS und JavaScript zu erstellen. Hugo ist ein statischer Site-Generator, der viele Go-Funktionen nutzt, um schnell und reibungslos zu arbeiten - nämlich die Tools von Go zum Rendern von HTML, seine Netzwerkbibliotheken, seine Internationalisierungsfunktionen und seine Fähigkeit, als einzelne umverteilbare plattformeigene Binärdatei bereitgestellt zu werden. All diese Go-Funktionen machen es Hugo einfach, Websites schnell zu entpacken, auszuführen und zu erstellen.

Terraform

HashiCorp - gegründet vom Entwickler von Vagrant, dem Ruby-basierten Tool zur Verwaltung von Entwicklungsumgebungen - nutzte die Geschwindigkeit und Leistungsfähigkeit von Go, um ein größeres und ehrgeizigeres Projekt zu erstellen: Terraform, ein System zum Aufbau der IT-Infrastruktur vor Ort oder in der Cloud durch Definition werden Dateien in Code umgewandelt. Alle Änderungen, die Sie vornehmen, können vorwärts oder rückwärts gerollt werden, und Sie erhalten einen vollständigen Überblick darüber, was genau passieren wird - dh einen Ausführungsplan -, bevor Sie Ihren Code aufrufen.

KakerlakeDB

Go wird verwendet, um viele Arten von verteilten, Cloud-nativen Apps zu erstellen. CockroachDB, so benannt nach seiner Ausfallsicherheit, ist eine verteilte Datenbank, die entwickelt wurde, um alle Arten von Katastrophen (auch Rechenzentrumsausfälle) zu überstehen und dennoch weiterhin auf Ihre SQL-Anfragen zu antworten. CockroachDB ist vollständig in Go geschrieben, abgesehen von C ++ für leistungsintensive Kernfunktionen aus dem Vorgängerprojekt RocksDB.

Gravitationsteleport

Go ist zur Standardsprache für viele Netzwerkprojekte und für die darauf aufbauenden nachgelagerten Projekte geworden. Ein typisches Beispiel: Go's Implementierung von SSH, die an sich nützlich ist, dient als Grundlage für Projekte wie Gravitation Teleport. Mit Gravitationsteleport können Benutzer über eine Shell sicher auf Server zugreifen. Es erzwingt die Sicherheit über Single Sign-On, ohne jedoch den Verwaltungsaufwand (z. B. Schlüsselverwaltung und Rotation) zu erfordern, den solche Dinge normalerweise benötigen.