Entwickeln mit HANA 2 – Der Tiger im Tank? Der Tiger im Tank? – Überblick 1. Die HANA und meine Perspektive darauf 2. HANA 1 im Vergleich zu „SQL/REST/SPA“ 3. Entwicklungsworkflow und Werkzeuge im Vergleich 4. HANA 2: Express Edition 5. HANA 2: XS Advanced 6. Fazit: Wann sollte man es tun? 2 | Paul Bläsi - HANA 2 - Tiger im Tank? Der Tiger im Tank? – Überblick 1. Die HANA und meine Perspektive darauf 2. HANA 1 im Vergleich zu „SQL/REST/SPA“ 3. Entwicklungsworkflow und Werkzeuge im Vergleich 4. HANA 2: Express Edition 5. HANA 2: XS Advanced 6. Fazit: Wann sollte man es tun? 3 | Paul Bläsi - HANA 2 - Tiger im Tank? Über was reden wir? – Der HANA-Stack HTML5-Browserclient SAP UI5 Appserver – XS Application Services SAP HANA DB 4 | Paul Bläsi - HANA 2 - Tiger im Tank? Meine Perspektive auf die HANA l Paul Bläsi: Software Architect – Backend-Entwicklung – Single Page Webanwendungen – Interesse an Verbesserung der Entwicklerproduktivität l eXXcellent solutions gmbh, Ulm – Realisierung von Kundenlösungen „nach Maß“ – Ein technischer Schwerpunkt: moderne – Webentwicklung Erfahrungen aus HANA-Projekten Wie geht individuelle Webentwicklung auf dem HANAStack? 5 | Paul Bläsi - HANA 2 - Tiger im Tank? Der Tiger im Tank? – Überblick 1. Die HANA und meine Perspektive darauf 2. HANA 1 im Vergleich zu „SQL/REST/SPA“ 3. Entwicklungsworkflow und Werkzeuge im Vergleich 4. HANA 2: Express Edition 5. HANA 2: XS Advanced 6. Fazit: Wann sollte man es tun? 6 | Paul Bläsi - HANA 2 - Tiger im Tank? HANA 1-Stack: Datenbank/ Appserver/ Client-libs l Client-Technologie l l – SAP UI5 als SPA-Framework – hoher Abstraktionsgrad, viel Widgets mit Semantik Appserver – Enge Verzahnung mit Datenbank – unterstützt deklarativ OData als REST-Schnittstelle – Ablaufumgebungen Java, Javascript (xsjs) Datenbank – In-Memory, SQL, ACID – Erweiterungen (analytisch, prodzedural) – Column- und Rowstore Engine 7 | Paul Bläsi - HANA 2 - Tiger im Tank? Zum Vergleich: SQL/ REST/ SPA-Framework l UI l l – HTML5 Browserclient – SPA, MVC-Framework Appserver – Java, Javascript, … – REST – Business-Services – Domain Model – ORM Datenbank: – SQL – NoSQL 8 | Paul Bläsi - HANA 2 - Tiger im Tank? Browserclient SPAFramework REST Services Domain Model ORM SQL/NoSQL Relevante Unterschiede: HANA 1 vs. B&B-Stack (1/2) l HANA-Appserver – Eng mit DB integriert – Unterstützt „möglichst viel in der DB ausführen“ – Bevorzugt Services, die Daten 1:1 weiterreichen – Business Logik etwas „heimatlos“, kein Domain Model 9 | Paul Bläsi - HANA 2 - Tiger im Tank? Relevante Unterschiede: HANA 1 vs. B&B-Stack (2/2) l Sehr gute Unterstützung eines „Standardwegs“ – UIs mit hohem Abstraktionsgrad/„normaler“ Semantik – Überwiegend lesende Zugriffe – Keine komplexen Modelltransformationen – Persistentes Modell mit Metadaten vorhanden l Höhere Hürden, um abweichende Anforderungen umzusetzen – Standardlibs schwer/nicht einbindbar – UIs mit abweichender Semantik/Lifecycle aufwändig 10 | Paul Bläsi - HANA 2 - Tiger im Tank? Zwischenfazit: HANA-Stack für die Webentwicklung? Viele Gemeinsamkeiten HANA ist ein Stack für die Webentwicklung Aber: Es gibt auch nennenswerte Unterschiede 11 | Paul Bläsi - HANA 2 - Tiger im Tank? Der Tiger im Tank? – Überblick 1. Die HANA und meine Perspektive darauf 2. HANA 1 im Vergleich zu „SQL/REST/SPA“ 3. Entwicklungsworkflow und Werkzeuge im Vergleich 4. HANA 2: Express Edition 5. HANA 2: XS Advanced 6. Fazit: Wann sollte man es tun? 12 | Paul Bläsi - HANA 2 - Tiger im Tank? HANA 1 Tools & Workflow: IDE l Zwei Alternativen – HANA Web Based Development Workbench – HANA Studio (Eclipse-basiert) l Viele Funktionen, verteilen sich auf beide IDEs 13 | Paul Bläsi - HANA 2 - Tiger im Tank? HANA 1 Tools & Workflow: HANA Repository: Zwitter DesignDesignartefakte Designartefakte Designartefakte artefakte (Sourcecode) Datenbankobjekte (Tabellen, Daten, Views, Procedures, …) HANA Repository Versionierung 14 | Paul Bläsi - HANA 2 - Tiger im Tank? Laufzeitobjekte Appserver HANA 1 Tools & Workflow: Sourcecode Repository l HANA-Repository: Zentrales Sourcecode Repository l Nur grundlegendste Funktionen der Versionsverwaltung: kein branching, merging, tagging l Zwitterrolle – Versionsverwaltung des Sourcecodes – Deployment der Artefakte in Datenbank/Appserver l Beim „Einchecken“: Deployment der Designartefakte 15 | Paul Bläsi - HANA 2 - Tiger im Tank? Relevante Unterschiede: Tooling and Workflow l IDE: Bei HANA wenig, sonst volle Auswahl l Teamarbeit bei HANA deutlich erschwert – Versionsverwaltung: Rückschritt gegenüber geübter l Praxis – umso schmerzhafter je größer das Entwicklerteam Am ehesten noch – Einzelner Entwickler, der mehrere Systeme zur Verfügung hat (Entw, Prod, Test, …) – Oder klar umrissene Trennung (z.B. front-/backend) 16 | Paul Bläsi - HANA 2 - Tiger im Tank? Workarounds sind möglich! l Getrennter Namensraum/Schema für jeden Entwickler l Sourcecode in git außerhalb des HANA Repository – Integration aller textbasierten Artefakte im SCM – volle Unterstützung für branch/merge etc. l Custom-Skripte, die Ersetzungen vornehmen l Deployment per REST-Schnittstelle zum Repository l Aber: Verwendung undokumentierter Schnittstellen, einige Reibungspunkte, Skalierbarkeit & 17 | Paul Bläsi - HANA 2 - Tiger im Tank? Und wofür das Ganze? Teamgröße Komplexität überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 18 | Paul Bläsi - HANA 2 - Tiger im Tank? komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Und wofür das Ganze? Teamgröße Reibungsverluste bei Teamarbeit Komplexität überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 19 | Paul Bläsi - HANA 2 - Tiger im Tank? komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Und wofür das Ganze? Teamgröße Zu einfach: Reibungsverluste bei Teamarbeit Keine IndividualEntwicklung Komplexität überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 20 | Paul Bläsi - HANA 2 - Tiger im Tank? komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Und wofür das Ganze? Teamgröße Zu einfach: Reibungsverluste bei Teamarbeit Keine IndividualEntwicklung Fehlende Standardlibs Ineffizienz bei Implementierung der Businesslogik und des UI Komplexität überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 21 | Paul Bläsi - HANA 2 - Tiger im Tank? komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Und wofür das Ganze? Teamgröße Zu einfach: Reibungsverluste bei Teamarbeit Keine IndividualEntwicklung Individuelle Entwicklung mit HANA 1 überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 22 | Paul Bläsi - HANA 2 - Tiger im Tank? Fehlende Standardlibs Ineffizienz bei Implementierung der Businesslogik und des UI Komplexität komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Der Tiger im Tank? – Überblick 1. Die HANA und meine Perspektive darauf 2. HANA 1 im Vergleich zu „SQL/REST/SPA“ 3. Entwicklungsworkflow und Werkzeuge im Vergleich 4. HANA 2: Express Edition 5. HANA 2: XS Advanced 6. Fazit: Wann sollte man es tun? 23 | Paul Bläsi - HANA 2 - Tiger im Tank? Was ist die HANA Express Edition? l Vollständige HANA mit DB, Appserver, Entwicklungstools l Frei verfügbar unter Entwicklerlizenz, kostenlos l Wenige Einschränkungen – max. 32 GB RAM = Datenbankgröße – einige Big Data-bezogene Funktionen fehlen – keine Integration in SAP Solution Manager l Geliefert als – VM Image (VM Ware, Virtual Box) – Installer mit Binärpaketen für SLES 12 24 | Paul Bläsi - HANA 2 - Tiger im Tank? HANA Express Edition als Virtuelle Maschine 25 | Paul Bläsi - HANA 2 - Tiger im Tank? Bewertung: HANA Express Edition zur Entwicklung l Im Prinzip gut ausführbar auf Entwicklerrechner l In-Memory-Db: min 12GB freies RAM erforderlich l Entwicklung möglich ohne zentrale HANA oder offline l Niedrige Einstiegshürde technisch/kaufmännisch l Aber: Minimum an HANA-Administration erforderlich – DNS-Einträge, Zertifikate, … – Benutzer, Benutzerrollen, „Spaces“, … 26 | Paul Bläsi - HANA 2 - Tiger im Tank? Der Tiger im Tank? – Überblick 1. Die HANA und meine Perspektive darauf 2. HANA 1 im Vergleich zu „SQL/REST/SPA“ 3. Entwicklungsworkflow und Werkzeuge im Vergleich 4. HANA 2: Express Edition 5. HANA 2: XS Advanced 6. Fazit: Wann sollte man es tun? 27 | Paul Bläsi - HANA 2 - Tiger im Tank? Was ist XS Advanced ? l Vollständige Überarbeitung des Appserver-Layers l Beginn in HANA 1 (SPS 11) l Seit SPS 12/HANA 2(SPS 0): XS Classic „abgekündigt“ HTML5 App central security service Application Router Node.js Runtime JAVA Runtime xsjs compatibility XS Advanced Runtime User Account/ Authent. HANA DI 28 | Paul Bläsi - HANA 2 - Tiger im Tank? SAP HANA Database Custom Runtime XS Classic RT (for several SPS levels) Was ändert sich mit XS Advanced ? l Workflow: – Ablösung des HANA Repository – Versionsverwaltung komplett im git – Deployment komplett von HDI übernommen l Architektur: – – – – – – „Multi-Target-Applications“ als Standardmodell Cloud Foundry-basiert „Microservices“ Standardmäßige Anbindung externer ID Provider XS-Benutzer müssen keine HANA DB User mehr sein Zugriff auf Datenbankcontainer via dediziertem technischen User l Ablösung der IDEs durch „Web IDE for SAP HANA“ – Löst „Web Based Development Workbench“ und „HANA Studio“ ab – Neuentwicklung, nicht verwandt mit bisheriger „Web IDE" 29 | Paul Bläsi - HANA 2 - Tiger im Tank? Entwicklungsworkflow ohne HANA Repository Web IDE: Projekt initialisieren In git remote branch zur Verfügung stellen (push) Web IDE: deploy/test In git remote branch programmieren/ integrieren In Web IDE Änderungen abholen (pull) 30 | Paul Bläsi - HANA 2 - Tiger im Tank? Auswirkung des neuen Workflow mit XS Advanced l Saubere Trennung Versionsverwaltung/Deploymenttool l Verwendung jeder beliebigen IDE für textbasierte l l Artefakte – Große Hilfe bei JS-Entwicklung – Allerdings keine Editoren für HANA-Spezifika (mta.yml, cds, …) Integration wie „gewohnt“ in git-branches – Paralleles, unabhängiges Deployment aus mehreren branches Zusammenarbeit im Team deutlich verbessert l Web IDE kann aber nicht komplett ersetzt werden – Editoren für HANA-Spezifika – Initialisierung und Steuerung des Deployments 31 | Paul Bläsi - HANA 2 - Tiger im Tank? „Microservices“ in HANA 2 HTML5 App central security service Application Router Node.js Runtime JAVA Runtime xsjs compatibility XS Advanced Runtime User Account/ Authent. l l l l l l l HANA DI Custom Runtime XS Classic RT (for several SPS levels) SAP HANA Database XS Advanced Runtime basiert auf CloudFoundry Javascript Runtime basiert nicht mehr auf xsjs-API, sondern auf Node.js mit Modulen Eines dieser (mitgelieferten) Module ist ein xsjs-Kompatibilitätsmodul Installation weiterer Module auf Standardweg (npm und package.json) Auch Datenbankcontainer werden über einen Microservice zur Verfügung gestellt SAP UI5 lib kann versioniert als Microservices zur Verfügung gestellt werden Custom Apps verteilen sich auf mehrere Microservices, deklarative Abhängigkeiten 32 | Paul Bläsi - HANA 2 - Tiger im Tank? Auswirkungen des Microservice-Ansatzes l Verwendung von Standardlibs (Node-Modulen in JSl l l Runtime) deutlich erleichtert Feinere Strukturierung von Induvidualentwicklungen erleichtert größere (komplexere) Projekte Skalierbarkeit verbessert – Connection Pooling durch technischen DB-User – UI5 als Microservice statt mit jeder App deployt Größere/komplexere Apps besser unterstützt l Allerdings auch höhere Komplexität für kleine Projekte 33 | Paul Bläsi - HANA 2 - Tiger im Tank? Bewertung: HANA 2: Express Edition und XS Advanced Workflow orientiert am Standard („git“) Verbesserung der Zusammenarbeit im Team Express Edition Isolierte und offline Arbeit, Entwicklertests ohne HANA JS-Runtime basiert auf Node.js Microservices 34 | Paul Bläsi - HANA 2 - Tiger im Tank? Reibungsverluste verkleinert Entwicklerproduktivität erhöht Verwendung von Standardmodulen Schub für Backendseitige JavascriptEntwicklung Feinere Strukturierung großer Anwendungen Höhere Komplexität besser unterstützt Grund zum Jubel? – Pro und Contra! l HANA 2: Änderungen gehen in l Erhöhte Komplexität lohnt evtl. l l l l l l die richtige Richtung! Unterstützung des git-basierten Workflows macht Teams produktiver. HANA Express ermöglicht unabhängiges Entwickeln. Unterstützung von aktuellem Node.js deutliche Verbesserung Datenbankcontainer mit technischen Usern und externe ID-Provider „state of the art“. Microservices helfen, große Anwendungen zu strukturieren. 35 | Paul Bläsi - HANA 2 - Tiger im Tank? l l l nicht für kleine Projekte. SAP Web IDE hat noch nicht Funktionalität und Reife der früheren IDEs (Web/Eclipse). Weite Teile der Plattform sind Neuentwicklungen, deren Produktionsreife erst erprobt werden muss. Express Edition funktioniert nicht ohne jeden Administrationsaufwand Für vorhandene Projekte Migrationsaufwand einplanen! Was ändert HANA 2? Teamgröße Zu einfach: Reibungsverluste bei Teamarbeit Keine IndividualEntwicklung Individuelle Entwicklung mit HANA 1 überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 36 | Paul Bläsi - HANA 2 - Tiger im Tank? Fehlende Standardlibs Ineffizienz bei Implementierung der Businesslogik und des UI Komplexität komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Was ändert HANA 2? Teamgröße Zu einfach: Reibungsverluste bei Teamarbeit Keine IndividualEntwicklung Individuelle Entwicklung mit HANA 1 überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 37 | Paul Bläsi - HANA 2 - Tiger im Tank? Fehlende Standardlibs Ineffizienz bei Implementierung der Businesslogik und des UI Komplexität komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Was ändert HANA 2? Teamgröße Reibungsverluste bei Teamarbeit Zu einfach: Fehlende Standardlibs Keine IndividualEntwicklung Ineffizienz bei Implementierung der Businesslogik und des UI Individuelle Entwicklung mit HANA 1 überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 38 | Paul Bläsi - HANA 2 - Tiger im Tank? Komplexität komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Was ändert HANA 2? Teamgröße Reibungsverluste Zu einfach: Standardlibs Implementierung der Businesslogik und des UI Keine IndividualEntwicklung Individuelle Entwicklung mit HANA 1 überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 39 | Paul Bläsi - HANA 2 - Tiger im Tank? bei Teamarbeit Komplexität komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Was ändert HANA 2? Teamgröße Reibungsverluste bei Teamarbeit Zu einfach: Keine IndividualEntwicklung Standardlibs Individuelle Entwicklung mit HANA 2 Implementierung der Businesslogik und des UI Komplexität überwiegend Lesezugriff/Visualisierung Standard-Szenarien (master/detail) vorgefertigte Widgets 40 | Paul Bläsi - HANA 2 - Tiger im Tank? komplexe Ablauflogik Non-Standard-Anforderungen komplizierte UIs Der Tiger im Tank? – Überblick 1. Die HANA und meine Perspektive darauf 2. HANA 1 im Vergleich zu „SQL/REST/SPA“ 3. Entwicklungsworkflow und Werkzeuge im Vergleich 4. HANA 2: Express Edition 5. HANA 2: XS Advanced 6. Fazit: Wann sollte man es tun? 41 | Paul Bläsi - HANA 2 - Tiger im Tank? Fazit: Individualentwicklung auf HANA wagen? l Mit HANA 2 wird der Anwendungsbereich größer l Es spielen noch andere Faktoren eine Rolle – UI-Konzept: Standard oder Speziell? – Anforderungen an analytische Funktionen der DB – In Memory/Big Data – Betriebsthemen – Einbindung in vorhandene SAP-Landschaften l Immer auch alternative Stacks berücksichtigen – SQL/REST/SPA-Framework – Anbindung der HANA DB über plain old SQL/JDBC 42 | Paul Bläsi - HANA 2 - Tiger im Tank? Fragen? Anmerkungen? Ihre Erfahrungen? Quellen und Verweise l SAP HANA 2 Docs: http://help.sap.com/hana_platform l HANA Express Edition @SAP: l l l http://www.sap.com/developer/topics/sap-hana-express.html SAP UI5: http://www.sap.com/developer/topics/ui5.html OData (Version 2): http://www.odata.org/documentation/odataversion-2-0/ Cloud Foundry: https://www.cloudfoundry.org/ l HANA @eXXcellent solutions: https://www.exxcellent.de/software/software-entwicklung/saphana/ 44 | Paul Bläsi - HANA 2 - Tiger im Tank?