Interview mit Mike Lohmann und Stefan Schadwinkel

„Storm ist für Echtzeitdatenanalyse, was Hadoop für Batchdatenanalyse ist“
Kommentare

Big Data und Echtzeitverarbeitung von enormen Datenmengen – große Themen, die auch im PHP-Umfeld immer wichtiger werden. Mittlerweile gibt es zahlreiche Hilfsmittel in diesem Umfeld, aber viele sind extrem spezialisiert oder auf eine Technologie festgelegt. Da trifft es sich natürlich gut, dass Mike Lohmann und Stefan Schadwinkel auf der IPC einen Workshop halten, indem es um ein Framework geht, dass technologieneutral ist und die oben beschriebenen Punkte abdeckt. Da wollten wir natürlich mehr erfahren!

PHP Magazin: Mike, Stefan – ihr bewegt euch beide schon seit längerem im Web. Was war eurer Meinung nach die größte technologische Errungenschaft, die das Web in den letzten Jahren zu bieten hatte?

Mike: Die technischen Errungenschaften der letzten Jahre sind ja Lösungen für Problemstellungen, die neue Anforderungen aufgeworfen haben, welche es vorher so in der Form nicht gab. Diese Anforderungen waren zum einen maßgeblich bestimmt von der mobilen Revolution und zum anderen durch die immer größer werdenden Community-Netzwerke. In beiden Bereichen ist das große zu hebende Potential die Nutzung der persönlichen Daten eines Users und dessen Verbindungen zum Beispiel für profilbasierte Marketing- und Werbekampagnen, Produktvorschläge oder Dating.

Die Entscheidung, was dem User nun angezeigt werden soll, muss in nahezu Echtzeit getroffen und das Ergebnis ebenso schnell angezeigt werden. Viele verschiedene Datenquellen müssen dabei zur Entscheidungsfindung herangezogen werden können. Mit einer einfachen LAMP PHP-App alleine ist das nur sehr begrenzt zu leisten. Deshalb braucht es neue Technologien, die in der Lage sind, die notwendigen Daten zu verarbeiten und zu liefern um die neuen Anforderungen zu erfüllen und sich möglichst in die vorhandene Struktur einbetten lassen.

Hier kommen zum Beispiel NodeJS als Schnittstelle zur Annahme / Ausspielen von Daten über stehende Verbindungen wie WebSockets; Datensenken zum Dumpen der Datenströme, Hadoop zur (zeitnahen) Analyse von Terrabytes von Daten und natürlich Apache Storm zur Echtzeitdatenstromverarbeitung unter Einbeziehung zum Beispiel der Hadoop-Map-Reduce-Ergebnisse, der PHP-App-Daten und Twitter Firehose zum Einsatz.

Aber auch im PHP Umfeld passierte ja so einiges: Mit Symfony2 (inkl. Composer, Behat und Phing) ist ein PHP-basiertes Enterprise-Framework an den Start gegangen, das einfach zu erweitern und zu nutzen ist und eine riesige Open-Source-Community hat. Dazu kommt mit der HipHop VM eine kleine Revolution für PHP-Apps (jedenfalls die meisten), die über einen JIT Compiler ausgeführt werden.

Nicht zu vergessen der ganze Bereich Automatisierung von Deployment, Integration, Testing und Hosting u.a.  mit Jenkins, Puppet und Vagrant.

Die Kombination all dieser Technologien und der Möglichkeit, sie in vorhandene Strukturen einzubetten, ermöglicht echtzeitbasiertes, datadriven Web, erhöht signifikant die User-Experience und schafft komplett neue, interessante Betätigungs- und Geschäftsfelder. Das ist für mich die größte technische Errungenschaft der vergangenen Jahre.

PHP Magazin: Warum ist gerade dieser Real-time-Aspekt so wichtig?

Stefan: Die Bedeutung des Real-time-Aspektes nimmt zu, ganz einfach weil es mittlerweile möglich ist, Daten direkt zu erheben und rechtzeitig sinnvoll anzuwenden. Dies ermöglicht einerseits komplett neue Einsatzzwecke, wie z.B. die direkte Individualisierung der aktuellen Kundeninteraktion, welche vielerlei Datenquellen zu Rate zieht, oder auch sehr zeitnahes Wissen um Ergebnisse einer Aktion und damit die Möglichkeit, diese direkt am Markt zu optimieren. Diese Kurzfristigkeit war in bestimmten Bereichen schon immer ein Thema, z.B. bei Betrugserkennung oder im Finanzsektor. Allerdings hat das enorme Wachstum der letzten Jahre im Mobile-Bereich die Relevanz von sehr zeitnaher Information in vielen Bereichen stark erhöht. Darin liegt noch eine Menge momentan ungenutztes Potential. Gerade auch die in den nächsten Jahren noch weiter voranschreitende Verknüpfung von Desktop und Mobile wird dies ebenfalls noch weiter steigern.


Mike Lohmann
Since 1998 Mike Lohmann works as software engineer focussing on web technologies. His passion is to bring PHP applications to the next level. Mike is co-founder of DECK36 where he is consultant and engineer in the fields of automation and software architecture for complex web and mobile systems.

Stefan Schadwinkel Dr. Stefan Schadwinkel, graduated in computer science with a focus on artificial intelligence, he later on received his PhD in human sciences. With his unique broad experience as architect, developer and analytics expert for big data solutions, he supports teams to take the right path in the complex world of big data. Stefan is co-founder of DECK36 where he works as consultant and engineer with focus on analytics and data logistics for modern online systems.

 

PHP Magazin: Welche Einsatzgebiete seht ihr dafür?

Mike: Einige Use Cases sind ja schon genannt worden. Vielleicht kann man noch die Bereiche Onlinespiele mit In-App-Benachrichtigung des Users, Fraud-Prevention und Detection, Hilfesysteme und viele mehr, als für Echtzeitbasierte Datenstromanalyse sehr gut geeignet bezeichnen.

Stefan: Als Content-Publisher bietet sich die Möglichkeit, die Relevanz von Content oder auch bestimmten Bedienelementen direkt am Markt zu optimieren und somit sehr zeitnah auf bestimmte Trends oder Stimmungen reagieren zu können. Falls man ein ganzes Contentnetzwerk betreibt, also beispielsweise auch ein Blognetzwerk, so kann man datengetrieben Nutzern von bestimmten Plattformen oder Blogs auch weitere sehr relevante, aber evtl. noch unbekannte Inhalte der Partnerblogs, etc. empfehlen. Unabhängig von der Onlinewelt gibt es aber Echtzeitdatenanalysen auch in vielen weiteren Bereichen. Im Finanzsektor gibt es Technologien die ähnlich zu Storm sind schon lange, diese sind aber proprietär und sehr teuer. Andere Branchen beginnen gerade erst, die Big-Data-Potentiale zu heben. Große Engineeringfirmen beginnen vermehrt, Sensordaten von z.B. Wind- oder Gasturbinen nicht nur in der Entwicklung, sondern während der gesamten Laufzeit aufzuzeichnen, um die Effizienz der Turbinen zu steigern und Wartungszyklen zu optimieren. Ein ähnlich großes Potential gibt es natürlich auch in angrenzenden Bereichen wie Automotive, Logistik, Healthcare, etc. GE produziert dazu aktuell sogar eine Web-Serie namens „Datalandia“ im Hamburger Miniatur-Wunderland.

PHP Magazin: Auf der International PHP Conference haltet ihr einen Workshop zum Thema Real-time User Interaction mit Twitter Storm. Was genau ist Twitter Storm, und wie spielt das der Thematik in die Karten?

Stefan: Storm ist ein verteiltes System zur Echtzeitverarbeitung von Datenereignissen. Es wurde initial von Nathan Marz bei BackType entwickelt, später wurden diese von Twitter übernommen. Mittlerweile befindet sich Storm aber im Apache Incubator und wird zukünftig daher auch als Apache Storm bezeichnet.

Mike: Für mich ist sehr spannend, dass man mit dem Apache-Storm-Framework nicht auf bestimmte Sprachen festgelegt ist. Durch das Storm Multi-Language Protocol kann man sehr einfach PHP-Klassen innerhalb von Storm nutzen. Dadurch kann man die Ergebnisse der Storm-basierten Berechnung sehr einfach in seine gesamte PHP-Applikation zurückfließen lassen. Ebenso kann man natürlich auch die schon in PHP vorhandene Businesslogik nutzen, um diese Ergebnisse anzureichern.

Storm ist für Echtzeitdatenanalyse, was Hadoop für Batchdatenanalyse ist. In Hadoop werden N Nodes genutzt, um per Map-Reduce aus den gesammelten Daten Ergebnisse zu erstellen. Genauso funktioniert auch Storm, nur das es kleine Datennachrichten, sogenannte Tupel, aus verschieden Quellen in Echtzeit verarbeitet und damit schnell Ergebnisse erstellen kann. Im Idealfall kombiniert man beide Technologien. Zum Beispiel kann Hadoop in der Nacht den Stammdatensatz updaten und Storm legt dann ein Increment an, mit dem dann neue Ergebnisse produziert werden können.

PHP Magazin: Wie kann man sich das in Aktion vorstellen?

Stefan: Grundsätzlich kann man wie bei anderen Clusterlösungen einfach einen „Storm-Job“ beauftragen. Dieser wird dann verteilt und parallel zu anderen Jobs auf der entsprechenden Infrastruktur ausgeführt. Der wesentliche Punkt bei Storm ist nun, dass diese Jobs niemals „fertig werden“ und kontinuierlich, auch nach einem Neustart des Clusters, weiterlaufen. Ein solcher Job wird „Topologie“ genannt und repräsentiert einen Graph, dessen Knoten Daten produzieren und konsumieren können. Diese Knoten können dann beliebig über interne Queues zu sehr komplexen Verarbeitungspipelines verbunden werden.

PHP Magazin: Ihr wollt zeigen, wie man diese Realtime-Funktionalität in ein PHP-Backend integriert. Was gibt es dabei zu beachten?

Mike: Wenn man Anforderungen hat, die Echtzeitdatenberechnung bedingen, dann ist es relativ einfach, diese mit Storm umzusetzen. Storm kann zur Entwicklung einer Anwendung auf dem lokalen Rechner laufen. Später kann man mit einem einfachen Deployscript erstellte Topologien auf den Live-Storm-Cluster deployen. Das Storm-Framework bietet das Storm-Multi-Language-Protokoll, an mit dem man sehr einfach jede Sprache zur Implementierung von Spouts und Bolts nutzen kann.

Wir haben die für unseren Workshop entwickelten Klassen für PHP bei GitHub online gestellt. Die kann man gut als Basis verwenden, um darauf aufbauend seine Storm-basierte Echtzeit-Applikation mit PHP umzusetzen. Ebenfalls bei GitHub findet sich ein Symfony-Bundle, dass die einfache Ausführung von Bolts und Spouts mit Zugriff auf den DIC ermöglicht.

Mit dem AcmeStorm-Projekt gibt es auch eine Beispielimplementierung auf Basis des Symfony2-Acme Projektes.

Hier die Links:

PHP Magazin: Erhöht das nicht die Komplexität, beispielsweise bei der Fehlersuche?

Stefan: Durch die Hinzunahme einer weiteren Technologie und deren Verbindung zu einem PHP-Projekt erhöht sich natürlich grundsätzlich erst einmal die allgemeine Komplexität. Im Vergleich zu einer reinen PHP-Lösung, welche aus einer Vielzahl von lose gekoppelten PHP-Workern bestehen würde, wird aber der zum Aufbau und Betrieb notwendige Aufwand durch das zentrale Management stark minimiert. Weiterhin müsste jeder PHP-Prozess zusätzlich individuell überwacht werden, ebenso kann es in Fehlerfällen sehr schnell zu Unklarheiten bezüglich des Gesamtverarbeitungszustandes und damit zu inkonsistenten Daten kommen. Durch den übergeordneten Kontext der Topologie ist der Gesamtzusammenhang der Verarbeitungspipeline innerhalb von Storm bekannt und somit können durch Ausfälle betroffene Komponenten automatisch auf anderen Maschinen gestartet und nur die unvollständig bearbeiteten Datenereignisse wiederholt werden. Ein weiterer Vorteil ist die einfache Skalierbarkeit von Storm. Dadurch wird z.B. auch das Management von Lastspitzen sehr viel einfacher als dies mit einem Netzwerk aus unabhängigen PHP-Workern und Cronjobs möglich wäre.

PHP Magazin: Was sind eurer Meinung nach die nächsten logischen Schritte – welche Features oder Technologien werden auf Storm aufsetzen?

Stefan: Storm ist mittlerweile sehr robust und wird von vielen bekannten Firmen für wirklich große Workloads eingesetzt. Einen guten Überblick findet man dazu auf der Seite des Storm-Projektes.

Viele dieser Firmen benutzen allerdings Storm direkt im Java-Umfeld. Storm läuft innerhalb der Java Virtual Machine (JVM), und viele weitere Technologien im Big-Data-Umfeld (z.B. Hadoop, ElasticSearch, Solr, Cassandra, etc.) basieren ebenfalls darauf. Storm-Komponenten können aber, wie bereits gesehen, auch in beliebigen Sprachen implementiert werden. Eben diese Nicht-Java-Welten werden zunehmend auch mehr Interesse an der Integration von Big-Data-Lösungen haben, weil sie die Erfolge sehen können, die innerhalb der Java-Welt durch diese Technologien erzielt werden. Dies ist auch ein wirklich großer Vorteil von Storm. Neben Storm gibt es neuere Konkurrenzprojekte (wie z.B. Apache Samza, ursprünglich bei LinkedIn entwickelt, oder auch Yahoo S4), welche zum Teil andere Verarbeitungs- und/oder Programmiermodelle nutzen oder andere Strategien mitbringen, um mit Fehlerfällen umzugehen. Wieder andere sind weniger generisch (Apache Spark Streaming) und auf bestimmte Use Cases hin optimiert. Keins dieser Projekte eignet sich aber so gut wie Storm, um andere Technologienplattformen (wie eben z.B. Symfony2 und PHP) zu integrieren. Die aktuellen Projekte im Echtzeitbereich werden sich noch etwas konsolidieren müssen, Storm hat aber bereits jetzt schon eine große Verbreitung erlangt und wird auch von Anbietern von Hadoop-Distributionen als Hauptplattform für Echtzeitverarbeitung eingebunden. Daher sehe ich eine erfolgreiche Zukunft für das Storm-Projekt.

Mike: Die Kombination von PHP-Frameworks wie Symfony2 inklusive JIT-Compilation à la HHVM mit Hadoop für Batch Data Processing und Apache Storm für Echtzeitanforderungen ermöglichen ganz neue Anwendungsfelder, an die so noch nicht in der PHP-Welt gedacht wird. Das ist ein enormes Potential, das wir jetzt anfangen können zu heben.

International PHP Conference

International PHP Conference 2014

Einen Workshop zu diesem Thema – und noch viel mehr – findet ihr auf der IPC14.

Vom 1. bis zum 4. Juni findet in Berlin parallel zur International PHP Conference 2014 die webinale 2014 statt. In über 80 Vorträgen und Keynotes sowie in sechs Workshops erfahren Webenthusiasten alles, was man für den Erfolg im Web benötigt. Und das Beste daran: Besucher der IPC haben freien Zugang zu allen Sessions der webinale!

Aufmacherbild: Question and information speech bubble icons, three-dimensional rendering von Shutterstock / Urheberrecht: Oakozhan

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -