Louis' highlights van DrupalJam

Op zijn eerste DrupalJam als ezDeveloper heeft Louis een aantal interessante presentaties bijgewoond. Een samenvatting van de talks die hem het meest aanspraken...



Liberté, égalité, fraternité
Local development in Docker containers met Lando

Daniel Smidt & Jeffrey Bertoen
 

DrupalJam 2018

Als je aan veel verschillende Drupal sites werkt, wordt het werkend houden van je lokale ontwikkelomgeving steeds lastiger omdat verschillende Drupal versies (en dan vooral Drupal 7 in vergelijking met 8) verschillende PHP versies nodig hebben. Of verschillende Solr versies. Of webservers. Of een combinatie van dat alles. Voor je het weet ben je als ontwikkelaar zeeën van tijd kwijt met uitzoeken en bijhouden welke PHP, Solr of webserver je moet gebruiken om net even dat ene puntje in die ene website op te lossen.

Daniël en Jeffrey legden uit hoe je dit probleem op kunt lossen met Docker, om precies te zijn met de Docker-shell Lando. Ze hadden overtuigende argumenten waarom Docker/Lando de voorkeur heeft boven oplossingen zoals VirtualBox/Vagrant. Ook werd helder waarom er voor Lando is gekozen, met als belangrijkste argument dat ook designers, nieuw in dienst getreden ontwikkelaars en stagiaires er vrijwel direct mee aan de slag kunnen.
Naar de slides van de presentatie

If you ask me

Alle sites lokaal laten draaien in een docker omgeving is niet in een paar tellen gebeurd. Maar vooral bij het debuggen van de meer obscure bug in bestaande websites kan het erg veel tijd schelen als je lokaal precies dezelfde omgeving hebt als op de server. Bovendien kan de docker-setup in een eenvoudig YAML-bestand gedeeld worden (bijvoorbeeld binnen de git-repo) en hoeft de setup in principe dus maar één keer door één ontwikkelaar gedaan te worden.



DDOS je site plat:
Load testing van Drupal

Wouter Immerzeel & Tom van Vliet
 

DrupalJam 2018

Ook stukmaken kan constructief zijn… Over load testing van je Drupal site. Niet alleen interessant om te zien hoe anderen dit soort dingen aanpakken, maar ook omdat er toch altijd ook een soort van duivels plezier zit in het stukmaken van iets wat je zelf gebouwd hebt. Nou ja, echt stuk gaat het natuurlijk niet (al moet je het testen nóóit op een productiesite doen), maar het komt een eind in de buurt.

Het probleem dat Wouter en Tom aanstipten is een probleem waar je als ontwikkelaar het liefst nooit mee te maken krijgt: de prachtige website die je net hebt gebouwd is bij livegang totaal niet vooruit te branden. Wacht daarom niet met dit testen tot het laatste moment, maar zorg dat je al tijdens het ontwikkelen regelmatig de performance van je site onderzoekt en test.

Testtools

Hoe goed je site presteert, kun je testen met tools zoals JMeter of Seige. Dit zijn tools die eigenlijk niets meer doen dan een grote hoeveelheid verkeer naar je site sturen (overigens wel op een slimme manier). Dat kan een goede test zijn, maar let wel op dat de URL's die je opvraagt ook realistisch zijn: vijfhonderd keer per minuut anoniem een gecachte homepage opvragen is geen goede test als het gaat om een intranet waar alle gebruikers ingelogd zijn en gepersonaliseerde data te zien moeten krijgen. Let op: lokaal testen kan een sterk vertekend beeld geven omdat je eigen laptop nou eenmaal geen server is.

Profilers

Daarnaast is het goed (en als bovenstaande testen problemen geven zelfs bijna onvermijdelijk) om je code regelmatig door een profiler te halen, zoals XHProf (alleen voor PHP 5-versies) of Tideways XHProf. Zo'n profiler laat je zien hoe vaak functies worden aangeroepen en hoeveel tijd ze kosten om uit te voeren. Hierdoor krijg je een goed beeld van waar de bottlenecks zitten in je applicatie en kun je met een frisse blik naar die functies kijken en proberen ze te optimaliseren. Het testen met Jmeter of Siege is vooral een kwestie van geduld hebben, maar juist bij het optimaliseren van je code kun je je als developer helemaal uitleven.

Nog wel één opmerking: bovengenoemde testtools testen de server, maar in moderne websites is de performance van de javascript in de browser ook een van de dingen die je in de gaten moeten houden. En, als er veel gewerkt wordt met AJAX-requests is het ook zaak om de URL's die daar worden gebruikt los op te nemen in de test-urls, want JMeter en Siege voeren geen Javascript uit.

If you ask me...

Het opzetten van een goede loadtest kan behoorlijk wat tijd in beslag nemen. Net zoals bij unittests zou het handig zijn om ook de loadtests via de git-repo te delen, zodat niet iedere ontwikelaar weer helemaal opnieuw moet beginnen met het opzetten van tests. Wat betreft het gebruik van profilers: dit moet op iedere ontwikkelomgeving een keer goed ingericht worden, maar als je het eenmaal hebt draaien kun je dit als ontwikkelaar heel eenvoudig vaak gebruiken.



Highly interactive, highly reliable, Single Page Web Applications in TypeScript and React, using Headless Drupal

Giuseppe Maggiore
 

DrupalJam 2018

Giuseppe Maggiore hield een presentatie over het bouwen van een webapplicatie met headless Drupal, Typescript en React. TypeScript kun je zien als een uitbreiding op Javascript, of meer precies op NodeJS, die op een eenvoudige manier het hele idee van OOP (en dan bedoel ik, als oud-C++ programmeur écht OOP) in Javascript te gebruiken.

Door de definitie van interfaces en classes word je als ontwikkelaar gedwongen, of beter geholpen, met het op orde houden van je code. Alhoewel de syntax soms een beetje weg heeft van een ouderwetse BASIC-applicatie ("let user = new Student("Jane", "M.", "User");") lijkt TypeScript een zeer krachtige uitbreiding te zijn, zeker in combinatie met reactJS.

If you ask me...

Ik ben zelf meer een back-end developer maar begrijp vaak ook wel het enthousiasme voor wéér een nieuwe front-end JS-library die de hele webbeleving gaat veranderen ("again!"). Veel overtuigender echter, zeker in combinatie met het verhaal over Load testing, vind ik Giuseppes argument dat je door een dergelijke implementatie een (soms groot) deel van de verwerkingscapaciteit kan verleggen van de server naar de client. En hoewel niet iedereen bij elke nieuwe iPhone of Samsung naar de winkel rent, kun je er tegenwoordig wel van uitgaan dat clients voldoende krachtig zijn en dus hun deel van de load op zich kunnen nemen.

Fotocredits: DrupalJam