appserver.io - Open Source Application Server für PHP in PHP

Mit appserver.io entwickeln wir den ersten echten Application Server für PHP, geschrieben in PHP und möchten damit PHP auf die nächste Stufe heben und die führende Web-Entwicklungssprache noch weiter in Richtung Enterprisesoftware bewegen - unter anderem mit echtem Multi-Threading in PHP. In nachfolgendem Interview mit drei Jungs aus dem Appserver.io Team möchten wir das Projekt und unsere Ziele etwas näher erläutern.

Frage: Erzählt doch mal ein wenig über die Idee und den Einstieg zu diesem Projekt.

Hans: Ich arbeite mit Tim seit vielen Jahren zusammen an Enterprise Kundenprojekten. Die Idee eines Application Server für PHP begleitet Tim seit ich ihn kenne und ich war von Beginn an fasziniert von dieser Idee. Im Herbst 2012 haben wir dann begonnen unsere Idee in die Tat umzusetzen und haben seither – wann immer es uns möglich war – an der Weiterentwicklung gearbeitet.

Tim: Hans konzentriert sich dabei mehr auf Dinge wie die pthreads Integration, Frontendthemen wie das User Interface sowie die Website. Im kümmere mich primär um Themen wie Konfiguration, Optimierung und Deployment.

Frage: Was ist appserver.io genau und warum entwickelt ihr das Projekt?

Tim: appserver.io ist eine Art Middleware die verschiedene Service wie z.B. einen Servlet Container, einen Persistence Container, eine Message Queue, einen Timer Service (dieser kann als eine Art CRON job verwendet werden) und einen Web Socket Server beinhaltet.

Begonnen haben wir mit dem Servlet Container, bei dem es sich mehr oder weniger um eine Art Webserver handelt, aber nicht wie Apache/Nginx sonder eher vergleichbar mit einem Tomcat aus der Java-Welt. Da viele PHP Applikationen, die derzeit verfügbar sind für den Betrieb in einem Servlet Container nicht vorbereitet sind, weil sie keine Servlets haben, wurden von uns Default Servlets integriert um auch bestehende PHP Applikationen im Appserver lauffähig zu bekommen.



Frage: Einige werden mit dem Begriff „servlet“ vermutlich noch nichts anfangen können. Könntet ihr ein wenig erklären, was es damit auf sich hat?

Tim: Ein Servlet ist eine Klasse in der der Entwickler seine Funktionalitäten implementieren kann. Wenn man beispielsweise eine Servlet Engine verwendet, hat man keine index.php für das Bootstrapping. Stattdessen hat man ein Servlet, das die Rolle einer Controller Klasse übernimmt und das überwiegende Bootstrapping wird automatisch durch den Servlet Container übernommen.

Hans: Ein weiterer sehr wichtiger Punkt besteht darin, dass der Appserver einen Webserver beinhaltet (der Servletcontainer) wodurch weder ein Apache, Nginx oder eine sonstige Alternative zum Betrieb von Webapplikationen mehr benötigt wird.

Frage: D.h. dass PHP selbst die Applikationen ausliefert? Wird hier der interne PHP Webserver, der ab Version 5.4 verfügbar ist, verwendet oder wie läuft das genau? Wie wird die Konfiguration der vhosts abgebildet?

Hans: Das ist richtig. PHP selbst liefert die Applikationen aus, die im Appserver installiert werden. Wir verwenden in unserem Fall nicht den PHP Webserver, der seit Version 5.4 enthalten ist, weil wir alle Funktionalitäten des Appservers anbieten möchten, der in reinem PHP implementiert wurde/wird. Dadurch kann jeder Entwickler die Funktionalitäten des Webservers verbessern ohne dabei C zu können oder lernen zu müssen. Derzeit kann man die Main Configuration file etc/appserver.xml dazu verwenden, um vhosts hinzuzufügen, die auf bestimmte Applikationen verweisen. Wir arbeiten aktuell aber bereits an einem Admin-Panel für unseren Appserver mit dem man derartige Konfigurationen zukünftig dann sehr schnell und komfortabel über ein Cockpit erledigen kann.

Frage: Wie sieht es mit Performance aus? Ist diese Art der Auslieferung von Software mit bisherigen Lösungen wie Nginx oder Apache vergleichbar? Gibt es hier bereit erste Vergleichswerte?

Tim: Wir haben erst kürzlich einige Tests mit Magento durchgeführt. Auf meiner lokalen Entwicklungsmaschine (Mac OS X Mountain Lion) wird eine Magento Katalogseite in ca. 320 ms ausgeliefert. Unser Appserver benötigt hierfür aktuell rund 340 ms. Hier muss aber berücksichtigt werden, dass sich die Entwicklung noch in einem sehr frühen Stadium befindet und bislang noch keinerlei Performanceoptimierungen durchgeführt wurden. An Ende gehen wir aber sehr stark davon aus, dass die Performance keinen Anlass zur Kritik geben wird... .

Aktuell gehen wir auch davon aus, dass ein Großteil der Entwickler den Application Server vermutlich dazu nutzen wird/will um bestehende Applikationen wie Magento oder TYPO3 Neos auszuliefern. Daher werden wir unseren Servlet Container genau für diese Art von Applikationen in den kommenden Releases optimieren.

Frage: Sprechen wir mal über das Thema Threading – was vermutlich eines der schlagkräftigsten Argumente für den Appserver darstellt. Könnt ihr einem Einsteiger erklären, was unter Threading verstanden wird und warum dies in PHP dringend benötigt wird?

Hans: Multithreading ist ein sehr wichtiges Konzept für den Appserver und insbesondere auch für die Zukunft von PHP für das wir Joe Watkins extrem dankbar sein müssen, der vor einigen Jahren mit der pthreads Extension für PHP begonnen hat. Damit wird es möglich, jeden User-Request der vom Browser zum Servlet Container (Webserver) geleitet wird, gleichzeitig und asynchron zu bearbeiten. Stellen wir uns dazu einfach ein Szenario vor, bei dem dies nicht möglich ist. Jeder User würde hier die Requests anderer User so lange blockieren, so lange PHP die Anfrage bearbeitet und eine entsprechende Antwort ausgeliefert hat. Entwickler werden jetzt vermutlich dagegen halten und den Einsatz von sog. event bases loops wie dies mit react-php der Fall ist, anführen. Der größte Vorteil beim Einsatz von Threads in einer Applikation liegt darin, dass alle verfügbaren CPU Kerne zur Verarbeitung von Anfragen gleichzeit anstatt eines einzelnen Kerns, der unter Volllast steht, verwendet werden können. Hier besteht zudem der große Vorteil, dass Code sauber und debugbar bleibt – ohne „Callback Massaker“.

Tim: Zudem glauben wir, dass Threading neben der Application Server Thematik, PHP auf ein neues Level heben kann um moderne Webapplikationen zu entwickeln. In unseren Projekten werden wir sehr häufig mit Problemen konfrontiert, wenn es um den Import von großen Datenmenge in PHP geht. Wie vorhin erwähnt können wir mit Threading die vorhandenen, technischen Ressourcen zukünftig optimal ausschöpfen. D.h. bei einem Server mit 24 Kernen werden bei einem Importprozess dann zukünftig auch alle Kerne eingesetzt, was im Vergleich zur Nutzung lediglich eines Kerns, natürlich enorm positive Auswirkungen haben wird.

Frage: Noch etwas zum Thema Threads... Es gibt unzählige Fragen zum Thema PHP und Threadsicherheit. In der Dokumentation von appserver.io wird ebenfalls erwähnt, dass PHP Thread sicher kompiliert werden muss. Was bedeutet Thread Sicherheit und warum wird jeamdn PHP auf threadunsichere Art kompilieren, wenn es anders besser ist?

Tim: Wir hatten dieses Problem in der Tat und haben dazu jede Menge diskutiert. Am Ende haben wir eine Lösung gefunden, die für fast jeden passen sollte. Um das Problem mit einer PHP-Version die threadsicher kompiliert wurde zu lösen, haben wir eine Runtime entwickelt, die genau dafür sorgt eine solche Umgebung zu erstellen. In der Praxis bedeutet dies, dass man lediglich diese Runtime installieren muss und der Application Server funktioniert. Derzeit gibt es Packages für Mac OS X 10.8.x und Debian Wheezy. Wir hoffen, dass wir im kommenden Release auch eine RPM haben werden, die auf Fedora und RH Linux läuft. Da ich kein C Entwickler bin, hoffe ich das ich das Ganze richtig erklären kann.

Thread safety bedeutet, dass die internen globalen Variablen ebenfalls thread safe in jedem context als auch in jeder Extension verfügbar sein müssen. Es wird immer wieder von Extension berichtet, die in einer threadsicheren Umgebung nicht funktionieren.
Das ist soweit korrekt, jedoch funktionieren die meisten, für uns wichtigen Extensions problemlos. Deswegen liefern wir den Appserver bereits mit allen nötigen Extensions aus, so wie sie auch derzeit in normalen Hostingumgebungen vorzufinden sind. Darüber hinaus stehen wir mit Verantwortlichen verschiedenster Extensions in Kontakt, welche nützlich sein könnten aber derzeit in einer threadsicheren Umgebung noch nicht funktionieren. Für Windows gibt es bereits fertige Thread-safe Binaries, da für einige Umgebungen wie z.B. Apache2 eine threadsichere Umgebung Voraussetzung ist.

Frage: D.h. der Appserver ist ein Komplettpaket? Der Appserver liefert Applikationen selbstständig aus und wird durch eine Art XAMP Package abgerundet oder benötigen User noch irgendwelche Tools die vorab installiert werden müssen um die Software verwenden zu können?

Tim: Ja, der Application Server ist ein Fullpackage aber für Linux liefern wir lediglich das kompilierte PHP zusammen mit einigen Konfigurationsfiles aus und nutzen die Bibliotheken die vom System mitgeliefert werden (die Installation erfolgt automatisch durch das Distribution Dependendy Management von Linux). Damit kann sichergestellt werden, dass Security Fixes jeweils geschlossen werden können, sobald ein Update verfügbar ist. Da Mac OS X keine Dependency Management Lösung wie APT oder YUM beinhaltet, liefern wir alles mit, das nicht Teil von Mac OS X ist, jedoch für den Betrieb des Application Servers benötigt wird. Auch Teile der Runtime sind Init Skripte um den Application Server starten und stoppen zu können sowie plist Files für Mac OS C um Daemons zu starten.

Frage: Stimmt demnach die Annahme dass der Appserver gekapselt genug ist um bestehende PHP Installationen nicht zu „gefährden“? User können ihr bestehenden Setup nach wie vor verwenden UND den Application Server parallel dazu verwenden ohne irgendwelche Sideeffekte befürchten zu müssen?

Hans: Ja, absolut richtig. Es war für uns ein zentraler Punkt, dass User ihre bestehenden Seiten unverändert weiter nutzen können.

Tim: Bislang haben wir keinerlei ungewünschte Nebeneffekte feststellen können, da wir keine durch die Distribution ausgelieferten Dinge überschreiben oder ersetzen.

Frage: Kommen wir zum Lizenzthema – handelt es sich bei Appserver vollständig um Open Source Software und wenn dies so ist, wird dies zukünftig auch so bleiben. Oder bestehen hier Überlegungen das Projekt oder Teile davon proprietär auszuliefern?

Stefan: Wir kommen aus der Open Source Welt und glauben, dass dies der einzig vernünftige und zeitgemäße Ansatz ist, moderne Software zu entwickeln. Insofern wird unser Appserver immer als Open Source Projekt zur Verfügung stehen. Da wir aber auch glauben, dass der Ansatz die Enterprisefähigkeit von PHP nachhaltig verändern kann, rechnen wir schon damit dass daher zukünftig auch verstärkte Nachfrage nach Enterprise Services und Support bestehen wird. Hier überlegen wir aktuell die besonderen Anforderungen von Enterprisekunden über speziellen Versionen mit umfangreicheren Monitoring- und Skalierungsfeatures sowie SLA und  Support zu bedienen.

Frage: Genau in diese Richtung zielt eigentlich die nächste Frage ab. D.h. es ist eine Art „Freemium“ Modell geplant oder mit anderen Worten werdet ihr dann zukünftig Consulting, Support und möglicherweise eine Enterprise Version anbieten?

Stefan: Ja richtig. Unsere Überlegungen gehen in diese Richtung. Derzeit gibt es hier noch keine konkreten Pläne und/oder Modelle, wir arbeiten hier aber bereits daran, da wir davon überzeugt sind, dass dies gerade für Enterprisekunden ein sehr wichtiges Argument sein kann bzw. vermutlich sein wird. Derzeit wissen wir noch nicht, ob wir eine solche "Highend-Version" als Enterprise-Version bezeichnen werden, aktuell verwenden wir den Begriff aber als Arbeitstitel.

Frage: Was benötigt ihr aktuell aus der PHP-Community am meisten?

Tim: Im Prinzip benötigen wir interessierte Entwickler, die sich mit unserem Tool beschäftigen möchten und ihre Applikationen damit einmal testen und uns Feedback geben. Darüberhinaus freuen wir uns natürlich über jeden interessierten Entwickler der Lust hat, Teil unseres Entwicklerteams zu werden und der von der Idee und den sich daraus ergebenden Möglichkeiten genauso fasziniert ist, wie dies bei uns der Fall ist. Wir sind fest davon überzeugt, dass wir damit das PHP-Umfeld in gewissen Teilen revolutionieren können. Gerade durch Lösungen wie NodeJS ist es aus unserer Sicht zwingend nötig, dass PHP hier den nächsten Schritt macht und es zukünftig damit auch möglich ist, echte Enteprise-Software basierend auf Enterprise-Middleware-Lösungen auszuliefern.

Frage: D.h. ihr benötigt Tester und entsprechendes Feedback aus einer zu schaffenden Community?

Hans: Natürlich wird bei uns verstärktes Augenmerk auf Testing gelegt, da wir von Beginn an richtig geile und super saubere Software abliefern wollen. Dennoch sind wir immer dankbar für Feedback und Mitarbeit von außen, da wir ein Projekt in dieser Größenordnung alleine nicht stemmen können. Insofern freuen wir uns über jeden, der in welcher Form auch immer, Teil der Appserver-Community werden möchte. Über eine entsprechende Community können wir hier aus meiner Sicht einiges bewegen – zudem macht es in einem größeren Team mehr Spaß und die Ergebnisse sind in vielerlei Hinsicht meist besser.

Frage: Wie sieht der aktuelle Entwicklungsstand bei eurem Appserver aus? Wann plant ihr eine einsetzbare Version abliefern zu können?

Tim: Im Bereich des Servlet Containers, was zugleich der erste Teil unseres Appserver sein wird, befinden wir uns derzeit im Alpha-Stadium. Die anderen bereits erwähnten Services sind derzeit in der Entwicklung und können lediglich zu Testzwecken verwendet werden. Wir haben eine grobe Roadmap aufgestellt, die die kommenden Releases sowie die dort jeweils enthaltenen Features zeigt. Diese ist derzeit aber noch nicht final. Wir hoffen, dass wir den Servlet Container bis Ende des Jahres mit Version 0.7 abschließen können. Eine voll einsetzbare Version 1.0 mit allen genannten Services planen wir aktuell für Mitte 2014.

Frage: Wie einfach oder schwer wird es werden, den Appserver mit zusätzlichen PHP Extensions upzugraden. Wie sieht es z.b. mit Phalcon aus?

Hans: Man kann die Appserver Komponenten mit dem integrierten Composer Binary sehr einfach upgraden indem man einfach /opt/appserver/bin/composer updatet. Und natürlich besteht zudem die Möglichkeit deine beliebtesten PHP Extensions zu installieren, sofern sie threadsicher kompiliert sind. Da wir den Appserver als Komplettpaket ausliefern gibt es zudem PHP Tools wie PECL und PEAR innerhalb des „bin“ Ordners.

Tim: Ich habe bislang noch nie von Phalcon gehört, aber nach einem kurzen Blick auf deren Webseite scheint das Ganze sehr interessant zu sein. Ich habe das Teil zwischenzeitlich jetzt mal kompiliert und es scheint zu funktionieren... . Man kann dies jederzeit machen, indem man das Github Repository clont und folgendes innerhalb des ext Verzeichnisses eingibt: /opt/appserver/bin/phpsize
Danach kann man die Extension konfigurieren und kompilieren durch ./configure --with-php-config=/opt/appserver/bin/php-config && make && make install. Dann muss man die Extension hinzufügen mit echo extension=phalcon.so >> /opt/appserver/etc/conf.d/phalcon.so und den Application Server durch Eingabe von /etc/init.d/appserver neustarten. Das sollte es eigentlich gewesen sein.

Frage: Ihr habt Composer erwähnt. Könnt ihr dazu noch ein paar Worte verlieren?

Tim: Ja sicher. Da jede Komponente des Application Servers ein Composer Modul ist, kann man den Application Server selbst mit Composer updaten. Um dies zu tun, wechselt man einfach ins Base-Verzeichnis des Application Servers und gibt folgendes ein bin/composer update. Das ist alles! Da wir hier aber noch mit Hochdruck daran arbeiten empfehlen wir dies aktuell nicht, weil dies hier aufgrund des aktuellen Entwicklungsstandes mitunter zu Problemen führen kann. Diese werden aber mit den kommenden Releases dann behoben sein.

Frage: Habt ihr geplant euren Appserver auch auf PHP Konferenzen vorzustellen?

Tim: Oh ja! Wir haben eine Session auf der PHP Conference in München.

Frage: Wo können Interessierte einige Beispiel-Applikationen finden mit denen etwas gespielt und getestet werden kann. Wo gibt es mehr Infos über das Projekt?

Tim: Einige Beispiel-Applikationen gibt’s in unserem Github-Repository. Derzeit haben wir ein Magento- und ein TYPO3 Neos Beispiel das funktioniert. Um das Ganze auszuprobieren muss man lediglich das Repository klonen und die Init-Instance Targets mit ANT ausführen. Damit werden die Beispiele im Webroot des Application Servers unter /opt/appserver/webapps/ installiert. Nach der Installation muss folgende URL im Browser eingegeben werden http:127.0.0.1:8586/magento oder http://neos.local:8586/setup (Neos benötigt einen Host-Eintrag namens neos.local im /etc/hosts File damit das Ganze funktioniert) um die Installation abzuschließen. Zusätzlich arbeiten wir an PHAR basiertem Deployment von Applikationen. Wir haben hierzu bereits einige Tests mit Magento und TYPO3 Neos erfolgreich abgeschlossen. Das Ergebnis kann man sich auf unserer Facebook Fanpage ansehen (https://www.facebook.com/appserver.io). Dies wird zudem auch Teil des kommenden Releases 0.5.8 beta sein, das wir diesen Monat noch veröffentlichen werden. Wir stellen möglicherwesie aber auch die installierbaren PHAR´s auf unserer Webseite unter appserver.io zur Verfügung.

Sie werden mit einer Signatur versehen, damit sie verifiziert werden können wenn die Installation des Application Servers abgeschlossen ist. Um das Ganze in der Zukunft noch einfacher und intuitiver zu gestalten arbeiten wir derzeit an einer Art Appstore über den sehr einfach per Mausklick die Applikationen heruntergeladen und installiert werden können, die im Application Server laufen sollten. Damit wird der Einsatz dann auch für Nicht-Techniker möglich.

Frage: Gibt es noch irgendetwas, das an dieser Stelle erwähnt werden soll?

Hans: Derzeit arbeiten wir an der Dokumentation. Wenn zwischenzeitlich Fragen auftauchen, kann man uns über unseren IRC Channel auf freenode #appserver oder per Email an info@techdivision.com gerne kontaktieren.

Tim: An dieser Stelle möchte wir gerne noch einen Aufruf starten: Werdet jetzt Teil des Application Server Teams und arbeitet gemeinsam mit uns an coolen Applikationen und vielleicht auch ein Stückweit an der Zukunft von PHP. Wir haben in der Vergangenheit bereits begonnen einige Code Sprints an ziemlich coolen Locations, z.B. auf einer Finca in Mallorca, durchzuführen was extrem effizient war.


Neueste Posts

Die größten Akquisitionen von Google, Amazon und Apple und einige Learnings daraus!
Neue Ausgabe des eStrategy-Magazin verfügbar 360 Stories – ein Spiel für Teams Die B2B E-Commerce Pyramide
Digital Storytelling - ein Kurztrip in die Kreativität und wieder zurück

Archiv

Dezember November Oktober September August Juli Juni Mai April März Februar Januar
Dezember November Oktober September August Juni Mai April Februar Januar
Dezember November Oktober September August Juli Juni März Februar
Oktober September August Juli Juni Mai April März Januar
Dezember November Oktober September August Juli Mai April Februar
November Oktober September April Februar
Dezember September Juni Mai Februar Januar
Juli Mai April März Februar Januar
September August Juli März
Oktober September Juli Juni Mai März Februar
Februar

Kategorien

E-Commerce Unternehmensmeldung Online-Marketing Magento Commerce Neos TYPO3 SEO SEA Usability Digitale Transformation Agile Projektentwicklung Corporate Web Analytics Künstliche Intelligenz Mobile Marketing Social Media Veranstaltungen Research & Development

Unser Herz schlägt online -
Deins Auch?


Wir stellen uns jeden Tag neuen Heraus-forderungen des Online-Business – immer auf der Suche nach spannenden Lösungs-ansätzen und sinnvollen Technologien. Eine Vielzahl namhafter Kunden vertrauen auf das Online Know-how „Made in Kolbermoor / Rosenheim und München“. 

Lust auf TechDivision? Hier geht zu unseren Stellenanzeigen

eStrategy Magazin


Erfahren Sie mehr zu den Themen E-Commerce, Online-Marketing, Mobile, Projektmanagement, Webentwicklung und E-Recht in unserem kostenlosen Online-Magazin.

Jetzt herunterladen!

Whitepaper:
Agiles Projektmanagement


In unserem kostenlosen Whitepaper versuchen wir Basiswissen und Erfahrungen aus vielen Jahren täglicher Projekt- und Unternehmenspraxis zu vermitteln, mit denen Sie die Anforderungen des Arbeitslebens von Heute besser bewältigen können.

Jetzt herunterladen!

Autor

Haben wir Ihr Interesse mit unserem Blog geweckt?

Wir sind der richtige Partner für anspruchsvolle Projekte im Bereich E-Commerce, Corporate Web, Consulting und Online-Marketing. Sprechen Sie mit uns!

Autor

Josef Willkommer Geschäftsführer / CMO