Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
1.
2. Über mich
Bernhard Wick
29 Jahre jung
!
Seit 2013 bei TechDivision GmbH
Softwarearchitekt für appserver.io
Heute mal nicht in Lederhosen
3. Agenda
Agenda
• Was ist appserver.io?
• Vorstellung und Idee
!
• Wozu das alles?
• Vorteile und Nutzen
!
• Wie nutze ich appserver.io
• Anwendungsentwicklung und Beispiel
5. Vorstellung | Nutzen | Anwendungsentwicklung
Ziel"
Application Server für PHP, in PHP
!
• Alternative zu bestehender Infrastruktur
• Konzept von Application Server verfügbar machen
• Infrastruktur in der Zielsprache
• Alles Open Source
6. Vorstellung | Nutzen | Anwendungsentwicklung
!
!
Ein Application Server ist eine Plattform die Anwendungen
über ein Netzwerk bereitstellt und über definierte
Schnittstellen ansprechbare Zusatzdienste bietet.
7. Vorstellung | Nutzen | Anwendungsentwicklung
• Webserver liefern statische Inhalte aus
• Nutzen Drittprogramme für dynamische Inhalte
• Interne Sub-requests ([Fast]CGI)
• Selbst keinen Bezug zur Anwendung
8. Vorstellung | Nutzen | Anwendungsentwicklung
• Market share von ~81%
• Rasant ansteigende Beliebtheit seit 2000
!
!
!
!
!
• Aber: Schritt in die Enterprise Welt fällt schwer W3Techs, 2015
Netcraft, 2013
9. Vorstellung | Nutzen | Anwendungsentwicklung
Projekthistorie"
• Idee besteht seit 2005
!
• Erster Prototyp 2011
• Für interne Projekte
!
• Erster commit am 1.7.2013
10. Vorstellung | Nutzen | Anwendungsentwicklung
Seit August 2012: Threading"
• Als Extension pthreads by Joe Watkins
• Erlaubt echte parallele Verarbeitung
• Bietet Inter-Thread Daten Container auf Objektebene
!
!
• Aber: Sehr aufwändiger Umbau am PHP Core
11. Vorstellung | Nutzen | Anwendungsentwicklung
• Erstes Produktivprojekt am 12.6.2014
• Nur Webserver
• Anwendungslogik in Webserver Module
!
• Erstes Webservice Projekt am 10.11.2014
!
• Release 1.0.0 „Iron Horse“ am 16.2.2015
!
14. Vorstellung | Nutzen | Anwendungsentwicklung
Infrastruktur in der Zielsprache"
!
• Erleichtert das Verstehen von Abläufen
!
• Homogenisiert den Technologie-Stack
!
• Befähigt zu Infrastrukturveränderung und -erweiterung
16. Vorstellung | Nutzen | Anwendungsentwicklung
Beispiel
• Rewrite Modul für Anwendung
• 3,2 Milliarden Rewrites in Server verlagert
!
• Backend API Analytics
• Analytics für RESTful API Aufrufe
17. Vorstellung | Nutzen | Anwendungsentwicklung
Alles aus einem Guss"
!
• Infrastruktur
!
• Framework
!
• Laufzeitumgebung
18. Vorstellung | Nutzen | Anwendungsentwicklung
Technologische Sicherheit
• PSRs sind super Idee
!
• Wir pflegen 10 eigene PSRs
• Decken alle Aspekte der Anwendungsentwicklung ab
!
• Nutzen semantic Versioning
• Feste APIs bis Version 2.0.0!
19. Vorstellung | Nutzen | Anwendungsentwicklung
!
• Komplett Open Source
!
• Community Support per GitHub und Gitter
25. Vorstellung | Nutzen | Anwendungsentwicklung
Problem"
Aufwändiges Bootstrapping (Framework, etc.)
!
Lösung"
!
Servlets
Servlets sind Klassen, deren vorgeladene Instanzen die
Request- und Response Verarbeiten auf Seite des Servers
übernehmen.
—> Controller
26. Vorstellung | Nutzen | Anwendungsentwicklung
• Lifecycle Management und Routing durch Servlet
Engine
• Erlaubt Bootstrapping noch vor dem ersten Request
!
!
29. Vorstellung | Nutzen | Anwendungsentwicklung
Problem"
Stateless Server, Stateful Client
!
Lösung"
!
Session Beans!
Session- und andere Beans sind serverseitige Klassen,
die die Business Logik einer Anwendung beinhalten. Sie
werden zentral verwaltet und stehen meist als fertige
Instanz bereit.
30. Vorstellung | Nutzen | Anwendungsentwicklung
Verschiedene Arten
• Stateless: Neue Instanz für jede Anfrage
• Stateful: Persistente Instanz, gebunden an
Nutzersession
• Singleton: Persistente Instanz, unabhängig von
Session immer gleich
• MessageDriven: Zur asynchronen Verarbeitung von
MQ Nachrichten
32. Vorstellung | Nutzen | Anwendungsentwicklung
Beispiel
• Einkaufswagen als Stateful Bean
!
• Repliziert State eines stateful Clients
• Hält z.B. Nutzerdaten sicher im Speicher
• Erlaubt Caching von komplexen Abfrageergebnissen
33. Vorstellung | Nutzen | Anwendungsentwicklung
Hat jemand persistent gesagt?"
Konzept von DataSources:
!
!
!
!
!
• Per XML konfigurierbare Datenquellen
34. Vorstellung | Nutzen | Anwendungsentwicklung
Problem"
Threading und Frameworks
!
Lösung"
!
appserver.io Funktionalität
appserver.io bringt viel Funktionalität eines modernen
Frameworks mit, aber erlaubt Multithreading und feste
Integration in die Infrastruktur
37. Vorstellung | Nutzen | Anwendungsentwicklung
Design by Contract und Typsicherheit
38. Fragen / Questions
Fazit
!
!
• PHP sollte sich weiter entwickeln
!
• Es macht Sinn in Infrastruktur zu investieren
!
• Standardisierung ist ein Muss
42. Bildernachweis
"Tux" by lewing@isc.tamu.edu and The GIMP. Licensed under Attribution via Wikimedia Commons -
https://commons.wikimedia.org/wiki/File:Tux.png#/media/File:Tux.png!
!
"Fedora logo" by Wondigoma - Own work. Licensed under Public Domain via Wikimedia Commons -
https://commons.wikimedia.org/wiki/File:Fedora_logo.svg#/media/File:Fedora_logo.svg!
!
"Openlogo-debianV2" by Debian Project - www.debian.org/logos/. Licensed under CC BY-SA 3.0 via
Wikimedia Commons - https://commons.wikimedia.org/wiki/File:Openlogo-debianV2.svg#/media/
File:Openlogo-debianV2.svg!
!
„Docker (container engine) logo“ von dotCloud, Inc. - http://www.docker.io/static/img/docker-top-logo.png.
Lizenziert unter Apache License 2.0 über Wikimedia Commons - https://commons.wikimedia.org/wiki/
File:Docker_(container_engine)_logo.png#/media/File:Docker_(container_engine)_logo.png!
!
„Vagrant“ von Fco.plj - Eigenes Werk. Lizenziert unter CC BY-SA 3.0 über Wikimedia Commons - https://
commons.wikimedia.org/wiki/File:Vagrant.png#/media/File:Vagrant.png