Kontaktiere uns!
Zurück
#gopher#go#launchpad

Nachwuchs fürs Launchpad: Ein Gopher!

vonJan Stamer
17. März 2023Development

Tag 1 im neuen Projekt, der Tarifrechner für die neue Hunde-OP-Versicherung spuckt schon erste Werte aus. Echt jetzt? Die Realität erlebe ich oft anders:

Woche 1 vergeuden wir damit, ein Projekt in Jira anzulegen. Schließlich muss der Name des neuen Projekts erst noch durchs Architektur-Board. Ach ja, das tagt erst nächste Woche, Tobias ist krank. Woche 2 vertun wir mit der Wahl des Tech-Stacks. Java ist gesetzt, Spring auch. Aber Martin schwört auf Hibernate, Katrin meint, das relationale Modell ist eh oldschool. Um die Wogen zu glätten, folgt in Woche 3 ein Prototyp. Schon ist der erste Sprint herum. Frohe Botschaft im Review: Wir nehmen Hibernate! Langes Gesicht bei Hr. Maier vom Fachbereich: “Wo ist denn der Rechner?”, fragt er kleinlaut am Ende.

Also nochmal von vorne: An Tag 1 setzt Caro das Projekt auf mit `launchctl new pfefferminzia`. Der Tech-Stack ist bewährt: Pipelines und Board in Gitlab, Infrastruktur für Entwicklung und Test in Kubernetes. Die Entwicklung startet mit dem Web-Formular für die Hunde-OP-Versicherung, erstmal mit Basis Styling von Bootstrap. Katrin hadert immer noch mit PostgreSQL, akzeptiert aber, dass wir das später nochmal prüfen. Sprint-Review nach 3 Wochen: Die Hunde-OP-Versicherung für Hr. Maiers Bulldogge kostet 13,84 EUR im Monat! Aber Finding aus dem Architektur-Board: Der Name des Projekts muss angepasst werden. Und beim Styling müssen wir auch ran, denn Corporate Identity schlägt Bootstrap. Kein Ding, machen wir.

Weil Hr. Maier die zweite Variante viel besser gefällt (und uns auch), haben wir das Launchpad bei crossnative.

Die Launchpad Familie

Mit dem Launchpad eliminieren wir die Ramp-Up Zeit im Projekt. Es reicht der Befehl `launchctl new pfefferminzia`. Fertig ist ein Projekt mit lauffähiger Anwendung, CI/CD Pipelines und Kubernetes Integration – bereit für die Cloud.

Die Launchpad Familie besteht aus einem Backend Modul in Java und Spring, einem Frontend Modul in Angular und alles was an Infrastruktur für Cloud-native Entwicklung notwendig ist. Jetzt gibt es Nachwuchs in der Launchpad Familie: Es ist ein Gopher!

Das Go Launchpad – Nachwuchs für die Launchpad Familie

Der neue Spross “Gopher” der Launchpad Familie ist ein Launchpad Backend Modul in Go. Go ist Googles Programmiersprache für die Cloud. Der Gopher ist eine Taschenratte, und das Maskottchen der Programmiersprache Go.

Im Backend können wir nun entweder Java oder Go als Programmiersprache nutzen, je nach Bedarf des Projekts.

Go – die Sprache der Cloud

Warum aber Go? Go ist die Sprache Nummer 1 für Cloud-native Entwicklung: 14 von 19 Projekten der Cloud Native Computing Foundation im höchsten Reifegrad nutzen Go, darunter Kubernetes und Docker. Go ist blitzschnell, hat starke Typen und Goroutinen, die all Deine 64 Cores unter Dampf setzen. Deswegen liebt die Cloud Go – und wir auch.

In 3 Schritten zum Go Projekt

Um mit dem Go Launchpad ein neues Projekt aufzusetzen, reichen Caro drei Schritte:

  1. Launchpad Projekt erstellen
    launchctl new pfefferminzia
  2. Datenbank und Keycloak starten
    docker compose up
  3. Pfefferminzia Backend starten
    go run main.go

Fertig ist das Projekt inklusive Entwicklungsinfrastruktur sowohl für die lokale Entwicklung als auch für Test- und Integrations-Umgebungen. Das Team kann loslegen mit dem ersten fachlichen Feature.

Go Launchpad als Start in die Cloud-native Entwicklung

Das Launchpad für Go setzt konsequent auf Cloud-native Entwicklung – wie alle Launchpad Module. Ihr startet ins Projekt von Tag 1 mit einem kompletten Cloud-nativen Projekt:

  • Projektstruktur nach Domain Driven Design
  • DevOps mit Docker, Helm, Kubernetes
  • REST API Support
  • Keycloak Authentifzierung
  • PostgreSQL Datenbank Anbindung (inklusive Migration)
  • Code Qualität Überwachung (Sonarqube, Linter)
  • automatische Dependency Updates mit Renovate Bot

Unser Go Launchpad ist sehr leichtgewichtig. Wir nutzen die mächtige Standardbibliothek von Go. Die enthält schon Web Server, JSON Serialisierung und Unit-Tests. Dazu noch 1-2 Pakete für PostgreSQL und Keycloak, mehr brauchen wir nicht.

Unsere Go Launchpad Anwendung ist schlank. Das Binary besteht aus wenigen Megabyte und startet in unter 40 Millisekunden. Perfekt für die Cloud, sei es im Container oder als Serverless Function. Denn dort sind schneller Start und problemloser Stopp einer Anwendung entscheidend.

Mit dieser Ausgangsbasis startet Euer Projekt wie eine Rakete. Mit fachlichen Features von Tag 1. Hr. Maier freut sich.

Package Struktur nach Domain Driven Design

Unser Go Launchpad Projekt ist dank Domain Driven Design (DDD) konsequent nach fachlichen Verantwortlichkeiten strukturiert. Initial gibt es drei Go Packages, ein Package je eine fachliche Domäne:

Das Package `offer` enthält den Angebotsrechner unserer HundeOP. Alles rund um Authentifizierung und Autorisierung liegt im Package `auth`. Was übergreifend über alle Domänen genutzt wird liegt, z.B. die Konfiguration, liegt im gemeinsamen Package `shared`.

Innerhalb einer fachlichen Domäne `offer` ist die Anwendung nach technischen Schichten organisiert in DDD Onion Layers.

Die DDD Struktur gibt unserem Projekt einen super Rahmen in dem unser Gopher Baby wachsen und gedeihen kann. Das hat sich bereits in den anderen Launchpad Modulen bewährt.

Fazit nach dem ersten Sprint

Fertig sind auch wir nicht nach Sprint 1. Aber schon Sprint 1 liefert ein tolles fachliches Ergebnis. Gemeinsam mit Hr. Maier verbessern wir den Rechner für die Hunde-OP Sprint für Sprint. Machen Usability Tests, werten Daten aus, gehen Online und verbessern.

Aber auch nach Sprint 1 lassen wir Euch nicht allein. Jedes Launchpad Projekt profitiert davon, dass wir das Launchpad ständig aktuell halten und verbessern. All unsere Erfahrungen und Features aus vielen Launchpad Projekten fließen kontinuierlich dort mit ein. Für Dich und für uns.

Mehr übers Go Launchpad erfahren?

Bist Du neugierig geworden? Lerne das Launchpad gerne kennen. Nimm einfach Kontakt auf mit Jan Stamer oder Martin Rybicki. Wir zeigen Dir, wie Du mit dem Launchpad Dein Cloud-natives Projekt startest, mit Java oder Go, wie es für Dein Projekt das passt.

Hier bekommst Du noch mehr

#crossfunktional#hackathon#innovation

Hackathon 3.0

Veröffentlicht am 14.10.2022

#abnahme#convo#development#productowner#produktentwicklung#scrumteam#softwareentwicklung#team

Finale Abnahme

Veröffentlicht am 13.05.2022

Alle Blogartikel