Hands-on Code Training
Cloud Skills sind nur schwer solo erlernbar – nicht weil es so kompliziert ist, sondern weil eine komplette Systemlandschaft bereitstehen muss, um alle Facetten des Entwicklungsprozesses beleuchten und durchspielen zu können.
In der schönen neuen Cloud-Welt kommt man immer weniger an Containern, Continuous Integration/Delivery und DevOps vorbei. Dabei ist der Einstieg in das neue Entwicklungsparadigma nicht so einfach, denn um die neuen Fähigkeiten zu lernen, braucht es mehr als nur einen Laptop. Das meint zumindest Letsboot.com-Gründer Jonas Felix. Sein Unternehmen bietet Hands-on Code Trainings in diesem Bereich: «Für Container und deren Orchestrierung benötigt es eine ganze Systemlandschaft bestehend aus einer Entwicklungsumgebung für Container, einer CI/CD-Pipeline und einem Test- sowie Produktiv-Kubernetes-Cluster», erklärt Felix. Nur so lassen sich flexibel Beispielprojekte durchspielen, die übrigens genauso zum Trainings-Setup gehören. Letsboot bietet eine Schulungslandschaft, die für jeden Teilnehmer separat hochgefahren werden kann. «Nur wenn der Prozess von hinten bis vorne live durchgespielt werden kann, können die nötigen Skill-Sets entwickelt werden», führt Jonas Felix weiter aus. Am Ende steht der heilige Gral moderner Software-Entwicklung – die weitgehende Automatisierung.
Für Jonas Felix ist die Vermittlung dieser Fähigkeiten essenziell, wenn die Schweiz weiterhin vorne in der Softwareentwicklung mitspielen will. «Setzt man Container-Landschaften richtig auf, sind diese Methoden und Technologien punkto Effizienz und Time-to-Market kaum zu schlagen.» Jonas Felix geht sogar noch weiter – er sieht darin auch einen Weg, die Mitarbeiterzufriedenheit zu steigern.
Konflikte auflösen
Bei der Mitarbeiterzufriedenheit geht es unter anderem um die Auflösung des lang anhaltenden Konflikts zwischen Entwicklern und Systemadministratoren: Letztere fokussieren sich auf möglichst wenig Änderungen an ihren Systemlandschaften, während Developer vor allem Flexibilität bei der Auswahl der Technologien benötigen, um neue Applikationen und Features rasch umsetzen zu können. «Im alten Virtualisierungs-Paradigma setzten die Systemadmins Server mit Betriebssystem und Abhängigkeiten für eine bestimmte Applikation auf. Diese sollten sich möglichst nicht ändern. Dadurch gab es kaum klare Grenzen, wo die Arbeit vom Sysadmin aufhört und die des Entwicklers anfängt. Zudem führen Unterschiede von der Produktivumgebung zur Entwicklungsumgebung oft zu ‹Mir-läufts-doch›-Problemen», so Jonas Felix.
Containerisierung löst diese Krux: Der Systemadmin stellt eine Container-Umgebung, zum Beispiel einen Kubernetes-Cluster, bereit und Entwickler-Teams lassen ihre Container mit beliebiger Technologie darauf laufen. Da die Container bereits mit allen Abhängigkeiten ausgestattet sind, muss der Dev sich nicht mehr mit dem Sysadmin absprechen.
Containerisierung
Beide sind nun glücklich – dieses Glück produziert gleichzeitig Effizienz und Geschwindigkeit. «Da die Container nur das Notwendige enthalten müssen und kein eigenes Betriebssystem benötigen, können diese viel schneller gestartet und mehr davon parallel betrieben werden, wobei gleichzeitig die Wartung minimiert wird», erklärt Jonas Felix. Denn aus Sicht des Betriebssystems ist ein Container nur eine Gruppe von Prozessen. Diese Prozesse sind im Container komplett gekapselt und können so nicht Prozessen in anderen Containern in die Quere kommen.
Ein Beispiel: Eine Applikation besteht aus mehreren Containern mit unterschiedlichen Funktionen. Ein Teil Machine Learning, der mit Python entwickelt wurde, ein Teil Business Logic, der auf Java basiert und ein Service, der auf Golang baut, da er extrem performant sein muss. In der Vergangenheit hätte man mit viel Gezeter drei Umgebungen aufsetzen müssen oder einfach nur eine Technologie verwendet – heute werden einfach nur noch die Container ausgerollt.
So entstehen moderne DevOps-Prozesse mit minimalen Friktionen. Denn bei dieser Rollenverteilung werden die Schnittpunkte zwischen den Teamkollegen minimiert. Das Entwickler-Team trifft nur noch auf Sysadmins, wenn es um das allgemeine Bereitstellen von Ressourcen geht (Speicher, CPU, RAM) und wo es externe Zugänge (Firewall, externer Netzwerkzugang) zur Applikation gibt. Sogar das Netzwerk zwischen den Containern einer Applikation kann vom Entwicklungs-Team definiert werden.
Komplette Automatisierung
«Setzt man das richtig auf, laufen Code-Merge, Testing und vor allem Deployments automatisch.» Damit das funktioniert, müssen die Container von Anfang an richtig konfiguriert werden – und das kann man nur, wenn man den ganzen Prozess versteht. «Das ist das Besondere an unserem Setup: So können wir einem motivierten Entwickler in nur drei Tagen die grundlegenden Fähigkeiten für den ganzen Prozess vermitteln», so Jonas Felix von Letsboot.com abschliessend.