Buildscripts mit PHING – Teil 2

Im letzten Teil wurde erklärt wie ein SVN Repository automatisch exportiert werden kann.
Diese Fortsetzung erklärt das Schreiben eigener Tasks.
Dafür werden wir alle SQL-Files im data Ordner zu einem zusammenfügen.
Der Einfachheit halber nehmen wir an, dass während der Entwicklung die einzelnen SQL-Files mit einem aufsteigend numerischen Präfix gleicher Länge versehen wurden.
Also haben wir zum Beispiel folgende Files:
001_Setup_db.sql
002_data.sql
003_TEST_data.sql

Da wir die Testdaten (003_TEST_data.sql) jedoch nicht mit ausliefern wollen schreit diese Aufgabe geradezu nach einem eigenen Task.
Hier spielt nun PHING erstmals seine Stärke gegenüber ANT aus.
Eigene Tasks werden für PHING in PHP geschrieben, wir müssen als Developer also nicht extra eine neue Sprache lernen.

Weiterlesen

Buildscripts mit PHING – Teil 1

Als Dienstleister veröffentlicht man selten Software direkt auf dem Zielserver.
Meist übergibt man dem Auftraggeber ein Paket, welches sämtlichen Projektcode enthält und eine entsprechende Installationsanleitung.
Nun ist das Vorbereiten eines solchen Paketes eine mühsame Angelegenheit.
Es müssen alle Testdateien entfernt werden, da diese auf einem Produktivsystem nichts zu suchen haben.
Verschiedene SQL-Dateien müssen zu einer zusammengefügt werden, der Kunde möchte schließlich beim Deploy so einfache Anweisungen wie möglich haben.
Diese und viele weitere Aufgaben fallen an, bevor eine Software an den Kunden ausgeliefert werden kann.
Nun entwickeln wir Software, und es kommt auch bei noch so gründlicher Entwicklung und Tests immer wieder zu Bugs.
Nach dem Fixen des Bugs muss also nochmals der Deploymentprozess Schritt für Schritt durchgegangen werden.
All das kostet Zeit, da bei jeder Übergabe an den Kunden die immer gleichen Schritte durchgeführt werden müssen.

Warum also nicht automatisieren?
Weiterlesen

IPC die Zweite – DevOps

Nach einem sehr guten Mittagessen, in tollem Ambiente ging es weiter mit dem Powerworkshop von Soenke Ruempler (Jimdo) und Johann-Peter Hartmann (SektionEins GmbH, Mayflower GmbH).
Da sich, vielleicht zum Glück, nur wenige Teilnehmer für diesen Workshop fanden, ging die Vorstellungsrunde recht flink und es wurde schnell deutlich was wir als Publikum zu erwarten hatten.
Die Vortragenden stellten klar das PHP seinen größten Vorteil, das schnelle umsetzen von Anforderungen, durch fortschreitende Professionalisierung eingebüßt habe und Scrum nur einen Teil der Lösung darstellt.
Grund für die Tatsache, dass der Scrumprozess bei dem Benutzer nicht ankommt sind seltene Deployments, welche mehrere Features zusammenfassen.
Dadurch wird der in kurzen Iterationen angelegte Scrumprozess von einem wasserfallartigen Deployment überdeckt.
Grund für die seltenen Deployments ist der erhebliche Zeitaufwand für die Administratoren und der fehlende Projekt überblick, auch als Silo-Problematik bekannt.

Eine mögliche Lösung für das fehlende Betrachten des Gesamtprojektes, wurde mit Kanban recht ausführlich vorgestellt.
Dieses kann genutzt werden, um Engpässe im Projekt zu visualisieren, vor allem wenn diese zwischen Abteilungen entstehen.

Wichtigster Teil des Vortrages war es aber, die Lücke zwischen Development und Administration zu schließen.
Während die Developer vorrangig die Features im Blick haben, steht für die Administration der Reibungslose Ablauf im Tagesbetrieb im Vordergrund.

Schließen kann man diese Lücke durch das richtige Toolset.
Die Administrationsseite kümmert sich darum, eine Infrastruktur zu schaffen, damit das Deployment von den Entwicklern übernommen werden kann und bekommt im Gegenzug das lästige Deployment abgenommen.
Dadurch werden Kapazitäten frei, um die Infrastruktur zu erweitern, was beiden Seiten zu gute kommt.

Für diesen Zweck wurden Puppet und Vagrant vorgestellt.

Puppet ist ein System zur automatisierten Verteilung und Durchführung von Serverkonfigurationen.
Mit Vagrant wurde er Tool vorgestellt, welches anhand von Konfigurationsbeschreibungen beliebig viele virtuelle Maschinen aufsetzten kann.
Konfigurationen können dabei auch aus einem Puppet-Repository stammen, was den Verwaltungsaufwand reduziert.
Mit beiden Tools in Kombination ist es möglich, lokal das Produktivsystem nachzustellen und zu testen.
Das anlegen mehrerer vorkonfigurierter Server wurde dabei ausführlich vorgeführt.

Anschließend wurde noch das Buildpipelining vorgestellt, am Beispiel des Mapolis Projektes.
Buildpipelining beschreibt die Möglichkeit PHPUnit Test und Selenium Test getrennt voneinander auszuführen, letztere nur nach erfolgreichem Verlauf der voran gegangenen Tests.
Theoretisch kann nach erfolgreichem Bestehen aller Buildprojekte ein automatischer Deploy erfolgen.
Praktisch wird jedoch oftmals noch die Freigabe des Projektleiters benötigt.

Das Ziel des Workshops, Administratoren und Entwicklern Tools aufzuzeigen, die die Deploymentrate erhöhen können, wurde in 4 Stunden gut vermittelt und es wurde klar gestellt, dass es mithilfe dieser Tools möglich ist, PHP seinen verlorenen Wettbewerbsvorteil zurück zu geben.
Dennoch waren die 4 Stunden sehr knapp bemessen, die größtenteils abstrakten Inhalte zu vermitteln, weshalb ich trotz der vielen mitgenommenen Ideen danach froh war entspannen zu können.

IPC die Erste – RIA – Entwicklung mit Ext JS

Der Tag startete mit einem Vortrag von Dominik Jungowski (Chip Xonio Online GmbH) und Hans-Christian Otto (crosscan GmbH).
Das ganze war als Workshop angelegt und dementsprechend sportlich wurde auch sofort, nachdem jeder kurz seine Javascript und ExtJS Erfahrungen und Erwartungen umrissen hatte mit der ersten Aufgabe, ein Border Layout mit ExtJS umzusetzen, losgelegt.

Zu Beginn fühlt sich ExtJS völlig anders an als normale Javascriptentwicklung, sehr viel zielgerichteter und sauberer.
Mit nur wenigen Zeilen Code entstand ein 5-teiliges Layout, welches im Laufe des Workshops durch einen Data Store und ein Grid erweitert wurde, so das am Ende der 4 Stunden eine funktionale Anwendung entstand, welche so durchaus auch für Projekte genutzt werden kann.
Verblüffend war dabei wie schnell mit wenigen Zeilen Code eine lauffähige Rich Internet Application zusammengeschraubt war, welche, ausgestattet mit realen Daten, produktiv gehen könnte.

ExtJS macht einen sehr robusten Eindruck und ermöglicht durch seinen modularen Aufbau und seine gute Dokumentation auch für Neulinge in der ExtJS Welt einen sehr schnellen Erfolg, was von den Vortragenden eindrucksvoll an Beispielaufgaben, die jeder lösen konnte, demonstriert wurde.
Einziger Kritikpunkt war der Zeitmangel, da in 4 Stunden Workshop nur ein sehr oberflächlicher Einblick in das mächtige ExtJS Framework gegeben werden konnte.

Remote Debugging mobiler Webanwendungen

Mobile Anwendungen liegen im Trend.
Neben den nativen Apps gibt es auch noch die Webapps, also speziell für mobile Geräte angepasste Webseiten, basierend auf Javascript, HTML und CSS.

Eine Möglichkeit, plattformübergreifende Webapps zu erstellen bietet das Javascript Framework jQuery Mobile, mit dem es möglich ist, auf Events von mobilen Geräten zu reagieren, wie etwa Touch Gesten, das Kippen des Smartphones und vielen weiteren (siehe jQuery Mobile Doku).

Nachdem man eine solche Webapp geschrieben hat testet man diese üblicherweise auf allen Geräten die unterstützt werden sollen und veröffentlicht entsprechende Anwendung nach erfolgreichen Tests.

Da man nur in den seltensten Fällen für alle unterstützten Smartphones auf echte Geräte zurückgreifen kann, nutzt man hier entsprechende Emulatoren um das Verhalten nicht vorhandener Testgeräte zu simulieren.
In der Theorie sollte spätestens nach diesen Tests nichts mehr schief gehen.

In der Realität kann es aber vorkommen das sich Emulator und echtes Gerät unterscheiden und sei dies nur in Kleinigkeiten wie Netzstabilität oder das etwas im mobilen Browser fehlerhaft interpretiert wird.
Weiterlesen