SensioLabs audit: technisch verslag

We vroegen een “Quality Audit” aan bij de makers van Symfony, SensioLabs.

Concreet houdt dit in dat we vroegen om extern advies en een objectief oordeel over het design en de kwaliteit van onze code. Het resultaat van de Quality Audit is een lijvig PDF-bestand, waarin Harmony op verschillende vlakken (Architecture, Performance, Complexity, Security, …) wordt doorgelicht. Op het einde staat een stevige analyse en een eindconclusie.

Niet enkel onze code, maar ook onze manier van werken werd doorgelicht. Zo is er bijvoorbeeld aandacht voor onze .git-flow en kregen we een bijsturende opmerking over onze Semantic versioning. Ons rapport handelt verder over de manier waarop we met dependencies omgaan en hoe we aan Continuous Integration doen.

Daarnaast kregen we lovende feedback over hoe we omgaan met verschillende omgevingen en over hoe onze applicatie is opgebouwd. Maar een groot deel van de “opmerkingen” gaat ook over Cyclomatic Complexity, Dead & Unneeded Code, het feit dat we een beetje achterlopen op de laatste Symfony versie en dergelijke meer. Dat laatste is ook logisch, aangezien we telkens wat tijd nodig hebben om te upgraden en onze code aan te passen aan de nieuwe standaarden.

In de audit ging SensioLabs enorm diep door de code. Zo werd er één methode gevonden, waar er door business logica updates uitgevoerd worden op cascaded objects, terwijl die logica eigenlijk “geweten” zou moeten zijn door het ORM (en bijgevolg onze databank). In dit geval ging het om wanneer een object van een welbepaalde klasse verwijderd werd, er code in een controller werd uitgevoerd om gelinkte objecten te gaan wijzigen. Die code hoort niet in een controller, maar wel in een Transaction die praat met het ORM. Dit is ondertussen opgelost en Harmony is hierdoor weer een stukje minder complex.

Binnen Harmony gebruiken we vaak dezelfde componenten. Bijvoorbeeld als we objecten uit Elasticsearch halen, dan gebeurt dat via een en dezelfde Service/Helper class, die de zoekserver aanspreekt en de resultaten teruggeeft. De service heeft een pittig complexiteitsniveau, waar we dan ook tips over kregen in de vorm van “Stel dat jullie platform groeit naar … dan zul je toch met … en … rekening moeten houden.”

Op het einde van de rit, nog voor het verwerken van de feedback en het implementeren van de voorgestelde optimalisaties, was het verdict dat de huidige staat waarin Harmony zich bevindt, te weinig violations heeft en te weinig complexiteit bevat om het verdere gebruik of onderhoud ervan onmogelijk te maken. Het doel van deze audit was om te laten analyseren of de kwaliteit van onze code voldoende was. Doel geslaagd.

Benieuwd naar hoe we zo’n succesvol verhaal naar jouw bedrijf kunnen vertalen? Contacteer ons, dan bekijken we het samen.

Genoten van het technisch verslag?

Lees hier de creatieve versie