Wie man bei Curve Go einsetzt

Coden in Go: Für das Plus an Produktivität und Effizienz

Dewet Diener
Gopher created by Renée French / CC BY 3.0

Die Programmiersprache Go wurde geschaffen, um ein Maximum an Effizienz und Produktivität zu erreichen. Programmierer, die bereits mit Java oder PHP vertraut sind, können in nur wenigen Wochen die wichtigen Grundlagen von Go erlernen (viele werden es ultimativ den „alten“ Sprachen vorziehen). In diesem Artikel untersucht Dewet Diener, VP of Engineering bei Curve, die Vor- und Nachteile der Golang und wie seine testgetriebene Entwicklung (TDD) die Arbeit erleichtert.

Go wurde von Google entwickelt und erschien 2009 als umfassende Programmiersprache, die zur Maximierung der Produktivität geschaffen wurde. Die Sprache wurde zudem mit der Absicht designt, Mängel in anderen etablierten Sprachen nicht zu wiederholen. Obwohl Go eine relativ junge Sprache ist, hat sie bereits eine große Fangemeinde von Entwicklern angezogen, und deshalb möchte ich ein wenig darüber sprechen, warum wir bei Curve Golang lieben und wie wir die Sprache einsetzen, um unser Ziel zu erreichen, das Bankwesen in die Cloud zu verlagern.

Go ist so etwas wie eine verfeinerte Programmiersprache: Sie funktioniert nach dem WYSIWYG-Prinzip (What you see is what you get), das heißt klar lesbaren Code und weniger komplexe Abstraktionen. Die Sprache selbst ist einfach zu benutzen und leicht zu erlernen. Dennoch kann es, gerade weil das Ökosystem wie die Sprache noch relativ neu ist, schwierig sein, Entwickler mit umfangreichen Go-Kenntnissen zu finden.

Nutzereffizienz im Fokus

Im Gegensatz zu anderen Programmiersprachen wurde Go allerdings vor allem im Hinblick auf die Nutzereffizienz entwickelt. Daher können Nutzer mit Java- oder PHP-Hintergrund innerhalb weniger Wochen in der Anwendung von Go geschult werden – und unserer Erfahrung nach bevorzugen viele von ihnen anschließend Go gegenüber den älteren Artgenossen.

Wir bei Curve setzen uns stark für die testgetriebene Entwicklung (TDD) ein, und das Framework von Go ist gut auf diese Methodik eingestellt. Durch die einfache Benennung einer Datei in foo_test.go und das Hinzufügen strukturierter Testfunktionen innerhalb dieser Datei wird Go Ihre Unit-Tests schnell und effizient ausführen. Diese innovative Funktion steigert die Produktivität, da sie eine stärkere Konzentration auf die testgetriebene Entwicklung und verbesserte Peer-Review-Möglichkeiten ermöglicht.

Auch im Hinblick auf die Optimierung der Produktion verfügt Go über viele wichtige Eigenschaten, etwa einen relativ geringen Speicher-Footprint, was den Einsatz in besonders großen Projekten erleichtert. Überdies bietet die Golang von Haus aus eine einfache Cross-Kompilierung zu anderen Architekturen. Da der Go-Code in ein einzelnes statisches Binary kompiliert wird, ist die Containerisierung ein Kinderspiel und macht es durch eine entsprechende Erweiterung fast trivial, Go in jeder hochverfügbaren Umgebung wie Kubernetes einzusetzen.

Go stellt einen Mechanismus für das Absichern von Workloads bereit, es hat sehr leichtgewichtige Produktionscontainer ohne Abhängigkeiten nach außen. Dies macht das Erstellen, Deployen und Warten einer Go-basierten Anwendung viel einfacher und sicherer und bietet eine solide Grundlage für Unternehmen, sich für Go zu entscheiden. Das gilt insbesondere für Firmen, die auf Microservices setzen wollen.

Ein modernes Ökosystem

Die technologischen Ökosystem moderner Softwareentwicklung wachsen rapide und Go wurde mit diesem Gedanken im Hinterkopf entwickelt. Die Programmiersprache bietet beispielsweise als Teil ihrer Standardbibliothek alles an, was man zur Erstellung von APIs benötigt. Die Funktionalität ist einfach zu benutzen, und der leistungsfähige HTTP-Server beseitigt einige der üblichen Probleme, die oft auftreten, wenn Teams ein neues Projekt entwerfen – etwas, das bei einigen anderen populären Sprachen wie Java und Node oft zu Unannehmlichkeiten führt.

Die Golang löst auch Formatierungsschwierigkeiten auf eine sehr geschmeidige Art und Weise, nämlich durch die in die Sprache selbst eingebaute automatische Formatierung. Konflikte werden so vollständig eliminiert, was wiederum die Produktivität und den Fokus der Teams steigert.

So sehr ich auch ein Verfechter von Go bin, so ist die Sprache natürlich auch nicht ohne Mängel. Ein strittiger Punkt ist, dass Go keine explizite Schnittstelle hat, ein Konzept, an das viele Entwickler gewöhnt sind. Obwohl das kein großer Nachteil ist, kann es slästig sein, die für die eigene Struktur am besten geeignete Schnittstelle zu wählen. Das liegt daran, dass man nicht einfach schreibt X implementiert Y, wie man es von anderen Sprachen vielleicht kennt. Allerdings ist das etwas, was man schnell kaum noch wahrnimmt.

Dependency Management

Das Dependency Management ist ebenfalls etwas, das offenbar nicht Teil des ursprünglichen Entwurfs von Googles Golang-Team war. Die Open-Source-Community griff aber schnell ein und schuf glide und dep, die das Problem allerdings nicht vollständig lösten. Seit Go 1.11 wurde die Unterstützung für Module hinzugefügt, was aktuell nun das offizielle Tool für das Dependency Management darzustellen scheint. Diese Herausforderungen schmälern nicht das Potential von Go als effiziente Programmiersprache, die nach wie vor signifikante Vorteile gegenüber anderen Sprachen bereithält.

Die Golang zieht die Aufmerksamkeit von eifrigen Entwicklern auf der ganzen Welt auf sich und das Projekt liegt deutlich im Fokus des allgemeinen Interesses. Und auch die Open-Source-Gemeinschaft rund um Go blüht, dank interessanter Projekte wie Docker und Kubernetes, immer weiter auf.

Die frischen und einfallsreichen, aber auch einfachen Ideen sind es auch, was Go für uns ausmacht: Die Sprache ist aufregend und hilft uns bei Curve, schnell voranzukommen und bessere Produkte zu erstellen.

Verwandte Themen:

Geschrieben von
Dewet Diener

Dewet Diener is currently VP of Engineering at Curve. Dewet has more than twenty years experience in the industry, principally across Software and Site Reliability Engineering spanning a range of different sectors and an array of eclectic businesses. He spent over six years at Google building partner solutions, helped found Klarismo, an automated MRI image analysis startup, and more recently BenevolentAI where he was VP of Engineering.

Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: