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)