Das Google Cloud Meetup #6 fand am 10. November 2020 in der Stadt Zürich in der Cafeteria von nine statt. Aufgrund lokaler Einschränkungen durften wir keine Gäste in der Cafeteria empfangen, daher waren alle Teilnehmer nur online YouTube. Danke an Google, welche Pizzas und Bier gesponsert hätte!
Thomas Hug, Gründer von nine, stellt die Referenten Matthias Isler, CTO von GetYourLawyer AG und Jonas Felix, Gründer von Letsboot.com, vor.
Migration eines Marktplatzes in die Google-Cloud – Von VMs und Bash-Skripten zu GKE und CI/CD-Pipeline
GetYourLawyer ist die führende Plattform für Rechtsdienstleistungen in der Schweiz. Gegründet 2017 mit dem Ziel Dokumente für Anwaltskanzleien zu automatisieren, hat sich das Startup fortlaufend weiterentwickelt und hat 2019 Ringier Axel Springer als Ankerinvestor an Bord geholt. Technisch basiert die GetYourLawyer Plattform auf dem Laravel Framework (PHP) sowie Node.js. Es bestehen Anbindungen an diverse weitere Systeme wie z.B. SAP. Das Frontend der Applikation basiert auf Vue.js. Die Entscheidung zur Migration in die Cloud basierte insbesondere auf der nun gegebenen Skalierbarkeit sowie der erhöhten Verfügbarkeit und Sicherheit. Auch die Erweiterbarkeit und erweiterte Kontrolle über die Infrastruktur durch GetYourLawyer waren ausschlaggebende Kriterien. Dank der neuen Infrastruktur implementiert die Applikation nun die “Twelve-Factor App Pricinples” und weite Teile des DevOps Ansatzes. Da alle Daten in der Schweiz gespeichert werden müssen, fiel die Entscheidung auf Google Cloud anstatt AWS oder andere Anbieter. Auch die von Google angebotene, sehr weit fortgeschrittene Container-Orchestrierung Kubernetes Engine unterstützte diese Entscheidung. Vor der Migration wurde die komplette Plattform von GetYourLawyer auf einer Virtual Machine betrieben, der Deploy Prozess bestand aus Bash Scripts, welche auf der VM ausgeführt wurden. Lokal wurde die Umgebung mit Vagrant nachgestellt.
Die neue Infrastruktur besteht aus einem Ingress Load Balancer, drei Deployments für verschiedene Aufgaben sowie diversen Managed Services von Google, z.B. Cloud SQL oder Cloud Memorystore. Weitere Dienste werden von nine zur Verfügung gestellt, unter anderem die komplette Überwachung und Monitoring der Infrastruktur sowie eine Lösung zur Verwaltung und Auswertung von Logs.
Auf Basis von Bitbucket wurde eine vollautomatische CI/CD Pipeline aufgebaut, welche eine Auslieferung von neuen Versionen innerhalb weniger Minuten ermöglicht. Die Releases werden im Hintergrund automatisch getestet und dadurch deren Funktionalität sichergestellt.
Durch die Implementation des Infrastructure as Code (IaC) Ansatzes, kann die komplette Infrastruktur nun vom Entwickungsteam von GetYourLawyer verwaltet und weiterentwickelt werden. Vorher war die Infrastruktur eine Blackbox, welche nur von Systemadministratoren geändert werden konnte.
Neu wird die Applikation auf Containern ausgeführt (Docker), anstatt auf Virtual Machines, die lokale Entwicklungsumgebung entfällt daher. Die Entwickler können nun die Cloud Umgebung lokal starten und verwenden. Um die Applikation auf einer Cloud Umgebung lauffähig zu machen waren diverse Erweiterungen notwendig, der Aufwand dazu hielt sich dank der Verwendung eines modernen Frameworks dennoch in Grenzen.
Die eigentliche Migration konnte dank sorgfältiger Vorbereitung und umfassenden Tests in 28 Minuten anstatt der sicherheitshalber angekündigten 8 Stunden durchgeführt werden.
Schlussendlich konnten aus dem insgesamt 9 Monate dauernden Projekt wertvolle Erfahrungen gewonnen werden. Das Entwicklungsteam von GetYourLawyer verfügt nun über umfassendes Wissen zum sicheren Betrieb von Applikationen auf Cloud Umgebungen und insbesondere Kubernetes.
Nicht zuletzt dank der professionellen Unterstützung durch nine kann die Migration von GetYourLawyer in die Cloud als durchgehend erfolgreich betrachtet werden.
Herausforderungen bei der praktischen Ausbildung von SoftwareEntwicklern auf Kubernetes CI/CD
Text von Jonas Felix, Letsboot.com.
Es ist eine Herausforderung, einen intensiven und effizienten Praxiskurs für Software-Entwickler zu entwickeln, um die Containerisierung mit Kubernetes und CI/CD zu erlernen (denn wenn man es nicht automatisieren kann, macht man es falsch). Alles ist Code und unsere Schulungen bilden da keine Ausnahme. Wir haben mehrere Jahre lang eine auf Code fokussierte Schulung durchgeführt und mehrere Kurse mit einzelnen Lektionen aufgebaut, die aus Folien (mit reveal-md als Code), Übungen und einem inkrementellen Kursprojekt mit einem Lösungs-Patch für jede Lektion bestehen. Auf diese Weise können die Teilnehmer das Material effizient durcharbeiten und selber bestimmen, wie sehr sie sich selbst fordern wollen, sowie schnell aufholen, wenn es ein Problem gibt. Dies führt zu einem sehr intensiven Training mit einem schönen Rhythmus zwischen Erklärungen, Übungen und Unterstützung durch die Ausbilder.
Nach dem Besuch mehrerer Container (Docker) und Kubernetes, sowie Cloud-bezogenen Kursen, sehnten wir uns nach der gleichen praktischen Erfahrung mit einer grossen Vielfalt von Beispielen für diesen Bereich. Insbesondere mit CI/CD, da die Automatisierung das absolute Herzstück der Container-Welt sein muss. Wir wollen keine Container oder Kubernetes ohne Automatisierung unterrichten. Um diese Art von Erfahrung mit Containern zu bekommen, benötigen Sie die lokalen Container-Tools, einen lokalen Cluster, ein git-Projekt (pro Teilnehmer), eine ci / cd-Pipeline, eine private Container-Registry, einen Cluster “Production/Staging” für die Auslieferung und einen für diverse Beispiel Applikationen / Szenarien.
Dies auf den Desktops der Teilnehmenden zu realisieren ist sehr schwierig, da Sie viele bewegliche Teile (nicht nur Code), verschiedene Werkzeuge und Versionen haben. Zudem sollen die Teilnehmer ihre Kreditkarten nicht verwenden müssen. Die Einrichtung einer separaten Authentifizierung für jeden Teilnehmer führt oft zu anfänglichen Problemen während der Einrichtungsphase, was keine effektive Nutzung der Zeit ist. Insgesamt soll das Training nicht zum lokalen Debugging-Block werden.
Um dies zu lösen, haben wir den gesamten Schulungsaufbau automatisiert, indem wir für jeden Teilnehmer eine Entwicklerinstanz auf der Google Cloud Platform zur Verfügung stellen. Darüber hinaus erhält jeder Teilnehmer einen persönlicher Git Fork des Kursprojekts, einen kompletten GKE-Produktionscluster, einen lokalen Cluster, eine private Registry, eine GitLab-CI-Pipeline, sowie die gesamte automatisch eingerichtete Authentifizierung. Dank dieser Automatisierung können wir 10 Umgebungen für 2-3 Schulungstage einrichten, wobei 48 Server laufen, um separate Spielfelder und superrealistische Umgebungen für jeden Teilnehmer bereitzustellen.
Dank der GCP-Preisstruktur sowie der API und der Gitlab-API sind die Kosten pro Teilnehmer vergleichsweise niedrig und jeder kann alle Schritte durchspielen, um eine vielfältige Applikation zu containerisieren, zu konfigurieren wie sie auf Kubernetes ausgeführt werden soll, sie auf einem lokalen Entwickler-Cluster einzusetzen, sie auf einem Produktions-Cluster laufen zu lassen sowie eine CI/CD-Pipeline aufzubauen, die alles automatisiert.
Tools, die wir für die Einrichtung und Schulung verwenden:
- https://github.com/webpro/reveal-md
- https://app.diagrams.net/ (zur Verwaltung von Diagrammen in Git als Teil des Markdowns)
- https://theia-ide.org/
- https://www.docker.com/
- https://cloud.google.com/kubernetes-engine
- https://kubernetes.io/
- https://helm.sh/
- https://docs.gitlab.com/ee/ci/
- https://github.com/kubernetes-sigs/kind
- https://www.cloudflare.com/
- https://github.com/kubernetes-sigs/kustomize
- https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.vscode-kubernetes-tools
- https://www.terraform.io/
Weiterer Ausblick
Unser nächstes Google Cloud Meetup ist für den 12. Januar 2021 um 16:00 Uhr am Stauffacher (nine Büros, Badenerstrasse 47) in der Stadt Zürich geplant. Teilnahme entweder bei uns vor Ort (sofern es die Umstände erlauben) bei Pizza & Bier per Google oder remote auf Youtube!
Wenn Sie ein interessantes Projekt auf Google Cloud zum vorstellen haben oder andere spannende Themen rund um Google Cloud haben, kontaktieren Sie uns bitte! Wir freuen uns auch sehr über Vorschläge für Themen und mögliche Speaker, entweder per Meetup-Nachricht, über das Kontaktformular auf unserer Website oder per E-Mail an einen Ihrer Ansprechpartner bei nine. Wir möchten, dass es spannend bleibt. Wir freuen uns auf ein Wiedersehen!
Informieren Sie sich in unserer MeetUp-Gruppe auf meetup.com über bevorstehende Google Cloud Meetups.