Symfony serializer

Michelle kreeg de eer om een van de eerste 3 tracks na Cal Evans zijn key note vol te spreken. Ze sprak over haar moeilijke weg naar het serialiseren van gegevens en hoe zij en haar team de perfecte oplossing voor hun project hebben bedacht. Voor wie niet vertrouwd is met het concept, is serialiseren het omzetten van je data in een request output formaat zoals JSON of XML en deserialisatie andersom.

JMS Serializer blackfire

Performance issues

Voor een grote retailer in Zwitserland, gebruikte Michelle de bekende JMS-serializer. Dit bleek jarenlang een knelpunt te zijn in hun toepassing, omdat ze problemen ondervonden met de prestaties. Michelle ontwierp een oplossing die resulteerde in een algemene prestatiewinst van 55%.

Om de bottleneck te vinden werd gebruik gemaakt van Blackfire. Hiernaast zie je een screenshot van een JMS-methode die 60.000 keer in één keer wordt aangeroepen.

Oplossingen?

Er zijn veel oplossingen geprobeerd: JMSSymfony serializer, Better serializer en veel andere PHP-serializers. Dat zijn allemaal geweldige bibliotheken, maar geen van hen toonde enige verbeteringen. Tegen die tijd accepteerde het team om te leven met deze prestatiedrain totdat een nieuwe GoLang ontwikkelaar zich aansloot.
Hij werkte aan een oplossing in GoLang: Sheriff. De eerste resultaten waren veelbelovend. Om de huidige JMS-annotaties te hergebruiken, heeft Liip een bibliotheek gemaakt voor het genereren van Go structs met behulp van Sheriff uit PHP modellen. En om het eindelijk te laten werken met de PHP applicatie werd Goridge gebruikt. Goridge stelt je in staat om Go servicemethoden aan te roepen vanuit PHP.

Deze GO + PHP aanpak was geweldig en de applicatie had een enorme snelheidsboost. Maar, PHP had geen eerlijke kans. Dus besloot het team om de manier waarop GO serialisatie gebruikt te implementeren in hun eigen open source PHP-bibliotheek: liip/serializer.

liip/serializer

Deze open source library genereert PHP code op basis van de opgegeven PHP-modellen. Er wordt een apart bestand gegenereerd voor elke combinatie van versies en serializer-groepen om alle logica te verplaatsen naar de stap van de codegeneratie. Let op, ze gebruiken twig om PHP-bestanden te genereren! Door het genereren van deze bestanden op voorhand versnellen ze de applicatie. Het werkt hetzelfde als JMS, dus het moet gemakkelijk te vervangen zijn.

Gedachten bij deze sessie

Het is altijd leerzaam om te horen hoe anderen de problemen die ze tegenkomen benaderen. Naar mijn mening mag het wat dieper ingaan op de serializer en wat de verbeteringen precies zijn, want dat deel was erg interessant.

More insights

Cross-platform applicaties met React Native

Nog nooit was het ontwikkelen van native mobiele applicaties zo toegankelijk als vandaag. Bij Codana doen we dit door gebruik te maken het React Native, een open-source framework dat werd ontwikkeld door Meta.

Auteur: Jinse Camps
Architect | Analyst
Jinse Camps
dev

Laracon EU 2024

Een fantastisch leerrijke ervaring om met een hoop Laravel gepassioneerde mensen te inspireren! Iets wat niet gemist kan worden en heel veel voeling geeft met de community. Wat een top evenement! Wie zien we volgende edities? 😮

Auteur: Noah Gillard
PHP / Laravel Developer
Noah Gillard AI generated Face
laracon codana persoon

Een efficiënt datamanagementsysteem voor toerisme

Een TDMS of Tourist Data Management System, is simpelweg een platform dat data uit verschillende bronnen ophaalt, intern al dan niet automatisch verwerkt en deze gegevens terug aanbiedt aan externe platformen.

Auteur: Tom Van den Eynden
Web Architect | Coordinator
Tom Van den Eynden
laptop

Systemen voor gegevensbeheer in toerisme

In dit artikel verkennen we wat een TDMS is, waarom het essentieel is voor de toerisme-industrie, en hoe technologieën zoals Laravel en ElasticSearch het verschil kunnen maken. 

Auteur: Tom Van den Eynden
Web Architect | Coordinator
Tom Van den Eynden
tdms

Beveiliging van Laravel 101

In deze blogpost gaan we dieper in op een aantal veelvoorkomende Laravel beveiligingsfouten.

Auteur: Robbe Reygel
PHP developer
laravel

Test Driven Development - toepassing op een project

TDD, of voluit Test Driven Development, is een aanpak van ontwikkeling waarbij we vertrekken van het schrijven van tests. 

Auteur: Sarah Jehin
PHP developer
Sarah Jehin
development