PHP: de stand van zaken


Van donderdag 10 juni t/m zaterdag 12 juni werd de jaarlijkse Dutch PHP Conference weer gehouden. Na twee jaar eerder een dag bijgewoond te hebben, gingen wij deze editie naar de laatste twee dagen van dit event: de conferentiedagen. Ook dit keer was het een erg geslaagd evenement. De variatie aan onderwerpen was groot, waardoor er voor iedereen genoeg interessante lezingen waren om bij te wonen. Alle nieuwe inzichten hebben meteen geleid tot initiatieven en ideeën om in te zetten bij zowel onze eigen interne applicaties en systemen, als bij servers en platformen van onze klanten.


 

Vrijdag 11 juni

Na de opening begon Kevlin Henney een presentatie over zijn boek: ‘97 things a programmer should know about‘. Het zijn programmeurs met vele jaren beroepservaring, die door middel van eenvoudige metaforen beschrijven wat vaak voorkomende misvattingen zijn gedurende het complete traject van softwareontwikkeling. Als je eens een spiegel voorgehouden wilt worden, is dit perfecte literatuur.

Vervolgens ging ieder zijn eigen weg. De conferentie was opgesplitst in drie tracks, waarin verschillende presentaties werden gehouden over uiteenlopende onderwerpen. Hiernaast was er een zogenoemde uncon track, waarin iedereen die wat te vertellen had zich aan kon bieden voor het geven van een presentatie. Ook hierin kwamen leuke onderwerpen naar voren, maar heb ik helaas moeten missen door de, naar mijn idee, onvoldoende communicatie over de agenda hierbinnen.

Premature optimization mistakes

Mijn dag begon met een presentatie van Ilia Alshanetsky over fouten die veelvuldig gemaakt worden bij het optimaliseren van code. Ik moet zeggen dat ik dit direct één van de beste presentaties van de conferentie vond, en dit zegt niet dat ik de rest slecht vond. Ilia sprak voornamelijk over het versnellen van code, zonder deze daadwerkelijk aan te raken. Het zijn relatief eenvoudige optimalisaties die een aanzienlijk verschil kunnen maken. Meer informatie hierover is terug te vinden in de slides van zijn presentatie.

The Cake is a lie

Na deze informatie opgenomen te hebben vervolgde ik mijn weg naar de tweede presentatie ‘The Cake is a lie’, door Sebastian Bergmann. Deze presentatie omschreef voornamelijk het nadeel van het gebruik van frameworks. Zo liet hij zien dat binnen het Symphony framework door 31 regels YAML al duizenden regels code gegenereerd worden. Deze code moet natuurlijk onderhouden worden, maar is ook sterk gebonden aan een set van API’s die door een derde partij onderhouden wordt. Dit, tezamen met het ontbreken van testcases voor de gegenereerde code, maakte hem, als ontwikkelaar van PHPUnit, erg sceptisch over het gebruik hiervan.

The art of scalability


‘The art of scalability’, de presentatie die ik hierop volgend bijwoonde, beloofde een interessante presentatie te worden. Ik was dan ook teleurgesteld toen bleek dat deze presentatie grotendeels over het management van een ontwikkelingsafdeling ging. Het benoemde veel factoren waar wij, door de kleine omvang van ons ontwikkelteam, weinig mee te maken zullen krijgen. Evengoed kwamen er enkele interessante punten naar voren die wellicht in de toekomst goed van pas kunnen komen.

Under PHP’s hood

De volgende presentatie ging in op de achterliggende techniek van PHP. Dit haakte deels in op het punt dat Sebastian Bergmann eerder op die dag maakte: meer kennis van de achtergrond, kan leiden tot betere code op de voorgrond. De presentatie werd gehouden door Johannes Schlüter, die de verantwoordelijkheid draagt over de 5.3 branch van PHP. Hij benoemde enkele optimalisaties die zijn doorgevoerd in de PHP core code, en wat dit betekent voor de code die in deze taal geschreven is.

Testing untestable code

Stephan Hochdoerfer vervolgende de dag met een presentatie over het testen van ontestbare code. Het schrijven van unit-tests lijkt soms eenvoudig, maar het gaat er vooral om wat er nu daadwerkelijk getest wordt. Een veel-voorkomende fout is dat wanneer een unit getest wordt, hierin ook vele afhankelijkheden, zoals andere klassen, meegetest worden. Het doel is juist om te testen hoe bepaalde code fungeert als een onafhankelijke unit. Deze presentatie ging over het wegnemen van afhankelijkheden binnen bepaalde code, om zo tot goede en representatieve tests te kunnen komen.

HiPHoP for PHP

Mijn vrijdag werd afgesloten door Scott MacVicar, die een presentatie hield over HipHop voor PHP. Dit is software waarmee PHP code gecompiled kan worden in C code, waardoor deze een stuk sneller wordt. Binnen de presentatie besprak hij voornamelijk wat HipHop precies doet, en hoe het werkt, maar het leukste deel werd bewaard tot het einde: het laten zien dat het echt werkt! De resultaten van dit voorbeeld was een bevestiging van zijn hele presentatie; HipHop voor PHP maakte de code tot vijf maal sneller dan hij was.

Na een beetje bijgekomen te zijn van deze verbluffende resultaten, liep de eerste dag van de conferentie op zijn einde. Na gezellig uit eten te zijn geweest, verplaatsten wij ons langszaamaan richting stadscafé de Heffer waar de mogelijkheid was om nog even te socializen en naborrelen met de andere conferentiegangers.

 

Zaterdag 12 juni

Na een goede nachtrust en het weer vrijgemaakt hebben van hersencapaciteit gingen we weer op weg naar de tweede dag van de conferentie. Na alle leerzame presentaties die op de vrijdag werden gehouden, beloofde ook deze dag weer veel goeds. En dat werd waargemaakt.

Security-Centered Design

Na een herhaling van de uitleg over hoe de conferentie zou verlopen, werd de opening gehouden door Chris Shifflet. Deze ging over het gedrag dat mensen vertonen wanneer zij applicaties gebruiken, en vooral wat hun kijk hierop is. Tijdens deze presentatie werd een goed voorbeeld gegeven van ‘change blindness’, dat één van de gebreken van de mens adresseert. Change blindness houdt in dat de mens veelal alleen veranderingen ziet als ook direct zichtbaar zijn. Zeker in het geval van een verandering in details, zal het niet worden waargenomen als dit gebeurt zonder het explicitiet te vermelden. Dit is in mijn ogen een interessant concept waar, zelfs in de beste applicaties, soms weinig rekening mee gehouden wordt. Hiernaast ging de presentatie over het vertrouwen dat mensen leggen in de correctheid van de applicaties die zij gebruiken. Dit is een probleem waaruit vooral het succes van phishing uit voort komt; iets waar iedereen voor moet uitkijken, maar ook applicaties een preventieve rol in kunnen spelen.



Foto gemaakt tijdens de presentatie door Chris Shiflett

Async webservices with php and nodejs


Mijn dag vervolgde zich met een presentatie van Sebastian Schürmann, over het asynchroon uitvoeren van intensieve in- en output handelingen. Waar PHP normaliter regel voor regel uitgevoerd wordt, kan de snelheid enorm bevorderd worden als langdurige handelingen uitgevoerd kunnen worden, zonder hierop te hoeven wachten. Deze presentatie ging in op de mogelijkheden die je hebt om dit te kunnen realiseren.

APC & Memcache the High Performance Duo

Na zijn eerste geweldige presentatie ging ik opnieuw naar Ilia Alshanetsky, die dieper in ging op het gebruik van APC en Memcached: twee applicaties voor het cachen van data binnen een applicatie. Deze presentatie ging voornamelijk in op de API’s die beide systemen binnen PHP beschikbaar hebben, en gaf hierbij aandacht aan de manier waarop deze systemen nog sneller dan dat ze van zichzelf al zijn, gebruikt kunnen worden. Dit was een welkome aanvulling op de presentatie die hij een dag eerder heeft gegeven.

Design for Scalability with Hierarchical MVC

En toen: nogmaals een presentatie over schaalbaarheid. Deze presentatie besprak wat ik een dag eerder eigenlijk hoopte te horen. Sam de Freyssinet begon te vertellen over een hiërarchische opzet van het design pattern MVC, waardoor je verschillende domeinen binnen de applicatie kan verspreiden over verschillende hardware. Met het framework waaraan onder andere Sam werkt zijn resource-intensieve stukken code, door middel van eenvoudige configuratie, ook eenvoudig te verplaatsen. Op deze manier kan een applicatie dus eenvoudig meeschalen met de behoeften die de gebruikers hiervan hebben. Mocht je hierin geïnteresseerd zijn, zou je eens kunnen kijken naar het Kohana framework.

Domain NoSQL: Next Generation Models

Een concept waarmee Cyso nog weinig in aanraking is gekomen, maar waarin ons developmentteam toch sterk geïnteresseerd bleek, was de volgende presentatie over NoSQL, door Matthew Weier O’Phinney. NoSQL is een concept waarin databases niet langer gebonden zijn aan voorgedefiniëerde schema’s, maar door middel van een key-pair gebaseerde opslag dynamisch kunnen meeveranderen met een applicatie. Door dit concept kunnen softwareontwikkelaars zich bezig houden met het opzetten van domeinspecificieke code, zonder dat zij zich zorgen hoeven te maken over in welk formaat de data opgeslagen dient te worden.

Afsluiting en conclusies

De conferentie werd afgesloten door een forum, waarin Scott MacVicar, Matthew Weier O’Phinney en Sebastian Bergmann hun visie gaven op de toekomst van PHP.

Inmiddels zijn we vier dagen verder. Afgelopen maandag hebben wij al redelijk wat optimalisatie doorgevoerd op onze Service en API omgeving, wat het geheel daadwerkelijk een hoop sneller heeft gemaakt. Zelf kijken wij erg uit naar het moment waarop wij deze optimalisaties kunnen doorvoeren op de live omgeving, zodat ook u hier iets van kunt merken. Het was een leerzame conferentie met enorm veel informatie waar we echt wat aan hebben, maar bovenal is er met een andere visie gekeken naar problemen die wij dagelijks tegenkomen. Dit belooft een hoop goeds voor de toekomst.

 

Both comments and pings are currently closed.

 

Over de auteur


Het bovenstaande artikel is geschreven op 16 juni 2010 door Tristan Reemer:

Binnen Cyso Managed Hosting ben ik sinds 2006 actief als Software Developer, waarbinnen ik voornamelijk aan interne projecten werk. Sinds enkele maanden is de rol van Software Architect hierbij gekomen en ontferm ik me over de meest uiteenlopende vraagstukken.

Klik hier voor een overzicht van artikelen die door Tristan geschreven zijn.