JAX Blog

Knative für Java-Entwickler

Interview mit Dr. Roland Huß

Oct 28, 2019

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.

 
Redaktion: 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.

 
Redaktion: 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.

 
Redaktion: 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.

 
Redaktion: 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.de 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ß.

 
Redaktion: 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ß.

 
Redaktion: Vielen Dank für das Interview!

 

Quarkus-Spickzettel


Quarkus – das Supersonic Subatomic Java Framework. Wollen Sie zeitgemäße Anwendungen mit Quarkus entwickeln? In unserem brandaktuellen Quarkus-Spickzettel finden Sie alles, was Sie zum Loslegen brauchen.

 

Jetzt herunterladen!

Alle News der Java-Welt:

Behind the Tracks

Agile, People & Culture
Teamwork & Methoden

Clouds & Kubernetes
Alles rund um Cloud

Core Java & Languages
Ausblicke & Best Practices

Data & Machine Learning
Speicherung, Processing & mehr

DevOps & CI/CD
Deployment, Docker & mehr

Microservices
Strukturen & Frameworks

Performance & Security
Sichere Webanwendungen

Serverside Java
Spring, JDK & mehr

Software-Architektur
Best Practices

Web & JavaScript
JS & Webtechnologien

Digital Transformation & Innovation
Technologien & Vorgehensweisen

Domain-driven Design
Grundlagen und Ausblick

Spring Ecosystem
Wissen in Spring-Technologien

Web-APIs
API-Technologie, Design und Management