Tools en technieken in de keuken van Enrise

Sabine Kempers - Jansen
Jordin Brouwer & Sabine Kempers-Jansen

17 januari 2019

In een serie artikelen vertellen onze teams welke technieken en tools zij het afgelopen jaar gebruikten om tot hoogwaardige webapplicaties, API’s, websites, shops en portals voor onze klanten te komen. In deze eerste kijken we in de keuken van team Fusion, dat websites en applicaties snel, veilig en simpel maakt en houdt. Dit team is er voor productorganisaties die voor hun omzet afhankelijk zijn van een serieus online product of dienst. Het is van belang dat software voor die bedrijven betrouwbaar, robuust en flexibel is.

Bij Enrise werken we in zelfsturende teams. Dat zijn multidisciplinaire ontwikkelteams met een eigen propositie en een eigen naam. Als klant pas je op basis van je branche, uitdaging, bedrijfsgrootte, budget en technische stack dus beter bij het ene team dan het andere. Elk team heeft daarom een eigen set met de beste tools, technieken en frameworks.

VueJS

In het vorige decennium was jQuery de JavaScript-library voor dynamische en interactieve websites. Die tijden liggen achter ons en deze plek wordt momenteel vervuld door VueJs. VueJS maakt het makkelijk om interactieve componenten zoals een menu, formulieren, knoppen of video-elementen te implementeren. VueJS maakt het mogelijk deze elementen geïsoleerd van de hele applicatie te ontwikkelen. Zo kun je hetzelfde component meerdere malen gebruiken en separaat testen, wat bijdraagt aan de kwaliteit die wij nastreven. Buiten het feit dat VueJS vele handelingen automatisch voor de ontwikkelaar doet op een snelle en efficiënte manier, is de syntax ook makkelijk om mee te werken.

Door de combinatie van herbruikbare componenten, fijne syntax, uitstekende prestatie en automatische handelingen verlaagt VueJS de ontwikkeltijd voor de dynamische en interactieve websites op lange termijn en is de kwaliteit hoger.

Docker

We stapten af van de standaard werkwijze die we jarenlang hanteerden voor projecten. We verruilden de OTAP-straat (waarbij we lokaal ontwikkelen met Vagrant) voor Docker. We hosten onze Docker-containers op de Google Kubernetes Engine. Naast simpliciteit, onderhoudbaar, veiligheid en de diverse andere technische voordelen die dit met zich meebrengt, geeft dit ons ook de ruimte om losse functionaliteit aan onze klant op te leveren, in plaats van te moeten wachten tot het einde van een hele sprint. In 2017 vertelden wij er meer over tijdens ons kennisevenement CodeCuisine®LIVE.

Laravel Framework

Laravel is op dit moment het populairste PHP-framework om webapplicaties mee te ontwikkelen. In 2018 was dit het go-to framework voor Team Fusion, omdat we veel kennis in huis hebben van het framework en we er zowel snelle als robuuste applicaties mee kunnen maken. Naast een mooi framework biedt Laravel ook een ecosysteem eromheen zoals Homestead, Envoyer en Forge. Dit maakt Laravel ideaal om je nieuwe project mee te kickstarten.

Laravel Envoyer

Envoyer is een service aangeboden door Laravel die zero downtime deployments biedt. Dit betekent dat bij het live-zetten van de applicatie er geen impact is voor de eindgebruiker, die merkt er niets van. Het voordeel van Laravel Envoyer is dat je er een gebruiksvriendelijk dashboard bij hebt en monitoring voor de uptime van de applicatie.

Laravel Forge

Forge is een service aangeboden voor Laravel die server provisioning biedt. Forge zet geautomatiseerd de webserver voor je op met een Laravel- of PHP-applicatie. Op deze manier hoef je zelf geen servers aan te maken. Forge biedt de mogelijkheid om je PHP-versie bij te werken als er nieuwe versies zijn. Tot slot zijn er nog talloze andere opties om in te stellen zoals queues, load balancers en meer. Normaal gesproken zetten wij de servers zelf op die op onze Salt Stack draaien. Op deze manier kunnen wij ze makkelijker onderhouden en monitoren. Soms is Laravel Forge een betere optie voor onze klanten, bijvoorbeeld als zij de hosting zelf regelen.

Laravel Homestead

Laravel Homestead is een officiële, voorverpakte Vagrant-box die een ontwikkelomgeving biedt zonder dat er PHP, een webserver en andere serversoftware op je lokale computer geïnstalleerd wordt. Bij Enrise werken we al langer met onze eigen Vagrant-box waar wij onze projecten in draaien. Het voordeel van Homestead is dat we ook de ontwikkelomgeving met de klant kunnen delen. Hierbij hoeft de klant geen moeilijke omgevingen op te zetten om toch mee te kunnen ontwikkelen.

Symfony

Naast Laravel gebruiken we voor diverse projecten Symfony als framework. We kiezen voor Symfony bij applicaties die langer onderhouden gaan worden of de potentie hebben om (veel) complexer te worden in de toekomst, waarbij wel de trade off is dat de initiële opzet minder gaat dan met Laravel.

Puppeteer

Wij werken het liefst digitaal in al onze zaken, maar diverse klanten hebben wensen om resultaten naar de papieren wereld te brengen of PDF’s aan te kunnen leveren bij eindgebruikers van hun applicatie. Onze favoriete manier om snel PDF’s te kunnen genereren van content is Puppeteer. Puppeteer is een Chrome browser in NodeJS die zonder grafische interface op een server beschikbaar kan worden gemaakt. Daarna kan je de printfunctie van deze headless browser gebruiken om supersnel een PDF te genereren. Soms is het voldoende om bestaande views door Puppeteer te laten printen. Maar met wat maatwerk CSS is het ook mogelijk om volledige documenten te laten renderen Puppeteer. Doordat je de content gewoon in je applicatie kan blijven bouwen, kun je gebruik blijven maken van al je framework-features zoals templates en vertalingen.

PHPUnit

Voordat wij de code van een functionaliteit gaan schrijven, stellen we vast aan welke eisen het moet voldoen. Met deze informatie ontwikkelen we eerst een test waarmee we de functionaliteiten afzonderlijk van elkaar kunnen testen. Zo kunnen we controleren of de functionaliteit werkt en precies uitvoert wat ervan verwacht wordt. Wij streven ernaar om de tests te schrijven zodat ze onafhankelijk van elkaar zijn.

Aangezien wij veel gebruik maken van het Laravel Framework hebben wij gekozen voor het bijbehorende test-framework PHPUnit.

Face

We hebben in 2018 diverse test implementaties gedaan voor gezichtsherkenning, zowel cloud-services (Microsoft Face, Google Cloud Vision) als lokale implementaties (geschreven in PHP, client-side JS, NodeJS). Uiteindelijk hebben we voor een klant Microsoft Face geïmplementeerd waarmee afbeeldingen die worden geüpload in het systeem van onze klant, kunnen worden gecheckt op diverse punten: staat er een gezicht op de foto, is de foto scherp genoeg, etc.

Deployer

Deployer is een tool die het – net als Laravel Envoyer – mogelijk maakt om zero downtime deployments te doen. Deployer biedt ondersteuning voor de meeste PHP frameworks. Ook heeft het een goed versiebeheer waardoor je gemakkelijk terug kan naar een vorige versie. Dankzij Deployer zijn wij variabel bij de keuze van de tools die wij nodig hebben. Bij Laravel gaat onze voorkeur uit naar Laravel Envoyer door het gebruiksvriendelijke dashboard en de uptime monitoring. Voor de meeste andere frameworks kiezen wij voor Deployer.

De genoemde tools, technieken en frameworks zijn een selectie van de volledige stack die we als Enrise bieden. In volgende artikelen in deze serie laten we ook andere teams aan het woord over hun development stack en voorkeuren. Meer weten over de mogelijkheden van technieken uit dit artikel? Neem contact op met een expert van Enrise. We vertellen er graag meer over.

Meer Keukengeheimen lezen? Het tweede artikel is hier te lezen. Over razendsnel apps bouwen en publiceren met React Native & Expo