SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Über mich
Bernhard Wick

29 Jahre jung
!
Seit 2013 bei TechDivision GmbH
Softwarearchitekt für appserver.io
Heute mal nicht in Lederhosen
Agenda
Agenda
• Was ist appserver.io?
• Vorstellung und Idee
!
• Wozu das alles?
• Vorteile und Nutzen
!
• Wie nutze ich appserver.io
• Anwendungsentwicklung und Beispiel
Vorstellung | Nutzen | Anwendungsentwicklung
!
!
!
!
Was ist ?
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
Vorstellung | Nutzen | Anwendungsentwicklung
!
!
Ein Application Server ist eine Plattform die Anwendungen
über ein Netzwerk bereitstellt und über definierte
Schnittstellen ansprechbare Zusatzdienste bietet.
Vorstellung | Nutzen | Anwendungsentwicklung
• Webserver liefern statische Inhalte aus
• Nutzen Drittprogramme für dynamische Inhalte
• Interne Sub-requests ([Fast]CGI)
• Selbst keinen Bezug zur Anwendung
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
Vorstellung | Nutzen | Anwendungsentwicklung
Projekthistorie"
• Idee besteht seit 2005
!
• Erster Prototyp 2011
• Für interne Projekte
!
• Erster commit am 1.7.2013
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
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
!
Vorstellung | Nutzen | Anwendungsentwicklung
Aktueller Produktumfang
!
• 24 Jahre Entwicklungszeit (COCOMO Model)

• Ca. 96.000 Zeilen Code

• 40+ Repositories

!
• 8 Produktivprojekte

• 2 Partnerfirmen
Vorstellung | Nutzen | Anwendungsentwicklung
!
!
!
Wozu das alles?
Vorstellung | Nutzen | Anwendungsentwicklung
Infrastruktur in der Zielsprache"
!
• Erleichtert das Verstehen von Abläufen
!
• Homogenisiert den Technologie-Stack
!
• Befähigt zu Infrastrukturveränderung und -erweiterung
Vorstellung | Nutzen | Anwendungsentwicklung
• „I am a Teapot“ Module
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
Vorstellung | Nutzen | Anwendungsentwicklung
Alles aus einem Guss"
!
• Infrastruktur
!
• Framework
!
• Laufzeitumgebung
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!
Vorstellung | Nutzen | Anwendungsentwicklung
!
• Komplett Open Source
!
• Community Support per GitHub und Gitter
Vorstellung | Nutzen | Anwendungsentwicklung
!
!
!
Wie nutze ich ?
Vorstellung | Nutzen | Anwendungsentwicklung
Installation"
Installierbare Pakete verfügbar für:
!
!
+ homebrew cask
!
!
!
!
+ Repository
Vorstellung | Nutzen | Anwendungsentwicklung
Zusätzlich
Vorstellung | Nutzen | Anwendungsentwicklung
Konfiguration
Vorstellung | Nutzen | Anwendungsentwicklung
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
Vorstellung | Nutzen | Anwendungsentwicklung
• Lifecycle Management und Routing durch Servlet
Engine
• Erlaubt Bootstrapping noch vor dem ersten Request
!
!
Vorstellung | Nutzen | Anwendungsentwicklung
• Mapping über Annotation oder XML
Vorstellung | Nutzen | Anwendungsentwicklung
• Implementieren Methoden für HTTP Operationen
• doGet(), doPost(), …
• Erhalten Request und Response Objekte
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.
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
Vorstellung | Nutzen | Anwendungsentwicklung
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
Vorstellung | Nutzen | Anwendungsentwicklung
Hat jemand persistent gesagt?"
Konzept von DataSources:
!
!
!
!
!
• Per XML konfigurierbare Datenquellen
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
Vorstellung | Nutzen | Anwendungsentwicklung
AOP
Vorstellung | Nutzen | Anwendungsentwicklung
Dependency Injection
Vorstellung | Nutzen | Anwendungsentwicklung
Design by Contract und Typsicherheit
Fragen / Questions
Fazit
!
!
• PHP sollte sich weiter entwickeln
!
• Es macht Sinn in Infrastruktur zu investieren
!
• Standardisierung ist ein Muss
Fragen / Questions
!?
Thanks!
appserver.io is a registered
trademark of TechDivision GmbH



Spinnereiinsel 3a

83059 Kolbermoor
Tel. +49 8031 / 221055-0

Fax +49 8031 / 221055-22
info@appserver.io

Bernhard Wick

Softwarearchitect
bw@appserver.io
!
!
!
Further readings
http://appserver.io/
https://github.com/appserver-io/appserver
https://www.techdivision.com/
https://gitter.im/appserver-io/appserver
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

Mais conteúdo relacionado

Mais procurados

Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Lennart Passig
 
Agile Breakfast - If it hurts do it more often
Agile Breakfast - If it hurts do it more oftenAgile Breakfast - If it hurts do it more often
Agile Breakfast - If it hurts do it more oftenpingworks
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinStephan Kaps
 
Hybrid App Development mit Intel XDK
Hybrid App Development mit Intel XDKHybrid App Development mit Intel XDK
Hybrid App Development mit Intel XDKHans Rudolf Tremp
 
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbHEntwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbHstijink
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Jürgen Gutsch
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...LeanIX GmbH
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...Marc Müller
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
 
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Matthias Fauter
 

Mais procurados (12)

Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg
 
Agile Breakfast - If it hurts do it more often
Agile Breakfast - If it hurts do it more oftenAgile Breakfast - If it hurts do it more often
Agile Breakfast - If it hurts do it more often
 
Enterprise Java on Steroids
Enterprise Java on SteroidsEnterprise Java on Steroids
Enterprise Java on Steroids
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes sein
 
Hybrid App Development mit Intel XDK
Hybrid App Development mit Intel XDKHybrid App Development mit Intel XDK
Hybrid App Development mit Intel XDK
 
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbHEntwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Api services
Api servicesApi services
Api services
 
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
 

Semelhante a Bernhard Wick - appserver.io - code.talks 2015

Portale 2.0 mit Liferay
Portale 2.0 mit LiferayPortale 2.0 mit Liferay
Portale 2.0 mit Liferayinovex GmbH
 
XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0thoemmes
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computingWolfgang Weigend
 
1. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.20231. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.2023Johannes Kleinlercher
 
Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)Peter Nowak
 
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudAarno Aukia
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga
 
Nanoservice Architekturen
Nanoservice ArchitekturenNanoservice Architekturen
Nanoservice ArchitekturenLeo Lindhorst
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsUlrich Schmidt
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everythingcusy GmbH
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaOPEN KNOWLEDGE GmbH
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft AG
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplantModerne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplantChristian Nagel
 

Semelhante a Bernhard Wick - appserver.io - code.talks 2015 (20)

Portale 2.0 mit Liferay
Portale 2.0 mit LiferayPortale 2.0 mit Liferay
Portale 2.0 mit Liferay
 
XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
1. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.20231. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.2023
 
Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)
 
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
 
Nefos: Nefos Mobile iPad App
Nefos: Nefos Mobile iPad AppNefos: Nefos Mobile iPad App
Nefos: Nefos Mobile iPad App
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
Nanoservice Architekturen
Nanoservice ArchitekturenNanoservice Architekturen
Nanoservice Architekturen
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplantModerne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
 
PHPblue LOS!NRW
PHPblue LOS!NRWPHPblue LOS!NRW
PHPblue LOS!NRW
 

Mais de AboutYouGmbH

Tech talk 01.06.2017
Tech talk 01.06.2017Tech talk 01.06.2017
Tech talk 01.06.2017AboutYouGmbH
 
Retention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-CommerceRetention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-CommerceAboutYouGmbH
 
Rethinking Fashion E-Commerce
Rethinking Fashion E-CommerceRethinking Fashion E-Commerce
Rethinking Fashion E-CommerceAboutYouGmbH
 
ABOUT YOU get on board
ABOUT YOU get on boardABOUT YOU get on board
ABOUT YOU get on boardAboutYouGmbH
 
Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015AboutYouGmbH
 
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....AboutYouGmbH
 
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...AboutYouGmbH
 
Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015AboutYouGmbH
 
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...AboutYouGmbH
 
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...AboutYouGmbH
 
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...AboutYouGmbH
 
Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015AboutYouGmbH
 
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...AboutYouGmbH
 
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...AboutYouGmbH
 
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015AboutYouGmbH
 
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
 Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c... Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...AboutYouGmbH
 
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
 Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015 Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015AboutYouGmbH
 
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
 Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ... Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...AboutYouGmbH
 
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
 Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal... Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...AboutYouGmbH
 
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
 Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015 Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015AboutYouGmbH
 

Mais de AboutYouGmbH (20)

Tech talk 01.06.2017
Tech talk 01.06.2017Tech talk 01.06.2017
Tech talk 01.06.2017
 
Retention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-CommerceRetention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-Commerce
 
Rethinking Fashion E-Commerce
Rethinking Fashion E-CommerceRethinking Fashion E-Commerce
Rethinking Fashion E-Commerce
 
ABOUT YOU get on board
ABOUT YOU get on boardABOUT YOU get on board
ABOUT YOU get on board
 
Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015
 
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
 
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
 
Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015
 
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
 
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
 
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
 
Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015
 
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
 
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
 
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
 
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
 Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c... Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
 
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
 Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015 Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
 
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
 Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ... Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
 
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
 Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal... Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
 
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
 Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015 Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
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
  • 4. Vorstellung | Nutzen | Anwendungsentwicklung ! ! ! ! Was ist ?
  • 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 !
  • 12. Vorstellung | Nutzen | Anwendungsentwicklung Aktueller Produktumfang ! • 24 Jahre Entwicklungszeit (COCOMO Model) • Ca. 96.000 Zeilen Code • 40+ Repositories ! • 8 Produktivprojekte • 2 Partnerfirmen
  • 13. Vorstellung | Nutzen | Anwendungsentwicklung ! ! ! Wozu das alles?
  • 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
  • 15. Vorstellung | Nutzen | Anwendungsentwicklung • „I am a Teapot“ Module
  • 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
  • 20. Vorstellung | Nutzen | Anwendungsentwicklung ! ! ! Wie nutze ich ?
  • 21. Vorstellung | Nutzen | Anwendungsentwicklung Installation" Installierbare Pakete verfügbar für: ! ! + homebrew cask ! ! ! ! + Repository
  • 22. Vorstellung | Nutzen | Anwendungsentwicklung Zusätzlich
  • 23. Vorstellung | Nutzen | Anwendungsentwicklung Konfiguration
  • 24. Vorstellung | Nutzen | Anwendungsentwicklung
  • 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 ! !
  • 27. Vorstellung | Nutzen | Anwendungsentwicklung • Mapping über Annotation oder XML
  • 28. Vorstellung | Nutzen | Anwendungsentwicklung • Implementieren Methoden für HTTP Operationen • doGet(), doPost(), … • Erhalten Request und Response Objekte
  • 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
  • 31. Vorstellung | Nutzen | Anwendungsentwicklung
  • 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
  • 35. Vorstellung | Nutzen | Anwendungsentwicklung AOP
  • 36. Vorstellung | Nutzen | Anwendungsentwicklung Dependency Injection
  • 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
  • 40. Thanks! appserver.io is a registered trademark of TechDivision GmbH
 
 Spinnereiinsel 3a
 83059 Kolbermoor Tel. +49 8031 / 221055-0
 Fax +49 8031 / 221055-22 info@appserver.io
 Bernhard Wick
 Softwarearchitect bw@appserver.io ! ! !
  • 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