T Ein Tavendo Whitepaper Juli 2012 Tavendo WebMQ – Web Message Broker Eine Einführung für IT Architekten in Einsatzszenarien und Technologie von Tavendo WebMQ T Zusammenfassung Tavendo WebMQ ist ein Web Message Broker der als Vermittlungsstelle für die Kommunikation in modernen Webanwendungen agiert. Tavendo WebMQ bietet eine breite Palette an flexiblen Integrationsmöglichkeiten, die sorgfältig für verschiedene Einsatzszenarien konzipiert wurden. Er basiert auf Technologie die auf Robustheit, Interoperabilität und Skalierbarkeit optimiert wurde und bietet umfassende Administrations- und Sicherheitseigenschaften speziell für den Einsatz in Unternehmen. Dieses Whitepaper bietet einen Überblick über verschiedene Einsatzszenarien für WebMQ, und beschreibt die WebMQ zugrunde liegende Technologie. Inhalt 1 Einsatzszenarien ......................................................................................................... 2 1.1 Erweiterung bestehender Web Applikationen um Push ......................................... 2 1.1.1 Von HTTP zu WebSocket ................................................................................ 2 1.1.2 Probleme bestehender Plattformen mit WebSocket..................................... 2 1.1.3 Tavendo WebMQ – Push ohne Plattformwechsel ......................................... 3 1.2 HTML5 Frontends in einer service-orientierten Architektur ................................... 4 1.2.1 Von Multi- zu Single-Page .............................................................................. 4 1.2.2 Anbindung von APIs über WebSocket............................................................ 5 1.3 HTML5 Frontends für Oracle Anwendungen ........................................................... 6 2 Technologie ................................................................................................................ 7 2.1 WebSocket ............................................................................................................... 7 2.2 WebSocket Application Messaging Protokoll .......................................................... 8 1 T 1 Einsatzszenarien 1.1 Erweiterung bestehender Web Applikationen um Push Webanwendungen haben heute in der Regel keine Möglichkeit aktiv Informationen an Browser-Frontends zu verteilen. Änderungen an Backend-Daten, Backend-Ereignisse oder Aktionen anderer Benutzer können nicht vom Webserver an den Browser gepusht werden. Benutzer bekommen solche Informationen bestenfalls nach einem Reload der Seite angezeigt. 1.1.1 Von HTTP zu WebSocket Durch die Verwendung von HTTP unterliegen Webanwendungen den Einschränkungen einer strikten Request/Response Kommunikation: keine bidirektionale Kommunikation hohe Latenzzeiten hoher Overhead für jeden Request/Response Über die Jahre wurden verschiedene Workarounds entwickelt, die versuchen die Auswirkungen dieser Beschränkungen von HTTP zu verringern. Von diesen funktioniert keiner wirklich zufriedenstellend, und alle bringen ihre eigenen zusätzlichen Probleme mit sich. Mit WebSocket existiert seit kurzer Zeit erstmals ein standardisiertes (IETF), offenes Web-Protokoll, das obige Einschränkungen eliminiert. WebSocket ermöglicht bidirektionales Messaging mit sehr geringen Latenzen und Overhead ist in allen modernen Browsern bereits eingebaut Eine kurze Einführung in WebSocket findet sich hier: 1. 2. 1.1.2 http://www.slideshare.net/pmoskovi/building-living-web-applications-with-html5-websockets https://speakerdeck.com/embed/4fa18705843f27001f013c31# Probleme bestehender Plattformen mit WebSocket Moderne Browser unterstützen WebSocket nativ. Auf der Server-Seite ist jedoch ebenfalls eine geeignete Plattform nötig: der Netzwerk-Stack muss für eine große Anzahl langlebiger Verbindungen gebaut sein die asynchrone Verarbeitung von Nachrichten erfordert ein entsprechendes Programmiermodell 2 T Klassische Plattformen für Web Applikationen wie z.B. Apache/PHP Tomcat/JSF ASP.NET erfüllen diese Anforderungen nicht. Eine Migration oder Neuentwicklung einer bestehenden Webanwendungen auf eine geeignete Plattform ist mit hohen Kosten, Risiken und Zeitaufwand verbunden. Weiter ist Know-how in der Anwendungsentwicklung für dies Plattformen nötig, die alle auf einem asynchronen, Ereignis-getriebenen Programmiermodell basieren. 1.1.3 Tavendo WebMQ – Push ohne Plattformwechsel Hier setzt Tavendo WebMQ an. Tavendo WebMQ erlaubt es existierende Webanwendungen schnell, einfach und ohne Austausch der Anwendungsplattform um Echtzeit-Eigenschaften und Push zu ergänzen. Es ist kein spezielles Know-how nötig. Tavendo WebMQ wird neben den existierenden Webserver gestellt. WebMQ hält auf der Client-Seite WebSocket-Verbindungen zu den Browsern, und hat auf der BackendSeite eine REST API, die es dem bestehenden Webserver erlaubt, mit einem HTTP/POST Informationen an alle Browser zu verteilen. Die Interaktion zwischen Browser und dem Webserver bleibt unverändert. Das Absetzen von HTTP-Requests aus Webservern heraus ist auf so gut wie allen Plattformen sehr einfach und mit wenigen Zeilen Code möglich. Da die WebSocket Kommunikation komplett von Tavendo WebMQ durchgeführt wird besteht keine Notwendigkeit, die Anwendungsplattform auszutauschen oder die Anwendung zu migrieren bzw. neu zu implementieren. 3 T 1.2 HTML5 Frontends in einer service-orientierten Architektur Mit HTML5 rollt eine technologische Revolution auf die Industrie zu, deren Auswirkungen und Bedeutung bereits jetzt zu sehen sind. Abzulesen ist dies exemplarisch an jüngsten strategischen Entscheidungen von Adobe und Microsoft: Adobe hat das Ende der Entwicklung für Flash/Mobile angekündigt Mit Windows 8 schwenkt Microsoft von .NET/Silverlight auf HTML5 um Beide Firmen haben langjährig und in beträchtlichem Maße in die nun aufs Abstellgleis beförderten Technologien investiert. Der Hintergrund für derart weitreichende Neuausrichtungen ist jedoch eindeutig: Mit HTML5 wird der Browser erstmals zu einer Anwendungs-Runtime die konkurrenzfähig mit nativen Desktop-Anwendungen, Flash und Silverlight ist (oder diese hinter sich lässt), aber plattformübergreifend und offen standardisiert verfügbar ist. Mit HTML5 wird das Versprechen von „write once, run anywhere“ tatsächlich eingelöst. Dieser Wechsel hin zu HTML5 wird auf breiter Front Auswirkungen und Veränderungen anstoßen, auch was die Anwendungsarchitektur und Rollenverteilung über Anwendungsschichten hinweg betrifft. 1.2.1 Von Multi- zu Single-Page Die klassische Architektur von Webanwendungen ist dreischichtig: Hierbei ist der Web-Anwendungsserver u.a. zuständig für das rendern von Webseiten und die Anwendung besteht aus einer größeren Anzahl von Seiten. Mit HTML5 werden jedoch Anwendungen, die ein desktopähnliches Benutzererlebnis bieten, anders gebaut: statt vieler einzelnen Webseiten besteht das Frontend aus nur einer Seite, in der mittels JavaScript alle Logik für das Benutzerinterface enthalten ist. Aus dieser JavaScript-Logik heraus wird dann die Darstellung der Seite verändert, ohne dass hierfür Daten vom Server geladen werden. 4 T Bekannte Beispiele für solche „Single-Page Web Apps“ sind Google Gmail Google Docs In einer solchen Anwendung ist die mittlere Schicht nicht mehr für das Rendern von Seiten zuständig. Ihr bleibt die Rolle als Service-Schicht, die vom Frontend angesprochen wird. 1.2.2 Anbindung von APIs über WebSocket Anwendungsserver in einer Service-orientierten Architektur stellen heute ihre Dienste üblicherweise als Web-Services über ein HTTP-basiertes Protokoll zur Verfügung, wie z.B. SOAP REST Ext.Direct Diese APIs können aus HTML5-Anwendungen direkt über HTTP genutzt werden. Tavendo WebMQ erlaubt die Anbindung von HTML5 Frontends an die Service-API von Anwendungsservern über WebSocket anstelle von HTTP. Hierbei wird der Aufruf der Service-API durch den Browser von Tavendo WebMQ über eine WebSocket-Verbindung entgegengenommen. WebMQ vermittelt dann diesen Aufruf an den eigentlichen Zielserver über HTTP (SOAP, REST oder Ext.Direct) weiter. Dies hat gegenüber dem direkten Aufruf eine Reihe von Vorteilen: 1. 2. 3. 4. 5. nur ein Protokoll auf Seite des Clients nur eine Browser-Server Verbindung verminderter Netzwerkverkehr, insb. für Mobile Clients wirklich asynchron: langsame API-Aufrufe blockieren keine nachfolgenden Aufruf von Service APIs verschiedener Server (keine Cross-Domain Probleme) Wenn ein Push vom Webserver zum Browser über WebMQ implementiert ist, dann erfolgt dieser ebenfalls über die gleiche WebSocket-Verbindung zum Browser. 5 T Eine Übersicht über die möglichen Integrations- und Kommunikationsmuster die von Tavendo WebMQ unterstützt werden findet sich hier: http://www.tavendo.de/webmq/resources/integration Zusammenfassend bietet Tavendo WebMQ eine universelle Kommunikationsplattform für moderne HTML5-Frontends, sowohl für Aufrufe von Web-Services als auch für Server-Push und Browser-to-Browser Kommunikation. 1.3 HTML5 Frontends für Oracle Anwendungen In vielen Szenarien ist die Implementierung einer service-orientierten Schicht bereits in Oracle sinnvoll. Geschäftslogik und Datenmanagement können in der Datenbank zentralisiert werden und sind dann anwendungsübegreifend und konsistent verfügbar. Die Ausführung von Geschäftslogik innerhalb der Datenbank nahe an den eigentlichen Daten hat signifikante Performanz- und Sicherheitsvorteile gegenüber eine Implementierung auf einem Anwendungsserver in der mittleren Schicht. Mit HTML5 wird die Benutzeroberfläche und sämtliche oberflächen-orientierte Logik in den Browser verlagert. In Kombination mit einer service-orientierten Schicht in der Datenbank stellt sich die Frage, was dann eigentlich die Rolle und Funktion der mittleren Schicht ist. Tavendo WebMQ „Oracle Edition“ ermöglicht die Anbindung von HTML5-basierten Web-Frontends direkt an Oracle, schnell und einfach, und ohne Anwendungs-/ServiceProgrammierung auf der mittleren Schicht. Tavendo WebMQ „Oracle Edition“ agiert hierbei als reine Vermittlungsstelle für die Kommunikation zwischen HTML5-Frontends und Oracle Backend-Datenbanken und ermöglicht: 1. Aufruf von Oracle Stored Procedures aus HTML5/JavaScript-Frontends 2. Push von Daten direkt aus Oracle Stored Procedures oder Triggern Es ist damit kein Anwendungsserver auf der mittleren Schicht mehr notwendig. 6 T Da keine Programmierung auf der mittleren Schicht notwendig ist, wird kein Know-How für die Entwicklung in Java, .NET, PHP, Ruby, Python o.ä. benötigt. Erforderlich sind nurmehr zwei Entwicklerprofile: Oracle SQL und PL/SQL HTML5/CSS/JavaScript Das Wegfallen von Programmierung auf der mittleren Schicht und eine saubere, service-orientierte Schnittstelle zwischen Front- und Backend verringern die Komplexität und Wartbarkeit der Anwendung, und erlauben eine schnellere Umsetzung. Tavendo WebMQ „Oracle Edition“ befindet sich momentan in Entwicklung und ist für Q4 2012 als Beta geplant. 2 Technologie 2.1 WebSocket Tavendo hat frühzeitig in die neue Basistechnologie WebSocket investiert und umfassendes Know-How gewonnen. Tavendo bietet mit Autobahn WebSocket TestSuite (http://autobahn.ws/testsuite) eine freie WebSocket Protokoll-Testsuite an, welche von mehr als zwei Dutzend Projekten und Firmen eingesetzt wird (Google, Mozilla, Microsoft, Tomcat usw.) und sich zum Quasi-Standard entwickelt hat, was das Testen von WebSocket Implementierungen angeht. Tavendo WebMQ profitiert von der hierbei gewonnenen Erfahrung bezüglich seiner Robustheit und Interoperabilität. Mit Autobahn WebSocket (http://autobahn.ws/) bietet Tavendo eine Reihe von WebSocket Client- und Server-Implementierungen für verschiedene Plattformen als Open-Source an. Auf der Server-Seite nutzt Tavendo WebMQ die skalierbare und performante Basis von AutobahnPython. Auf der Client-Seite erlaubt AutobahnJS es, HTML5-Anwendungen mit Tavendo WebMQ zu verbinden. Darüber hinaus besteht über AutobahnAndroid die Möglichkeit, auch native Android-Clients zu integrieren. 7 T 2.2 WebSocket Application Messaging Protokoll WebSocket als solches bietet zwar bidirektionale Kommunikation mit geringem Overhead und Latenzzeiten, ist aber sehr systemnah. Was Webanwendungen in der Regel benötigen sind Kommunikationsmuster für Publish & Subscribe (PubSub) - http://en.wikipedia.org/wiki/PubSub Remote Procedure Calls (RPC) - http://en.wikipedia.org/wiki/Remote_procedure_call So werden z.B. in einer Web-Anwendung für Kinokarten-Verkäufe die Verkaufsvorgänge von den einzelnen Verkaufsterminals per RPC an den Server gemeldet. Alle andere Terminals, an denen die aktuelle Verfügbarkeit von Sitzen angezeigt wird, sind auf das Ereignis „Sitz belegt“ abonniert, und erhalten die Meldung über neu belegte Sitze als PubSub-Nachricht. Die gesamte Kommunikation wird hier idealerweise über ein einziges Protokoll abgewickelt, welches sowohl PubSub als auch RPC ermöglicht. Tavendo hat die Notwendigkeit für ein derartige Lösung erkannt und ein offen standardisiertes, WebSocket-basiertes Protokoll entwickelt: „The WebSocket Application Messaging Protocol“ (WAMP) http://wamp.ws/ Die Kommunikation zwischen Tavendo WebMQ und dem Browser basiert vollständig auf WAMP. Mit der Kombination aus WebSocket und WAMP steht Tavendo WebMQ auf einer robusten, flexiblen und zukunftssicheren technischen Basis. Weitere Informationen zu Tavendo WebMQ finden sich unter http://tavendo.de/webmq 8 T Whitepaper erstellt von: Tavendo GmbH Waldstraße 18 91054 Erlangen Germany Email [email protected] Copyright 2012. Tavendo GmbH. Alle Rechte vorbehalten. Dieses Dokument wird rein zur Informationszwecken zur Verfügung gestellt, und der Inhalt kann sich jederzeit ohne weiteren Hinweis ändern. Es wird keine Garantie dafür übernommen, dass dieses Dokument fehlerfrei ist, noch andere Garantien. Es erfolgt ein ausdrücklicher Ausschluss jeglicher Haftung im Hinblick auf Verwendung dieses Dokumentes. Durch dieses Dokument wird weder direkt noch indirekt ein Vertragsverhältnis egal welcher Art begründet. Tavendo ist ein registriertes Warenzeichen der Tavendo GmbH. WebMQ ist ein Warenzeichen der Tavendo GmbH. Andere hier verwendete Namen können Warenzeichen ihrer jeweiligen Eigentümer sein. 9