SKOPOS GROUP

Wir sind ein Teil der SKOPOS GROUP für zeitgemäße Marktforschung.

Eine breit aufgestellte Unternehmensgruppe, die alle zeitgemäßen Marktforschungs-Dienstleistungen unter einem Dach vereint. Digital und innovativ. Von national bis international. Von Kunden-Befragung über UX-Research bis Insight-Community. Von Mitarbeiter-Befragung über Mystery-Shopping bis Customer-Experience und Data Science decken wir alle relevanten Themen und Methoden ab.

Journal Nützliches Wissen aus der Welt der Data Science
Data Engineering

OpenFaaS im Einsatz: Wir stellen unsere neue Serverless Computing-Plattform graphene vor

Michael, unser Experte für Machine- und Deep-Learning-Modelle, beschäftigt sich schon länger mit der Frage, wie man das Nutzen von Machine-Learning Modellen und ähnlichen Funktionen der Datenverarbeitung möglichst einfach gestalten kann. Seine Lösung: graphene – eine Plattform, die uns „Serverless Computing“ ermöglicht. Das heißt, ein Entwickler kann Funktionen (z.B. mit Python) auf diese Plattform laden, ohne sich Gedanken darüber machen zu müssen, wie diese physisch gespeichert und ausgeführt werden. Zum Nutzen dieser Funktionen werden automatisch REST (REpresentational State Transfer)-Schnittstellen erstellt, über die man diese Funktionen ausführen kann. Wir haben Michael gefragt, was die Vorteile von graphene gegenüber unserem alten System sind, wie die Plattform überhaupt funktioniert und an welchen Stellen auch er manchmal noch vor einigen Herausforderungen steht.

Wofür kann man das neue System graphene eigentlich benutzen?

Wir verwenden dieses System intern vor allem, um Machine-Learning Modelle und andere nützliche Funktionen zur Datenverarbeitung bereitzustellen und um diese in unsere Datenverarbeitungsprozesse einzubinden. Das macht das Nutzen der Funktionen sehr einfach, für alle zugänglich und verhindert Kompatibilitätsprobleme (System-Unterschiede, verschiedene Versionen von Software-Paketen etc.). Das neue System ermöglicht es uns aber auch, Schnittstellen für Kunden bereitzustellen, wodurch wir eine nahtlose Integration von Kundendaten in unsere Systeme ermöglichen können. Auch können wir unseren Kunden so direkte Schnittstellen zu Machine-Learning Modellen bereitstellen, damit sie die Modelle direkt in ihre Systeme integrieren können.

Warum brauchten wir ein neues System und was sind die Vorteile von graphene (gegenüber dem alten System)?

Wir haben bereits ein ähnliches System (Carbon) in Verwendung, das auf den ersten Blick die gleichen Funktionen bietet. Wir können Funktionen hochladen und diese über eine REST-Schnittstelle ausführen. Die Unterschiede zwischen dem alten und dem neuen System befinden sich vor allem unter der Haube. Das neue System basiert auf der State-of-the-Art-Technologie Kubernetes, die vor allem die Ausfallsicherheit stark erhöht. Außerdem lassen sich Ressourcen deutlich einfacher und automatisch skalieren und effizienter nutzen. Das alte System Carbon verwendet ein selbst gebautes Framework, um die „Serverless Computing“ Funktionalität zu ermöglichen. Graphene nutzt dafür das weit verbreitete Framework „OpenFaaS“. Das vereinfacht die Verwendung deutlich und erhöht die Flexibilität. Wir können auf viele Funktionalitäten zurückgreifen, die intelligente Menschen bereits in OpenFaaS implementiert haben. Zum Beispiel bietet es die Möglichkeit für einen Warm-Start der Machine-Learning Modelle. Das heißt, dass die Modelle nicht für jede Anfrage neu geladen werden müssen (was viel Zeit kostet), sondern bei häufiger Ausführung schon geladen sind und deutlich schneller Ergebnisse liefern können. Das ist vor allem wichtig, wenn künftig unsere Kunden Machine-Learning Modelle direkt in ihre Anwendungen einbauen. Durch die Nutzung von weit verbreiteter State-of-the-Art-Software sind wir für künftige Entwicklungen bestens aufgestellt und es gibt meistens schon Lösungen für Probleme, die wir jetzt noch gar nicht haben.

Und wie genau funktioniert graphene?

Das Nutzen einer Funktion auf OpenFaaS ist ein einfacher API Request an eine REST-Schnittstelle. Auf dieser Abbildung wird ein Machine-Learning Modell aufgerufen, das Tiere klassifiziert.

Machine-Learning Modell zur Klassifizierung von Tieren

Auch das Erstellen einer Funktion für Entwickler ist sehr einfach und flexibel. Jede Funktion ist ein Docker-Container und bietet auch deren Flexibilität. Für alle gängigen Programmiersprachen gibt es aber auch Templates, die die Erstellung einer Funktion sehr einfach machen. So muss zum Beispiel für eine Funktion mit Python lediglich die Python-Funktion „handler()“ mit der gewünschten Funktionalität befüllt werden:

Python-Funktion „handler()“:

$ faas-cli new --lang python3 python3-fn

def handle(req): 
       """handle a request to the function
       Args:
              req (str): request body
       """

return req

faas-cli up -f python3-fn.yml


Um noch ein wenig mehr ins Detail zu gehen: Wie funktioniert graphene „unter der Haube“?

Graphene ist ein Kubernetes Cluster, auf dem der OpenFaas PLONK-Stack installiert ist. Der Zugang zum Cluster und zu OpenFaaS läuft über einen nginx reverse-proxy, über den wir die TLS-/HTTPS-Verschlüsselung und -Authentifizierung/-Autorisierung managen können. Außerdem ermöglicht er uns in Zukunft auch, andere Anwendungen auf dem Cluster zu implementieren.

Übersicht - graphene unter der Haube

Ohne zu sehr in die detaillierte Funktionsweise von Kubernetes und OpenFaaS einzusteigen, möchte ich einmal schematisch beschreiben, wie das Hochladen und das Ausführen einer Funktion auf dem Cluster funktioniert, damit man einen Einblick in die Funktionsweise bekommt.

Funktion hochladen:

  1. Wenn wir eine Funktion auf graphene laden möchten, wird zunächst lokal ein Docker-Image der Funktion erstellt.
  2. Dieses Docker-Image wird in eine externe Docker-Registry gespeichert.
  3. Aus diesen Docker-Images werden Kubernetes-Pods erstellt. Pro Funktion können mehrere Pods erstellt werden. Dazu können wir eine minimale und maximale Anzahl an Pods definieren und durch die Auto-Scaling-Funktion von OpenFaaS wird die Anzahl an Pods pro Funktion dann automatisch an deren Auslastung angepasst.

Funktion verwenden:

  1. Wenn ein Nutzer eine Funktion über die entsprechende REST-Schnittstelle verwendet, wird diese Anfrage zunächst an den reverse-proxy geleitet, an dem die Anfrage entschlüsselt und der Nutzer authentifiziert und autorisiert wird.
  2. Der reverse-proxy leitet die Anfrage an das OpenFaas API Gateways und den OpenFaaS-Provider weiter, der dann einen Pod mit der entsprechenden Funktion der Anfrage ausführen und die Ergebnisse zurückgeben kann. Welcher Pod einer Funktion für eine Anfrage verwendet wird, wird automatisch gemanagt, ohne dass wir uns darum kümmern müssen.
  3. Die Ergebnisse der Funktion werden dann wieder zurück an den Nutzer geschickt.

Dies ist nur eine sehr grobe Übersicht über die Funktionsweise. Wer mehr über OpenFaaS erfahren möchte wird hier fündig:

OpenFaaS

Gibt es noch ein paar Baustellen, an denen Du gerade arbeitest?

Die größte Baustelle ist im Moment noch, die Authentifizierung bzw. Autorisierung mit Keycloak einzubauen. Das bietet uns eine große Flexibilität im Nutzer-Management und wir können den Zugang zu Funktionen unabhängig von ihnen vergeben. Auch bietet Keycloak die Möglichkeit, externe Single-Sign-On-Anbieter unserer Kunden wie zum Beispiel Azure Active Directory einzubinden.

Fazit

Mit graphene haben wir eine sehr gut skalierbare State-Of-The-Art-Plattform, die wir flexibel einsetzen können und die mit unseren Anforderungen und Herausforderungen wachsen kann. Wir sind uns sicher, dass uns graphene noch eine ganze Weile beschäftigen wird und uns damit eine enorme Erleichterung in der Nutzung von Machine-Learning Modellen und ähnlichen Funktionen der Datenverarbeitung bringt.

Euer Ansprechpartner:
Michael Ellers
Junior Data Scientist

Ihr wollt mehr wissen? Sprecht uns gerne an!

Welches Problem möchtest Du mit Data Science lösen?

Anfrage senden

Du willst Marktforschung im Unternehmen sichtbar machen?

Dann lass uns gemeinsam deine Daten sichtbar werden!

Warum wir?
Deine Anfrage

Unser hochmotiviertes Team freut sich, von Dir und Deiner Fragestellung zu hören.

  • Hidden
  • Hidden
  • Dieses Feld dient zur Validierung und sollte nicht verändert werden.

Mehr lesen?