BitLab, Cloud Foundry für OpenUi5

Die SAP setzt in den letzten Jahren verstärkt auf Open-Source-Produkte. Daraus ergibt sich für die UI5-Entwickler die Möglichkeit, Ihr Knowhow auch außerhalb von der SAP Welt einzusetzen. Doch wie kann man OpenUI5-Anwendungen außerhalb der SAP-Welt effizient entwickelt und betreiben?

Die Plattform

Mit dem Cloud Application Programming Model und der SAP BTP hat die SAP die Entwicklung von innovativen SAPUI5 und Fiori Anwendungen leicht gemacht. Der deutsche Software-Riese hat eine Plattform für die Entwickler geschaffen, mit der sie schnell Anwendungen entwickeln und bereitstellen können. Der Weg zum Kunden war niemals kürzer. Die Unternehmen können damit schneller auf die Änderungen auf dem Markt reagieren und sie brauchen sich nicht um die Infrastruktur-Fragen zu kümmern.

Jeder in der SAP Welt kennt die SAP BTP. Mit der SAP Cloud Foundry bietet SAP eine umfangreiche Umgebung für die Entwicklung für Cloud-basierten Anwendungen. Kaum bekannt ist, dass die SAP Cloud Plattform eine Erweiterung des Open-Source-Projektes “Cloud Foundry”. Die SAP erweitert die Open-Source-Runtime um eigene Services und kann sich ihrerseits auf das Wesentliche konzentrieren. Eines dieser Services ist zum Beispiel das Business Application Studio für die Entwicklung der SAPUI5- und Fiori Apps. Die Cloud Foundry kann aber auch ohne SAP als Platform für die App Entwickung genutzt werden.

Die Weiterentwicklung der Cloud Foundry wird durch die Cloud Foundry Foundation gesteuert. Die SAP gehört zu den Gründungsmitgliedern der Foundation und unterstützt weiterhin die Entwicklung der quell offenen Plattform.

Community Entwicklungen, die die Cloud Foundry adressieren, können somit problemlos in die SAP BTP integriert werden. Voraussetzung dafür ist, dass die Entwicklungen keine Abhängigkeiten zu Provider spezifischen Services haben. Das gilt auch für die Portierung von SAP BTP Anwendungen zu anderen Cloud-Providern.

Auch ohne SAP ist der Einsatz die Cloud Foundry sinnvoll. Die Kernaufgaben der schnellen Bereitstellung und Skalierung der Anwendungen werden bereits durch die Cloud Foundry übernommen. Man legt sich dabei nicht auf einen bestimmten Cloud Anbieter fest. Eine spätere Portierung der Anwendungen zu anderen Cloud Providern oder auch SAP BTP ist möglich. Die SAP versucht mit der Cloud Foundry hier einen Industrie-Standard zu etablieren.

Der Einsatz der Cloud Foundry parallel zu der SAP BTP ergibt keinen Sinn, denn SAP BTP ist Cloud Foundry. Anders sieht es aus, wenn die SAP BTP nicht zur Verfügung steht. Neben der SAP BTP gibt es weitere Anbieter der Cloud Foundry, wie z.B. VMWare (VMWare Tanzu Platform) und StackIt (StackIT Cloud Foundry).

Eine weitere Möglichkeit ist die Software im eigenen Rechenzentrum selbst aufzubauen. Die Cloud Foundry wird als Platform as a Service Software (PaaS) klassifiziert. Sie benötigt als Basis eine Infrastruktur as a Service (IaaS) Implementierung. IaaS Anbieter kümmert sich dann um die Server und Container, während die Cloud Foundry sich um die Apps und der Verwaltung der Container kümmert.

Es werden eine ganze Reihe von IaaS Anbietern unterstützt. Darunter ist auch eine Open Source Variante OpenStack dabei. Eine mögliche Architektur für eine eigene Cloud Foundry wäre eine Kombination aus OpenStack und Cloud Foundry.

OpenStack stellt die Infrastruktur bereit. Darüber lässt sich die Rechenleistung der Cloud erweitern. Über die Cloud Foundry werden die Anwendungen und Services veröffentlicht, verteilt, skaliert.

Mit dieser Architektur lassen sich Anwendungen entwickeln und veröffentlichen. Nicht zu vernachlässigen ist aber auch die Möglichkeit die Anwendungen von Dritt-Anbietern in Container zu verlagern. Dadurch wird die Verwaltung vereinheitlicht. Zusätzlich kann ein Container viel einfacher integriert werden als eine neue Anwendung, deren Besonderheiten man kennen muss.

Programmiersprachen

Auch bei den Datenbanken muss man sich nicht für eine bestimmte Datenbank entscheiden. Die Datenbanken in der Cloud-Foundry werden durch Services abgebildet. In der SAP BTP wird neben der Hana auch die PostgreSQL- und die Redis-Datenbank als Service angeboten. MySQL-, MariaDB- und MongoDB-Datenbanken werden dagegen nicht angeboten. Wenn man eines dieser Datenbanken nutzt, wäre die SAP BTP nicht die richtige Wahl. Cloud Foundry kann mit Services beliebig erweitert werden und jeder Anbieter kann unterschiedliche und damit auch andere Services wie Datenbanken anbieten.

Datenbanken

Auch bei den Datenbanken muss man sich nicht für eine bestimmte Datenbank entscheiden. Die Datenbanken in der Cloud-Foundry werden durch Services abgebildet. In der SAP BTP wird neben der Hana auch die PostgreSQL- und die Redis-Datenbank als Service angeboten. MySQL-, MariaDB- und MongoDB-Datenbanken werden dagegen nicht angeboten. Wenn man eines dieser Datenbanken nutzt, wäre die SAP BTP nicht die richtige Wahl. Cloud Foundry kann mit Services beliebig erweitert werden und jeder Anbieter kann unterschiedliche und damit auch andere Services wie Datenbanken anbieten.

Das Framework

Das UI5 Framework ist eines von vielen JavaScript UI Frameworks. Allerdings ist die UI5 Community klein und beschränkt sich größtenteils auf die Entwickler, die in irgendeiner Form mit SAP zu tun haben. Bei den Vergleichen der beliebtesten Frameworks im Web wird UI5 nicht einmal aufgelistet.

In React oder Angular hat man deutlich mehr Freiheiten bei der Implementierung. Auch bei der Performance haben die anderen Frameworks die Nase vorn. Dafür punktet UI5 bei der Grundausstattung. An Internationalisierung, Clickjacking Protection oder behinderten gerechte UI muss man bei anderen Frameworks selbst denken, einbinden bzw. implementieren. Bei UI5 wird einem bereits vieles abgenommen. Man erreicht schneller qualitativ hohe Ergebnisse.

SAP-UI5, React, und Angular sind alles UI-Javascript Frameworks und basieren alle auf NodeJS. Dadurch unterscheiden sie sich beim Deployment und der Laufzeit nicht. Cloud Foundry kennt keine dieser Frameworks, aber es kennt NodeJS und hat für NodeJS Module ein Buildpack. Im Umkehrschluss bedeutet es, dass der SAP-BTP egal ist, ob man eine SAPUI5-App veröffentlicht oder wie in den Beispielen der CAP-Entwicklung von SAP ein Vue.js-Anwendung auf die SAP BTP bringt. Die Zukunft ist vielseitig, die Zukunft ist offen.

Trotz der vielseitigen Möglichkeiten, die uns die SAP in der Zukunft bietet, möchte man die eigene Landschaft homogen halten. UI5 ist die Oberflächen-Technologie auf die, die SAP setzt. Man wird zwar in der Zukunft auch eine App mit Vue.js in die SAP-BTP bringen können, doch lohnt sich die Einarbeitung in das Framework wohl kaum.

Für UI5 Entwickler eröffnet sich die Möglichkeit mit OpenUI5 Anwendungen zu schreiben, die auch außerhalb von SAP genutzt werden können. Um Hans Peter Seitz zu zitieren “UI5 ist zu schade, um nur gegen die SAP Backends eingesetzt zu werden”. Er hat auf der UI5 Conference bereits 2016 gezeigt, wie man eine OpenUI5 Fullstack Anwendung schreiben kann, die ohne ein SAP-Server betrieben werden kann.

In seinem Beispiel hat er als Backend ein Http-Server mit einer eigenen Implementierung eines Services verwendet. Als Datenbank kam MongoDB, eine No-SQL- Datenbank mit exzellenter Javascript Anbindung, zum Einsatz. Diese NodeJS-Anwendung hätte man Standalone betreiben können.

Diese Art der Implementierung bringt einige Nachteile mit sich. Man könnte diese Anwendung heute in der Cloud Foundry, allerdings wegen der Datenbank, nicht in der SAP BTP betreiben. So gut UI5 Framework auch ist, ist es an einigen Stellen zu sehr auf das OData Protokoll ausgerichtet. So zum Beispiel beim Paging, dem seitenweisen Laden der Daten. Diese Funktionalität müsste man ohne einen OData Service selbst implementieren.

Die Entwickler, die sich an die Vorteile des SADL-Frameworks gewöhnt haben, werden auch die Standard-Implementierungen für CRUD-Operationen schmerzlich vermissen.

BitLab

Unter dem Projektnamen BitLAb haben wir bei der Bitech an Möglichkeit geforscht, um OpenUI5-Anwendungen auch ohne SAP-Systeme betreiben zu können. Dabei sind ein paar Open-Source Projekte entstanden. Eines der Projekte war Nota, eine Implementierung des OData-Protokolls mit serverseitigen Javascript. Unser Fork des des node-odata Projektes von Zack Yang bietet eine Standard-Implementierung für die CRUD-Operationen, Paging und vieles mehr. Es steht unter MIT-Lizenz allen auch für kommerzielle Zwecke zur Verfügung und wir würden uns freuen, wenn Ihr diesen nutzen und an dem Projekt partizipieren wollt.

In Nota, kann man die Unterstützung für unterschiedliche Datenbanken implementieren. Die CRUD-Operationen sind für die Datenbank MongoDB implementiert. Damit lassen sich die Anwendungen zwar in einer Cloud Foundry betreiben, allerdings nicht in der SAP BTP, da dort, wie bereits oben erwähnt kein Service für die MongoDB zur Verfügung steht.

Ähnlich wie in Cloud Application Programmier Model lässt sich mit Note in Visual Studio Code eine Fullstack Anwendung entwickeln und in einer Cloud Foundry mit einem MongoDB-Service betreiben.

Die Definition und die Implementierung des OData-Services mit Nota erfolgt mit serverseitigen Javascript im gleichen Projekt wie eine UI5 Anwendung. Wir haben ebenfalls ein Yeoman-Generator entwickelt, mit dem man eine Projekthülle generieren kann. Trotzdem wird man sich mit dem Projekt Nota und seiner Syntax beschäftigen müssen. Die Vorteile dieses Ansatzes sind die freie Lizenz und die Nutzung eines OData-Services zusammen mit OpenUI5.

Cloud Application Programming Model (CAP)

Eine weitere Alternative bietet das Cloud Application Programmiermodel selbst dar. Der Großteil des CAP ist tatsächlich quelloffen und ist mit einer Entwicklerlizenz verfügbar. Die Lizenz erlaubt zwar nicht die Nutzung von CAP außerhalb der SAP-Landschaft, aber es verbietet sie auch nicht.

Mit dem Cloud Application Programmiermodel kann man ein OData-Service zusammen mit einer UI5-Benutzerpberfläche implementieren. Die Entwicklung und das Deployment von OpenUI5 Anwendungen unterscheiden sich damit nur minimal von den Entwicklungen von SAPUI5 Anwendungen für die SAP BTP. Man nutzt das erworbene Wissen sowohl innerhalb als auch außerhalb der SAP-Welt.

Der einzige Nachteil dieses Ansatzes ist die Entwickler-Lizenz. Der Kern von CAP wurde nie veröffentlicht. Die SAP kann in Zukunft entscheiden, mit CAP einen anderen Weg zu gehen.

Richard Martens arbeitet für die Bitech AG als SAPUI5 Berater. Er verfügt über weitreichende Kenntnisse SAP Hana, UI5 und OData.