Cloud-Ready mit Go (Golang)

Digitalisierung ist ein großes Thema der heutigen Zeit. Immer mehr Unternehmen wollen beispielsweise ihre internen Prozesse oder Services fĂŒr Kunden und Kundinnen digitalisieren und optimieren. Oft mĂŒssen sie dem wachsenden Kundschaftsstrom durch Skalierbarkeit ihrer Anwendungen standhalten. Dabei fallen im ErstgesprĂ€ch oft die Wörter Cloud und Kubernetes. Über einen Microservice-orientierten bzw. Cloud-nativen Entwicklungsansatz, beispielsweise mit Go (oft auch als Golang bezeichnet), wird gar nicht erst gesprochen. 

Einleitung

Doch so einfach ist das nicht mit der Cloud (und schon gar nicht mit Kubernetes). Schnell sollen bestehende Altsysteme „Cloud-Ready“ gemacht werden, und bei der ersten Konzeption der notwendigen Systemlandschaft sieht man schnell eine Kostenexplosion, die sich anbahnt. Zudem weisen viele Altsysteme kritische Komponenten auf, die nicht ohne weiteres in einer Cloud landen dĂŒrfen.

Es lohnt sich also, erstmal einen Blick auf die Anwendung selbst zu richten. Dabei sollte man unter anderem folgende Punkte beachten:

  •       Wie hoch ist der Ressourcenverbrauch der Anwendung?

  •       Ist die Anwendung skalierbar?

  •       Kann die Anwendung in ihrer jetzigen Form ĂŒberhaupt in einer öffentlichen Cloud betrieben werden?

  •       Wie gut lĂ€sst sich die aktuelle Anwendung warten?

Es gibt noch viele weitere wichtige Punkte, die beachtet werden mĂŒssen, jedoch kann man anhand dieser einfachen Fragen schnell herausfinden, ob die Anwendung Cloud-Ready ist und wie sinnvoll dabei der Einsatz von einem Orchestrator wie Kubernetes ist. Die Konsequenz ist oftmals eine Neu- oder Weiterentwicklung der Anwendung, um einen reibungslosen Einsatz in der Cloud zu ermöglichen.

Wieso Cloud-nativ programmieren?

Wenn wir in die Cloud gehen, dann wollen wir uns auch die Vorteile der Cloud zunutze machen. Ansonsten könnten wir auch zwei weitere Server in die Firma stellen. Es ist wichtig, dass wir ein Bewusstsein dafĂŒr schaffen, dass die Cloud keine eierlegende Wollmilchsau ist und außerdem nicht jede Software direkt in ihr funktioniert.

Durch einen Cloud-nativen Entwicklungsansatz möchten wir sicherstellen, dass unsere Anwendungen unter anderem hochverfĂŒgbar, besser wartbar und ressourcenschonender sind. Solch ein Ansatz erhöht die Wahrscheinlichkeit, dass unsere Anwendung auf Dauer erfolgreich in der Cloud lĂ€uft, signifikant. Eine beliebte Cloud-native Programmiersprache ist dabei Go.

 

Was bringt mir Golang?

Go ist eine kompilierte Programmiersprache mit schneller Startlaufzeit, die ohne eine virtuelle Maschine auskommt. Sie eignet sich dabei besonders gut fĂŒr skalierbare Systemlandschaften wie Kubernetes und wird gerne fĂŒr die Entwicklung von Cloud-nativen Microservices genutzt. Dabei lĂ€sst sich Golang fĂŒr alle gĂ€ngigen Architekturen und Betriebssysteme kompilieren. So lĂ€sst sich die Anwendung direkt in dem benötigten System starten, ohne dass wir sicherstellen mĂŒssen, dass dort zum Beispiel eine notwendige virtuelle Maschine (z.B. JVM) zum AusfĂŒhren installiert ist. Ein weiterer Vorteil ist, dass durch das Weglassen einer solchen virtuelle Maschine beispielsweise Docker Builds wesentlich schlanker werden.

Beispiel 1 zeigt einen einfachen API Service in Go:

Wie wir sehen, kann man mit sehr wenigen Zeilen Code einen kleinen API Service entwickeln. Ein weiterer Vorteil ist, dass der Verbrauch dieses kleinen Go Microservice sehr niedrig ist und dieser ohne Vorlaufzeit startet. Die kurze Verbrauchsspitze wurde durch viele aufeinanderfolgende Anfragen erzeugt und ist weiterhin niedrig.

NatĂŒrlich fehlen hier einige Features eines vollwertigen und robusten API Service, wie das Unterscheiden zwischen GET/POST/PUT/DELETE; außerdem ist in den allerwenigsten FĂ€llen eine Anwendung so klein.

Da wir in den gĂ€ngigsten Programmiersprachen Frameworks benutzen, um solche FunktionalitĂ€ten hinzuzufĂŒgen, nehmen wir im Beispiel 2 ein Web Framework zur Hilfe, wie man es mit Spring Boot bei Java-Anwendungen macht. Wir haben uns fĂŒr das Gin Web Framework entschieden (GitHub – gin-gonic/gin: Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance — up to 40 times faster. If you need smashing performance, get yourself some Gin.):

Wir sehen, dass unser Code nicht wesentlich grĂ¶ĂŸer geworden ist. Der Funktionsumfang hat sich jedoch stark erweitert. Zudem bleibt der Verbrauch auch mit einem Framework immer noch niedrig.

Was kann Golang noch alles?

Wir haben festgestellt, wie schnell ein einfacher API Service in Go realisierbar ist. Golang kann aber noch viel mehr und besticht beispielsweise mit einer einfach zu erlernenden Syntax, NebenlÀufigkeit und einer einfachen Fehlerbehandlung.

FĂŒr alle, die jetzt neugierig geworden sind und mehr ĂŒber die Programmiersprache Go erfahren wollen, bieten wir eine Schulung an. Die Trainer und Trainerinnen zeigen auf, wie Go in zukĂŒnftigen Projekten integriert werden kann und die Teilnehmer:innen können das neu erlangte Wissen in spannenden Übungen anwenden.

 

golang go

Go-Schulung

In unserer Go-Schulung bringen wir den Teilnehmer:innen in zwei Tagen die Grundlagen der Programmiersprache Go bei. Sie lernen die Syntax und Best Practices kennen und können im Anschluss Cloud-Native-Anwendungen fĂŒr ihre Use Cases konzipieren.

The following two tabs change content below.

Daniel Meng

Neueste Artikel von Daniel Meng (alle ansehen)