Live verslag Dutch PHP Conference: Team based PHP development

De eerste parallel sessie van vandaag. Terwijl Joost en Gijs bij de sessie over EZ Components zitten, zitten Evert en ik bij de presentatie van Gaylord Aulke over team based PHP development. De traditionele manier van in een team werken bestaat uit de volgende situatie: een aantal developers werken samen op een webserver, en na een test van een quality manager wordt er voor gekozen het live te zetten. De voordelen hiervan zjin de volgende: het is simpel op te zetten, makkelijk om te gebruiken, en de paden naar alle bestanden zijn altijd identiek, net als de software updates. Het grootste nadeel is dat als 1 iemand een foutje maakt, iedereen er last van heeft. De ideale situatie voor een developer is dat iedereen voor zich bepaalt wat er getest en gewijzigd wordt, zonder dat anderen er last van hebben. Daarna moet alles wel gesynchroniseerd worden met de rest, daar hebben gelukkig tools als SVN voor. Om dit te laten werken moet de ontwikkelomgeving zo dicht mogelijk bij de live omgeving liggen. Om de kwaliteit hoog te houden moet er tijdens het ontwikkelen al voldoende getest worden. De deployment van code op de live server moet daarna automatisch en gearchiveerd gebeuren. Om geen fouten te maken in het onderhoud moeten er plannen opgesteld worden om updates en bugfixes structureel uit te voeren. Een veelgemaakte fout is dat een bug ter plekke (op de live omgeving) wordt geupdate, waarna het niet lokaal of in de repository ook wordt geupdate, zodat de bug zich bij een andere update wederom voordoet. Als iedereen zich aan deze regels houdt en alles netjes in SVN zet, dan is een checkout altijd 100% goed. Helaas heeft niemand in de zaal dit ooit meegemaakt, inclusief de spreker niet.

Op een lokale ontwikkelomgeving dienen alle componenten die de applicatie nodig heeft draaien, zodat iedereen alle code kan ontwikkelen en testen. Deze machines moeten wel exact dezelfde configuratie hebben, anders werkt het natuurlijk bij de ene ontwikkelaar wel en de andere niet. Pas als alles lokaal getest is en werkt, moet de developer het bestand inchecken.

Het is heel normaal dat de database wel gedeeld wordt. Zo kun je test data van anderen delen en blijven tabellen en data velden voor iedere gebruiker dezelfde.

Een ander veel gebruikte manier is met sandboxes te werken op een centrale server waar iedere developer zijn eigen workspace heeft (dit is hoe wij het doen). Op deze manier blijft de configuratie van de server altijd identiek, terwijl developers wel hun eigen code kunnen bewerken zoder dat de rest er last van heeft. Het grootste nadeel is de ‘single point of failure’, oftewel: als deze server wegvalt is iedereen zijn spullen kwijt. Aan de andere kant is dit probleem natuurlijk opgelost door het tijdig backuppen van alle gegevens.

Het is belangrijk dat iedereen dezelfde editor gebruikt. Ongeacht welke het is kun je er dan van op aan dat iedereen in ieder geval dezelfde fouten maakt. Iedere editor heeft namelijk zijn eigen beperkingen. Natuurlijk raadt Gaylord Zend Studio aan, welke wij al gebruiken bij Freshheads.

Een ander handig hulpmiddel is Zend Platform free-to-use in development, helaas moet er betaald worden voor het runnen op live sites.

Selenium IDE is een User Interface test-tool. Selenium kan onthouden (als macro) wat je gedaan hebt op de site, en dit daarna herhalen in unit-testing. Zo is te zien hoeveel code daadwerkelijk gebruikt wordt in je applicatie.

PHP Code sniffer kan op code-style en guidelines checken daarbijk kan er ook te zien zijn hoe variabelen gebruikt worden in je functies.

Continous Integration: Cruise Control deze tool kan bovenstaande tools runnen en houdt dan van alles de resultaten bij. Er kan zelfs aan gechecked worden op verwacht resultaat. Deze tool is ook automatisch elke dag te draaien om zo alle gecommitte projecten te scannen, en je smorgens daarvan de resultaten van voor te schotelen.

Bug tracking kan door middel van gebruik van Trac dit kan geintegreerd worden in je svn. Verder heeft Trac diverse plug-ins.

phpUnderControl kan je verschillende resulltaten van je tools in beeld brengen. Buildix is hier een voorbeeld van.

[13:45] Gaylord rondt zijn presentatie af.

Meer weten?

Dimitri van Hees