Interview mit Dr. Roland Huß

Knative für Java-Entwickler: „Der größte Vorteil ist das vereinfachte Deployment-Modell“

Katharina Degenmann

Dr. Roland Huß

Zu den neueren Top-Themen im Kubernetes-Universum zählt ohne Frage Knative. Doch was verbirgt sich hinter Knative? Und wie kann Java-Entwicklern der Einstieg am besten gelingen? Diesen Fragen widmet sich Roland Huß, Principal Software Engineer bei Red Hat, in seinem Talk auf der W-JAX 2019.

Wer Roland Huß einmal live erleben möchte, der hat bei der diesjährigen W-JAX 2019 in München wieder Gelegenheit dazu. Roland wird dort eine Session zum Thema, „Knative für Java Devs“ halten und einen Überblick über Knative und die drei Komponenten Build, Serving und Eventing geben. Welche Aspekte von Knative aus Perspektive von Java-Entwicklern besonders wichtig sind (einschließlich Live-Demos), vermittelt der Vortrag ebenfalls.

JAXenter: Hallo Roland, in Deiner Session auf der W-JAX 2019 sprichst Du über Knative. Knative verbindet Serverless mit Containern – Worum geht es dabei im Kern bzw. was steckt dahinter?

Roland Huß: Knative ist eine Kubernetes basierte Plattform, um zustandslose Applikationen einfach zu deployen und zu verwalten. Dazu unterstützt Knative Anfrage-basiertes „Scale-To-Zero“ und Autoscaling sowie deklaratives Loadbalancing, um verschiedene Rollout- bzw. Rollback-Strategien umzusetzen. Des weiteren bietet Knative eine umfassende Anbindung an externe Quellen, zu der sich Knative-Anwendungen, zur Verarbeitung Event-gesteuerte Anfragen, flexibel verbinden können.

JAXenter: Nach Docker kam Kubernetes, jetzt heißt das neue Top-Thema Knative. Ist der Hype um Knative gerechtfertigt?

Roland Huß: Mit der Mächtigkeit von Kubernetes ist eine gewisse Komplexität in der Verwendung verbunden, was jede bestätigen kann, die schon mal mit Kubernetes Resourcedeskriptoren gearbeitet hat. Durch einen weiteren Abstraktionschritt schränkt Knative zwar die Möglichkeiten von Kubernetes etwas ein, vereinfacht aber dadurch auch das Deployment von zustandslosen Anwendungen enorm. Mit der gerade entstehenden Knative CLI „kn“ ist es sogar möglich, komplett ohne YAML Deskriptoren auszukommen. Das Einzige, was man dann braucht, ist ein Container Image, dass die Anwendung enthält.

Mit Knative entgeht man dem gefürchteten Vendor-Lockin.

Dadurch das Knative auf dem de-facto Standard ‚Kubernetes‘ basiert, ist es in der Public Cloud portierbar aber auch im heimischen Datenzentrum zu verwenden. Sprich, man entgeht dem gefürchteten Vendor-Lockin. Zudem gibt es inzwischen mit Google Cloud Run oder Red Hat OpenShift Serverless Angebote, die direkt Knative unterstützen.

Mein persönliches Highlight aber ist „Scale-to-Zero“, da damit Anwendungen tatsächlich nur dann laufen, wenn sie auch benötigt werden und somit Projekte auch risikolos, ohne große Kosten ausprobiert werden können, da nur nach Bedarf abgerechnet wird.

W-JAX 2019 Java-Dossier für Software-Architekten

Kostenlos: Java-Dossier für Software-Architekten 2019

Auf über 30 Seiten vermitteln Experten praktisches Know-how zu den neuen Valuetypes in Java 12, dem Einsatz von Service Meshes in Microservices-Projekten, der erfolgreichen Einführung von DevOps-Praktiken im Unternehmen und der nachhaltigen JavaScript-Entwicklung mit Angular und dem WebComponents-Standard.

 

JAXenter: Ist Knative für die Arbeit mit jeder Container-Technologie als auch Serverless-Architektur geeignet? Worauf muss man achten?

Roland Huß: Die Deployment-Einheit ist bei Knative wie bei Kubernetes ein Container, sodass jede Applikation, die in ein Container Image gepackt werden kann, mit Knative betrieben werden kann. Es gibt jedoch auch einige Einschränkungen gegenüber klassischen Kubernetes-Deployments. So muss die Anwendung über HTTP oder gRPC kommunizieren, darf nur auf einen Port lauschen und kann keine persistent Volumes in Kubernets verwenden (sondern muss ihr Zustandsmanagement in externe Dienste auslagern). Es zeigt sich, dass der Großteil, der in Kubernetes betriebenen Anwendungen, diesen Anforderungen genügt und sich das Deployment-Modell durch die Beschränkungsehr vereinfachen lässt und die flexible, lastbasierte Autoskalierung erst möglich macht.

JAXenter: Wie gelingt Java-Entwicklern der Einstieg in die Arbeit mit Knative am besten?

Roland Huß: Am besten lassen sich einfache, per-se zustandslose, REST-basierte Java-Microservices mit Knative deployen, die man bereits in Container Image gepackt hat. Zum Ausprobieren kann man die Beispiele auf der Knative Webseite knative.dev durchspielen, dort sind auch Java-Beispiele enthalten. Die Installation von Knative selbst ist zumeist problemos und Anleitungen für verschiedene Kubernetes-Plattformen (inklusive Minikube) findet man ebenfalls auf der Knative-Webseite. Alternativ kann man auch die gehostete Knative-Plattform auf Google Cloud Run nutzen. Allerdings ist diese noch in der Beta-Phase und auch nicht alle Knative-Funktionen stehen dort bislang zur Verfügung.

In Kombination mit einer modernen Java-Microservice-Plattform wie Quarkus macht das dynamische und häufige Skalieren der Anwendung erst so richtig Spaß.

JAXenter: Was ist der größte Vorteil von Knative hinsichtlich der Java-Entwicklung?

Roland Huß: Der größte Vorteil ist das vereinfachte Deployment-Modell, dass es einem Java-Entwickler sehr erleichtert, einen Applikations-Container auf Kubernetes zu starten. Es genügt hier ein kn service create --image myrepo/myapp und es werden alle nötigen Kubernetes-Ressourcen (Deployment, Service, Ingress, ..) automatisch angelegt. So hat man sofort eine Anwendung, die ohne Last innerhalb von Minuten auf 0 Pods skaliert.

In Kombination mit einer modernen Java-Microservice-Plattform wie Quarkus, die auf schnelle Startup-Zeiten und geringem Speicherverbrauch getrimmt ist, macht das dynamische und häufige Skalieren der Anwendung aber erst so richtig Spaß.

JAXenter: Vielen Dank für das Interview!

Roland Huß is a Principal Software Engineer at Red Hat and tech-lead for Red Hat Fuse Online, an open source hybrid integration platform running on OpenShift. He has been developing mostly in Java for over twenty years now but never forgot his roots as a system administrator. Roland is an active open source contributor, developer of the JMX-HTTP bridge Jolokia and the popular fabric8 Maven plugins for Docker, Kubernetes, and OpenShift. He is also co-author of a “Kubernetes Patterns” book. And he loves chilli pepper.
Geschrieben von
Katharina Degenmann
Katharina Degenmann
Katharina Degenmann hat Politikwissenschaft und Philosophie studiert. Seit Februar 2018 arbeitet sie als Redakteurin bei der Software & Support Media GmbH und ist nebenbei als freie Journalistin tätig.
Kommentare

Hinterlasse einen Kommentar

2 Kommentare auf "Knative für Java-Entwickler: „Der größte Vorteil ist das vereinfachte Deployment-Modell“"

avatar
4000
  Subscribe  
Benachrichtige mich zu:
Michael Sieper
Gast

Muss der Weblink nicht https://knative.dev lauten?

Roland Huss
Gast

Richtig, da hat sich ein Tippfehler eingeschlichen.