Als developer krijg ik bij Netvlies volop de ruimte om aan uitdagende en complexe projecten te werken. Potentiële collega’s en developers bij andere organisaties vragen me dan ook regelmatig wat dit voor projecten zijn en hoe we deze technisch aanpakken. In dit blog leg ik je dat aan de hand van een project voor advocatenkantoor NautaDutilh graag uit.
Over NautaDutilh
Met ruim 400 advocaten, notarissen en belastingadviseurs is NautaDutilh een van de grootste internationale advocatenkantoren in de Benelux. Bij Netvlies – sinds 2015 online business partner van NautaDutilh – ontwikkelen we onder andere webapplicaties die NautaDutilh in staat stellen om relevante data te gebruiken om cliënten te adviseren.
Market Practice Tracker
Een goed voorbeeld van een (complexe) webapplicatie is de Market Practice Tracker, die NautaDutilh bij onderhandelingen gebruikt. Stelt de wederpartij bijvoorbeeld dat keuze B – en niet keuze A – de ‘market practice’ is, dan is het voor NautaDutilh van belang om op een betrouwbare manier te kunnen vaststellen of keuze B inderdaad het meest voorkomt. We hebben daarom een webapplicatie gebouwd waarin advocaten en cliënten, achter een login, de vragen uit de uitonderhandelde overeenkomst kunnen invullen: de Market Practice Tracker. Doordat deze webapplicatie conditionele logica bevat, worden latere vragen en antwoorden automatisch aangepast en gefilterd op basis van het antwoord op een eerder gestelde vraag, zoals: “Betreft het Nederlands recht of Engels recht?” Gebruikers krijgen hierdoor alleen relevante vervolgvragen en kunnen bovendien de niet relevante vragen overslaan. Zo vereenvoudigt de applicatie dus niet alleen het invullen van de vragen, maar bespaart hij ook nog eens enorm veel tijd. En belangrijker nog: op basis van objectieve data uit de Market Practice Tracker kan de ‘market practice’ beter dan ooit worden vastgesteld. Zo helpt de webapplicatie NautaDutilh dus om in juridische trajecten op basis van data kwalitatief onderbouwde keuzes te maken en haar cliënten te adviseren. Om daadwerkelijk een ‘market practice’ te kunnen achterhalen, hebben we door middel van een datamigratie bestaande data in de applicatie opgenomen. Om de data verder uit te breiden, wordt bovendien elke beantwoorde vraag in de applicatie opgenomen.
Eenvoudig in gebruik, maar technisch complex
Wat je als gebruiker met de webapplicatie kunt doen, is misschien nog niet eens zo heel complex. De conditionele logica en de gebruikte technieken die erachter zitten zijn dat zeker wél. Om te beginnen is de Market Practice Tracker een SPA (Single Page Application), waarbij de pagina één keer op ‘traditionele wijze’ wordt ingeladen. Als je nieuwe data opgevraagd, wordt alleen deze data (opnieuw) ingeladen in de frontend. De overige (vooral statische) content - zoals het menu en de footer - heb je de eerste keer al ingeladen. Het voordeel hiervan is dat de pagina supersnel laad. De communicatie vindt plaats via een JSON API, waarbij de backend volgens de standaarden met de frontend communiceert. De JSON API kun je voor meerdere platformen gebruiken, bijvoorbeeld om een mobiele app van de Market Practice Tracker te maken. Het is niet specifiek voor één frontend gebouwd. Daarnaast kunnen frontend en backend door de JSON API afzonderlijk van elkaar werken. Zo lang de frontender maar weet welke data wordt meegestuurd. De applicatie wordt beheerd met Sonata Admin, een open source project gebouwd op het Symfony framework. Met Sonata Admin kan NautaDutilh - op basis van de rechten van een specifieke gebruiker - meerdere applicaties op één plek beheren. Zo kan een gebruiker bijvoorbeeld wel de content van de Market Practice Tracker beheren, maar niet die van een andere applicatie van NautaDutilh. Deze wordt na het inloggen ook niet zichtbaar. Een ander voordeel is dat een gebruiker maar één keer iets hoeft te maken of aan te passen en het vervolgens direct kan delen met alle aangesloten applicaties.
Efficiënt werken met de Scrum projectmethodiek
Zoals je misschien wel weet, scrummen we bij Netvlies al onze projecten. Dit betekent dat we na elke sprint – een ontwikkelperiode van 2 tot 3 weken – een werkend deelproduct opleveren. Voor de Market Practice Tracker hebben we een hele sprint besteed aan het bouwen van de conditionele logica. Hierbij hebben we de applicatie gebouwd vanuit een ‘API first’ benadering. Dat heeft onder meer als voordeel dat de opzet makkelijk kan worden hergebruikt voor andere applicaties van de klant. Bovendien kunnen backend en frontend op deze manier los van elkaar en elk in hun eigen tempo bouwen zonder op elkaar te hoeven wachten.
Veel aandacht voor beveiliging
Alles wat binnen NautaDutilh gebeurt, moet aan de hoogste security-eisen voldoen. Die eisen zijn strenger en uitgebreider dan bij de meeste organisaties. Netvlies is daarom niet alleen business partner van NautaDutilh voor realisatie, maar onder andere ook voor hosting, monitoring en security audits. Dit betekent dat we voor alle webapplicaties die we voor NautaDutilh ontwikkelen – naast de ‘standaard’ beveiligingsmaatregelen tijdens realisatie en onderhoud – vanuit de klant én vanuit Netvlies regelmatig pentests en scans op de systemen uitvoeren. Ook schakelen we continu met de security-afdeling van NautaDutilh over security patching en optimalisering. Daarnaast hebben we een volledig dedicated hosting landschap ontwikkeld: afgeschermd waar mogelijk en opengesteld waar nodig. Vanwege deze hoge security-eisen hebben we – en dat is vrij uitzonderlijk – tijdens de realisatie van de Market Practice Tracker een hele sprint aan de veiligheid van de applicatie besteed. Zo hebben we tijdens deze sprint onder meer de volgende security features opgepakt:
- tweestapsverificatie;
- formuleren van wachtwoordeisen;
- protocol voor het verlopen van wachtwoorden;
- en verificatie of een eindgebruiker nog in dienst is van de werkgever die het account heeft verstrekt d.m.v. automatische e-mailverzending naar de eindgebruiker.
De security basis die tijdens deze sprint is weggezet, wordt ook in nieuwe applicatie voor NautaDutilh toegepast. Daarnaast hebben we op serverniveau JSON web tokens geïmplementeerd die ervoor zorgen dat een gebruiker na 30 minuten automatisch wordt uitgelogd als hij of zij niet actief is. Bovendien hebben we een aantal systeem zaken opgepakt die we altijd standaard doorvoeren, zoals het instellen van CSP headers (voor zover mogelijk in de applicatie), secure cookies, OWASP hardening en Nginx/PHP-FPM.
Automatisch testen
Het laatste belangrijk onderdeel binnen dit project dat ik met je wil delen is automatisch testen. In dit geval hebben we ervoor gekozen om de front-end van de Market Practice Tracker automatisch te testen. Als er nieuwe code is geschreven, worden kritische onderdelen getest, omdat het voor NautaDutilh heel belangrijk is dat de applicatie goed werkt voor haar cliënten, de eindgebruikers. Daarnaast runnen we vóór elke software-implementatie een test die moet slagen voordat mag worden gedeployed en werken we met Gitflow om te voorkomen dat eerder opgeloste problemen worden overschreven.
Heb jij het in je?
Zo zie je: complexe projecten zoals dit dagen je als developer behoorlijk uit en vragen heel wat skills en technische kennis van je. Schrikt dat je niet af en zie je een dergelijke uitdaging wel zitten? Kijk dan eens bij onze actuele vacatures.