Bei dem Programmier-Ansatz durch Microservices wird eine monolithische Software in Häppchen zerteilt. Die einzelnen Teile halten sich selbst aktuell und die Arbeit der Programmierer wird schneller. Wer kann die unzähligen Tassen Kaffee auch nicht mehr zählen, die in der Wartezeit eines Builds oder Deployments getrunken wurden? Das soll mit Microservices Geschichte werden.
SAP Cloud Platform Extension Factory – Microservice as a Service
Die Antwort der SAP auf diesen Trend ist die Cloud Platform Extension Factory – das kommerzielle Hosting-Angebot für Microservices, bzw. „Lambdas“, wie sie von SAP genannt werden. Sie wurde im Oktober 2018 vorgestellt und wird seitdem nach und nach ausgerollt.
Die SAP Cloud Platform Extension Factory besitzt vordefinierte Schnittstellen zu SAP C/4HANA und zu SAP Cloud Platform Services. Seit Anfang des Jahres 2019 gibt es Integrationen für die SAP Commerce Cloud. Das ist der Punkt, an dem wir uns ansehen, wie sich die SAP Commerce Cloud Entwicklung in einer Cloud-native-World in der Zukunft verändert.
Kyma: Open Source Platform für Cloud-native Intelligent Enterprises
Unter der Haube der SAP Cloud Platform Extension Factory verbirgt sich die Open Source Initiative der SAP – Kyma. Ebenfalls im Oktober des vergangenen Jahres wurde das Projekt einer Plattform veröffentlicht, die Anwendungen und Dienste von Drittanbietern in einer Cloud-nativen Umgebung miteinander verbindet. Es kann auf der Google Cloud Platform, Microsoft Azure oder On-Premises installiert werden.
Schält man Kyma weiter auf, zeigt sich der Aufbau: Kyma bedient sich bei Googles Knative, ein Verwaltungsaufsatz auf Kubernetes, um sich direkt auf das Programmieren stürzen zu können. Zwischen der Knative- und Kubernetes-Schicht darf Istio seine Stärken im API-Management und -Monitoring ausspielen. Istio wurde von Google und IBM entwickelt, um die Auslastung und Ausfallsicherheit eines Clusters zu erhöhen.
Kyma und die SAP Commerce Cloud
Beim Einsatz von Kyma ist uns die hohe Entwicklungsgeschwindigkeit aufgefallen. So veränderte sich die Installationsanleitung eines Tages im Spätherbst 2017 schlagartig, da die Anleitung nicht mehr für die Installation auf Microsoft Azure ausgerichtet wurde, sondern spezifisch auf die Google Cloud Platform. Seit der Version 0.7 aus Februar 2018 ist die Installation auf Azure wieder in der Dokumentation enthalten. Außerdem wurde Knative ab der Version 0.8 im März 2018 frisch implementiert.
Seit der SAP Commerce Cloud Version 1808 ist eine SAP Cloud Platform Extension Factory Integration enthalten. Die Verbindung eines Shop-Systems mit einem Microservice ist sehr einfach. Kyma generiert einen Link mit Token, der in SAP Commerce eingefügt und darüber die Verbindung hergestellt wird. Diese ist mittels SSL gesichert.
SAP Commerce Entwicklung mit Kyma: Begrifflichkeiten
Ist einmal die Verbindung hergestellt, befindet man sich in einer Welt interessanter Begriffe, die nun kurz beleuchtet werden.
In Kyma werden sogenannte Lambdas erzeugt. Das sind Funktionen, die mittels eines Events ausgelöst und ausgeführt werden. Hier sind „Node.js-Skills“ gefragt, da damit die Lambdas entwickelt werden.
Hat das Lambda einen Inhalt an das Shop-System geliefert, nimmt es eine Business Event Node dankend entgegen. Dabei greift das SAP Commerce Cloud Business Event System, das zum Beispiel Order-Prozesse steuert. Durch die Verbindung von Lambdas und Business Events ist der Microservice in die Shop-Logik integriert.
Innerhalb eines Business Events wird entschieden, welches weitere Event als nächstes aufgerufen wird. Das Ergebnis eines Webservices kann zum Beispiel ein OK, NOK oder CANCEL feststellen und daraufhin die nächsten Schritte einleiten. Das sind die Transitions, aus denen ein Event wählen kann.
Erfahrungen bei der lokalen Installation von Kyma
Wie es bei Experimenten so ist, kam uns das System am Anfang sehr erratisch vor – bis wir die Eigenheit des zugrunde liegenden Minikubes verstanden haben. Während der Installation sollte man nach jedem Schritt ein wenig warten. Denn manchmal ist die Initialisierung des Kyma-Systems nicht abgeschlossen. Im Hintergrund werden viele Services hochgefahren, die in Abhängigkeiten zueinanderstehen. Da gleicht kein Start dem anderen.
Wir haben das „installation/scripts/minikube.sh-Script“ angepasst, indem wir Proxy-Einstellungen und eine „dockerconfig“ hinzugefügt haben. Und wenn wir vom Scripten sprechen: Minikube sollte nur über Kyma-Scripts gestartet werden, nicht mit dem Minikube-Start-Befehl. Das kann die Konfiguration zerstören.
Für die Kommunikation unseres Test-Shop-Systems mit der lokalen Kyma-Installation haben wir einen Nginx-Server aufgesetzt. Die entsprechenden Kyma-URLs mussten in die Hosts-Datei unseres Test-Shops eingetragen werden. Diese Basisarbeiten entfallen mit der SAP Cloud Platform Extension Factory.
Ausblick
Technologien entwickeln sich weiter, was zählt, sind Wissen und Erfahrung. Der Vorstoß der SAP in Richtung Microservices ist eine weitere Möglichkeit, Prozesswissen zur Verfügung zu stellen. So ist zum Beispiel ein Einheiten-Rechner denkbar, der einen Quadratmeterpreis in die entsprechende Anzahl an Rollen umrechnet, die am Ende im Warenkorb landen. Oder der vereinfachte Zugriff auf kundenindividuelle Preise aus einem ERP-System.
Und dann wird es interessant: Wird das ERP-System auf SAP S/4HANA umgestellt, bleibt die Integrität des Shops gewahrt – kein Neustart, kein Deployment. Im Microservice wird nur ein Schalter auf ein neues, externes System implementiert. Und dann kann der Kaffee verdient genossen werden!