Erster appserver.io Hackathon ein voller Erfolg!

Vom 23. – 24.04.2016 fand in den Räumlichkeiten der TechDivision GmbH in Kolbermoor der erste appserver.io Hackathon statt. Bei der ersten Veranstaltung seiner Art im appserver.io Ökosystem, konnte das Team rund um Johann Zelger, Bernhard Wick und Tim Wagner erfreulicher Weise 9 Teilnehmer, aus drei externen Firmen, begrüßen.

appserver_hackathon_042016_3
Abb 1: Hans Höchtl + appserver.io Team beim Brainstorming

 


Ablauf

Nach einer rund einstündigen Vorstellung zur Historie und zum aktuellen Stand des appserver.io Projektes wurden gemeinsam Themen erarbeitet, die im Zuge des Hackathons umgesetzt werden sollten. Anschließend wurden Teams gebildet, die sich dann mit der Umsetzung der erarbeiteten Themen befassten.

 


Application Environments

Hans Höchtl und Bernhard Wick beschäftigten sich mit der Umsetzung eines, aus dem 8select Projekt-Team, von Andreas Klaiber kommenden Featurewunsches. 8select setzt appserver.io als Infrastrukturlösung für deren Curated Shopping as a Service Platform ein. Hierbei geht es primär um die Integration verschiedener Application Environments für Developlment, Staging und Production Context einer Anwendung. Einwickler haben damit die Möglichkeit, für jeden Kontext einer Anwendung eigene Konfigurationsdateien zu hinterlegen, die dann während des Bootvorgangs, abhängig von einer Umgebungsvariable, eingelesen werden. Wir gehen davon aus, dass wir das Features noch mit der nächsten Version 1.1.1, die Ende dieser Woche fertiggstellt wird, ausliefern können.

appserver_hackathon_042016

Abb 2: Hans Höchtl + Bernhard Wick

 


Windows Azure Cluster Umgebung

Ein Team rund um Michael Döhler vom Shopsoftwarehersteller Intellishop beschäftigte sich mit dem Aufbau einer Clusterumgebung in Microsoft Azure auf Basis einer maximal reduzierten appserver.io Infrastruktur und Ansible. Ein weiteres Ziel des Teams bestand darin, die Standard Servlet-Engine durch ein eigenes Webserver Modul zu ersetzen, das die Integration und Verwendung beliebiger Frameworks auf Basis des appserver.io Webservers, einem leichtgewichtigen multithreaded Webserver, geschrieben in PHP für PHP, erlaubt. Als Proof-of-Concept wurde eine minimale, funktionsfähige Servlet-Engine umgesetzt, die ein rudimentäres Session-Handling auf Basis von Redis implementiert.

Das Ergebnis kann über das freigegebene Bitbucket Repository als Basis für eigene Projekte verwendet werden.

 

Konsolenanwendung für appserver.io Konfiguration

Martin Mohr konzentrierte sich nach einer Testinstallation der aktuellen Intellishop Version auf die Implementierung einer Konsolenanwendung über die sich die Einstellungen einer lokalen appserver.io Instanz verwalten lassen. Im Rahmen das Hackathons konnte Martin ein Restart Command, ein Command zum neu anlegen/entfernen eines Servers, sowie zur Anpassung der Parameter implementieren. Erste Ansätze für das Scaffolding sind ebenfalls bereits vorhanden.

appserver_hackathon_042016_2

Abb 3: Martin Mohr, Tim Wagner + Ilya Shmygol


mod_include

Ilya Shmygol beschäftigte sich nach kurzer Einarbeitungszeit mit der Implementierung eines Server-Side-Include Moduls, das sich in seiner Funktionalität stark an Apache mod_include orientiert. Nach anfänglichen Problemen konnten die ersten Hürden schnell genommen und die Basisfunktionalität eines Webservermoduls implementiert werden. Ilya wird die minimal benötigte Funktionalität im Laufe der nächsten Wochen fertigstellen. Das Modul sollte somit in einer der nächsten Versionen des Webservers der Community zur Verfügung gestellt werden können und ergänzt den Webserver um ein neues und interessantes Feature.

 

fhreads und rockets

Bereits Ende letzten Jahres begann Johann Zelger mit der Arbeit an fhreads und rockets. fhreads wird Multithreading in PHP vollkommen neu definieren und, entgegen dem von Joe Watkins mit phtreads gewählten Ansatz, soweit wie möglich die Implementierung im Userland vornehmen.

Die Library stellt lediglich einen Wrapper für die Funktionen der POSIX Thread Implementierung dar, Klassen wie Threads, Mutex und Conditions werden hingegen in PHP implementiert. PHP Entwickler haben somit wesentlich tiefere Einblicke in die Internals und können benötigte Funktionalität bei Bedarf selbst integerieren. Zusätzlich hebt die Library, für PHP Entwickler schwer nachvollziehbare, Einschränkungen bei der Verwendung von zu synchronisierenden Objekten auf. Mit fhreads werden somit automatisch alle Objekte, egal ob in C oder im Userland implementiert, ohne Einschränkungen synchronisiert. Die interne, performancekritische Serialisierung von Objekten, die Übergabe von PHP Userland Objekten ausschließlich als Kopie sowie die Beschränkung, dass Objekte keine Closures enhalten dürfen fallen ebenfalls weg. Gleiches gilt für das Handling von Resourcen wie z. B. Sockets, bei dem es sich bisher um eines der größten Probleme bei der Implementierung von Serveranwendungen handelte.

rockets wird eine leichtgewichtige und multithreading kompatible *Next-Generation* Socket Implementierung, die anstatt schwergewichtigen, über Threads hinweg nur kompliziert zu verwaltende, PHP Resourcen einfache Integerwerte als Referenz auf Diese verwendet. Dadurch werden zum Einen die aktuellen Probleme bei der Verwendung von Sockets in multithreaded Umgebungen gelöst, zum Anderen werden momentan komplexe Implementierungen wie ein multithreaded Websocket Server einfacher und zwingend notwendige Features wie HTTP/2 überhaupt erst umsetzbar.

Im Rahmen des Hackathons konnte Johann Zelger fhreads und rockets an die aktuellsten PHP Version anpassen und den aktuellen Stand auf Github veröffentlichen. Aktuell befinden sich beide Libraries noch in der Betaphase, können zu Testzwecken aber jederzeit heruntergeladen und ausprobiert werden. Über Feedback sind wir natürlich immer dankbar. Siehe fhreads library.

 

Fazit

Da sich der Wissenstand hinsichtlich appserver.io bei den Teilnehmer auf einem durchaus unterschiedlichen Level befand, wurde natürlich versucht, das notwendige Wissen für Anpassungen, Neu- oder Weiterentwicklung im Rahmen des Hackathons in konzentrierter Form zu vermitteln. Aufgrund der Ergebnisse und des Feedbacks der Teilnehmer, kann man davon ausgehen, dass das auf jeden Fall gelungen ist.

Über den gesamten Hackathon hinweg hat sich gezeigt, dass der Webserver, als Basis von appserver.io künftig mehr in den Mittelpunkt des Projektes rücken wird. Zum Einen, da Dieser den ideale Einstiegspunkt für bereits bestehende Projekte, egal ob in Form eines Servermoduls oder einer eigenen Serverimplementierung darstellt, zum Anderen weil er durch seinen einfachen, komponentenorientierten Aufbau den Einstieg in das appserver.io Ökosytem enorm vereinfacht. Zusätzlich stellt der Webserver gerade beim Thema Microservices, eine leichtgewichtige Alternative zu Apache und nginx dar, die sich, bei Bedarf, auch mit einem Microservice oder dem SCS bundeln und ausliefern lässt.

Nachdem Samstag Nachmittag und Sonntag Vormittag konsequent an der Umsetzung der besprochenen Features gearbeitet wurde, konnten die Teilnehmer am Sonntag Nachmittag ihre Ergebenisse präsentieren. Auch wenn keines der Features vollständig fertggestellt wurde, so hat der Hackathon gezeigt, dass in relativ kurzer Zeit und zum Teil ohne Vorwissen, in kürzester Zeit beachtliche Features umgesetzt werden können, die bei konsequenter Weiterentwicklung sehr vielversprechend aussehen.

Final waren sich alle Teilnehmer einig, dass der erste Hackathon einerseits viel Spaß gemacht, andererseits das Projekt aber auch einen weiteren Schritt nach vorne gebracht hat. Das appserver.io Team wird versuchen, derartige Veranstaltungen künftig im Abstand von einigen Monaten zu organisieren und somit, insbesondere die für ein Open Source Projekt so wichtige Community Arbeit voran zu treiben. Darüberhinaus planen wir zukünftig Webinare und Online-Schulungen um die ersten Schritte mit appserver.io leichter meistern zu können. Mehr dazu demnächst!

Kommentar abgeben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.