PHPBenelux Conference 2020: de sfeer en de beste talks
De setting: het Wilde Westen. De mensen: enthousiast, speels en leergierig. De tutorials en talks: grappig, boeiend en vernieuwend. Er waren weer heel wat ideeën te rapen op de PHPBenelux Conference 2020. Een sfeerbeeld, en een overzicht van de talks die ons bijgebleven zijn.
PHPBenelux: elePHPants in het Wilde Westen
Voor de 11e editie van PHPBenelux conferentie, die plaats had op vrijdag 24 en zaterdag 25 januari in het Edegemse Ter Elst, werden de bezoekers ondergedompeld in een Wilde Westen-sfeer. De hele aankleding van de zaal was prachtig in thema, van cactussen tot schandpaal.
Alle sponsors deden hun duit in het western-zakje: je kon er hoefijzers gooien, je geluk testen in het casino of je moed bewijzen met een 'snake in a hat' spel. Ondertussen werd ook een podcast opgenomen in heuse sheriff booth. Combell was, zoals traditie geworden, ook dit jaar weer vaste partner. En zoals ook naar jaarlijkse gewoonte waren Stijn en Romy aanwezig op de stand van Combell om de bezoekers hartelijk te verwelkomen. Als je durfde, kon je er als cowboy je schietkunsten testen, en nerf guns winnen.
Druk programma, met extra aandacht voor studenten en diversiteit
Heel leuke randanimatie dus, die voor de nodige ontspanning zorgde tussen de boeiende uiteenzettingen door. En het was zoals altijd een rijkgevuld programma: praktische tutorials op vrijdagvoormiddag, en interessante presentaties in de namiddag en de hele zaterdag. Een door de community ontwikkelde app (https://phpbenelux2020.glideapp.io/ ) maakte het gemakkelijk om je schema op voorhand uit te stippelen.
Dit jaar wilden de organisatoren speciale aandacht schenken aan de studenten. Alhoewel de toegangsprijzen, dankzij de gulle sponsors, erg toegankelijk zijn, liggen die voor studenten vaak nog iets boven hun financiële kracht. Studenten konden daarom dit jaar genieten van uitzonderlijke kortingen, mits voorlegging van hun studentenkaart.
Vaak lijkt het wereldje van ontwikkelaars nog een exclusief mannelijk clubje geeks - maar dat lijkt stilaan te veranderen. Niet alleen het aantal vrouwelijk sprekers, maar ook het aantal vrouwelijke deelnemers neemt jaar na jaar toe. PHPBenelux wil daarom graag het inclusieve karakter van de community wereldwijd uitdragen. Een aparte groepsfoto van de ladies die meegeholpen hebben om de conferentie vrouwvriendelijker en diverser te maken zet dat elk jaar in de verf.
De tutorials op vrijdagvoormiddag brachten heel concrete tips om bepaalde problemen aan te pakken. De lijst met de onderwerpen doet de ontwikkelaar watertanden - van Docker en Scratch, tot Domain driven design en user experience design. Het is al uitkijken naar de onderwerpen van de volgende editie van de PHPBenelux Conference!
Enkele talks die ons bijgebleven zijn
De opening keynote Which Way is the ElePHPant Pointed and other ElePHPant Jokes van legendarische PHP-ontwikkelaar Cal Evans was uiteraard dé must voor elke aanwezige. De olifanten-grapjes zijn niet uit de lucht. Cal bracht een overzicht van de ontwikkeling van PHP doorheen de jaren, en riep op om de mensen te bedanken die PHP mogelijk maakten.
Een mens kan maar op één plaats tegelijkertijd zijn, en dus moest het Combell team daarna moeilijke knopen doorhakken: welke presentaties bijwonen? Hier volgt een selectie van wat zij onthielden uit de sessies die zij uiteindelijk kozen:
1. Je maakt je applicatie sneller met OPCache, Realpath Cache en Preloading
Uiteraard zetten we onze eigen Jachim Coudenys, PHP ontwikkelaar bij Combell, en medeorganisator van PHP-WVL, vooraan in ons lijstje! Hij toonde in PHP OPCache, Realpath Cache and Preloading aan hoe je je applicaties heel wat sneller kan maken door de manier waarop je PHP geconfigureerd is. Hij ging dieper in op OPCache, Realpath Cache en Preloading: hoe zij werken, en hoe jij ze kan benutten. En hij maakte de link naar hoe Combell websites en applicaties hierdoor beter laat presteren.
2. PHP kan wel degelijk overweg met serialisering
In Advanced Serialization vertelde Michelle Sanver vanuit haar eigen ervaring hoe zij geconfronteerd werd met de bottleneck die serializing oplevert. Serializatie is de conversie van een datastructuur naar een bewaarbare representatie, zodat die opgeslagen kan worden in een bestand, een geheugenbuffer, of doorgegeven worden doorheen een netwerk.
99% van de tijd zullen de bestaande implementaties wel volstaan. De gebruikte dataset heeft versies, en zeer veel variaties in de data. Je kan dus geen out-of-the-box serialize gebruiken wegens te traag. De datasets zijn zo groot en complex dat bij 100, zelfs soms al bij 50 producten PHP Out-of-Memory (OOM) gaat.
Zich inspirerend op Golang, slaagde het team erin gecompileerde serialization handling supersnel te maken. Maar ook PHP kan dat doen: door PHP-code voor specifieke versies te genereren, wordt de performantie maar liefst met 55% verbeterd!
3. Een Elastic stack zet je heel snel op in Docker
Philipp Krenn, ontwikkelaar en evangelist bij Elastic, gaf in Centralized Logging Patterns een overzicht van Elastic Stack, een centrale loggingtechnologie, die ook bij Combell gebruikt wordt. Hij vertelde hoe in Monolog van Elastic nieuwe uitbreidingen gemaakt zijn om in het Elastic Common Schema formaat te kunnen loggen. De presentatie toonde ook nogmaals aan hoe vlug je een Elastic stack (elasticsearch, kibana, logstash, beats) kan opzetten in Docker.
4. Security: nieuwe variaties op oude risico's
Om je als ontwikkelaar alert te houden, gaf Christian Wenz een overzicht van de nieuwste Web Application Security Trends. Ondertussen kent iedere ontwikkelaar de risico's van XSS, dus dat zou eigenlijk geen probleem meer mogen opleveren. Maar de boeven hebben ondertussen wel nieuwe variaties gevonden op hun oude aanvalsmiddelen. Enkele tips van Christian:
- Er worden zoveel markup-talen gebruikt, en elk heeft zijn eigen escape-sequens.
- Gebruik een Content-Security-Policy (CSP) header op je website (en gebruik level 2!). Het risico bestaat dat dit dingen gaat breken. Maar gebruik in geen geval 'script-src: unsafe-inline', en als je het toch doet, gebruik dan helemaal geen CSP. Werk bovendien zo strict mogelijk.
- Vertrouw geen links, gebruik `<a href='https://example.org' rel='noopener noreferer'>example</a>`. Zoniet kan men echt gevaarlijke dingen doen met de JS 'window.opener' API, zoals de originele site veranderen in een phishing site.
- Laat geen frames toe. Gebruik 'X-Frame-Options: deny' waar mogelijk, om click-jacking te vermijden.
5. RUM start distributed tracing al in de browser
In Pairing with RUM: How DevOps can benefit from Realtime Using Monitoring gaf Priit Potter een mooi overzicht van distributed tracing - wat mooi aansloot met de talk over Elastic. Nu alles meer en meer microservices worden, en één request door meerdere systemen kan lopen, is distributed tracing zeer handig. Maar met RUM start het al in de browser, waar we ook alle verschillende assets die we inladen gaan tracken (zoals de loading waterfall uit Chrome Developer Tools).
6. Les geven moet je leren
De presentatie die dag 1 afsloot staat eigenlijk los van PHP: in Stepping Outside your Comfort Zone: Learning to Teach maak je kennis met de verschillende manieren van leren. Heather White, zelf een leerkracht van opleiding, toonde hoe je best informatie kan presenteren en structureren, om alle studenten te bereiken.
7. Hou je architectuur clean met Deptrack
Simon Mönch toonde in Keep your are architecture clean hoe je met deptrack, een package dat je code controleert, een overzicht behoudt. Het zorgt ervoor dat je de verschillende lagen uit je applicatie niet te veel door elkaar laat lopen. Zo voorkom je dat domain logic bijvoorbeeld code gaat gebruiken uit frameworks, enz. En je core business logic blijft mooier in zijn eigen layer, met als bijkomend voordeel dat je je framework indien nodig simpelweg verplaatsen kan.
8. Er is nog altijd geen native oplossing voor Enums
Helaas, zo moest Andy Snell je teleurstellen in zijn talk Enums: The Missing Data Type, er is nog altijd geen datatype voor Enums, de "lijstjes" in PHP, buiten boolean (true & false). Velen probeerden al om er een onderdeel van de taal te maken, maar zonder succes. Wel zijn er een aantal userland packages, die de enum functionaliteit mogelijk maken in PHP, maar het blijft wachten op een native enum data type in de taal zelf.
9. En maak het de hacker vooral niet te gemakkelijk!
Nog meer beveiligingstips waren er te rapen bij Srdjan Vranac, met zijn talk onder de ironische titel Be nice, help the person who hacks your servers to get your data. Ongelooflijk maar waar, nog altijd worden te veel geheimen bewaard in gewone tekstbestanden. En dat kan zware gevolgen hebben, van zakelijk standpunt bekeken. Want wanneer iemand toegang krijgt tot die bestanden, zal je bedrijf in het beste geval heel wat geld verliezen, maar in het slechtste geval gewoon ten onder gaan.
Je doet er dan ook best aan om je geheimen regelmatig te roteren, en dynamisch (samengestelde) geheimen te gebruiken. Ga daarbij uit van het principe: alles is een geheim. `${USER}:${PASSWORD}@${MYSQLHOST}:${MYSQLPORT}` is een formule die wonderen verricht: het maakt het supersimpel om een consistentie te hebben doorheen verschillende omgevingen: ontwikkeling, staging, acceptatie en productie.
En waarom geen beheerstool voor je secrets gebruiken, zoals Hashicorp Vault?
10. RAFT houdt clusters van computers in sync
Joshua Thijssen gaf in RAFT: A story of how clusters of computers keep your data in sync een mooi en diepgaand overzicht van de RAFT-technologie. Wanneer je verschillende servers draaien hebt, kan het altijd zijn dat een daarvan stopt met werken, of door netwerkproblemen niet meer bereikbaar is. De RAFT-techniek helpt om ervoor te zorgen dat het systeem ook dan verder blijft werken. De verschillende servers komen, simpel gezegd, overeen wie de master is. De techniek gaat schuil achter Elasticsearch, MongoDB, enz.
Eigenlijk is RAFT een gedistribueerd consensus algoritme. Het werd gecreëerd als een alternatief voor Paxos, dat veel te complex gevonden werd. RAFT daarentegen werd bewust eenvoudig gehouden. RAFT berust op 3 pijlers: Leader election - er kan maar één leader zijn; log replication - om te zorgen dat de data overal hetzelfde is; en safety - om NOOIT een incorrect resultaat weer te geven.
11. Hou je PHP goed in het oog
We begonnen met een Combell-medewerker die op PHPBenelux zijn wijsheid deelde, Jachim, en we sluiten dit verslag af met een andere medewerker: Ike Devolder, Devops Developer bij Combell. Ook hij boog zich over performance - maar dan vanuit een andere optiek: hou in het oog wat je PHP doet. In zijn talk Spying on PHP gaf hij een introductie in PHPSpy, een sampling profiler voor PHP. Je kan daar zien wat er zich afspeelt in je PHP, zonder dat je in je PHP zelf iets moet wijzigen.
Eigenlijk is dit Strace, een tool voor Unix die system calls traceert, maar dan voor PHP. De invloed die PHPSpy op de performantie heeft bepaal je zelf, omdat je zelf het sample rate kan configureren. Ike is erg enthousiast over PHPSpy, dat volgens hem meer aandacht verdient.
Heel interessante onderwerpen - maar denk nu niet dat het enkel serieus was hoor! Er werd heel wat afgelachen en de sfeer zat er goed in, vooral tijdens de ontspanningsmomenten op vrijdag en zaterdag. Het PHPBenelux fotoverslag op onze Facebook-pagina maakt dat duidelijk!