Over Libellen, korstmossen en configuratieproblemen
17 mei 2023
Twaalf keer per jaar brengt het Mendix-team een release uit. Wat gebeurt er eigenlijk op zo’n avond en wie zijn er allemaal bij betrokken? Als kersvers NHG medewerker werp ik een blik achter de schermen.
Het is maandagavond kwart over negen als ik mijn voordeur achter me dichttrek en na een korte wandeling door een koud, mistig Utrecht Lunetten bij ontwikkelaar Niek Schrier aankom. Hij doet open en fluistert of ik zachtjes wil doen. Ik zeg goedenavond tegen Nieks vrouw, die in een dekentje op de bank zit. Een blik in de huiskamer herinnert me aan mijn eigen tijd als vader van jonge kinderen. Verspreid speelgoed en een buggy gestald bij de open keuken. Op kousenvoeten sluipen we naar boven, want de kinderen van Niek zijn lichte slapers. Twee gigantische libellen in paarhouding staren me aan. Nieks hobby of beter gezegd passie is het fotograferen van zijn waarnemingen. Ik geniet van de kleurenpracht. Niek heeft zich inmiddels gespecialiseerd in parasieten en korstmossen. Kijk dus niet vreemd op als je hem op zijn knieën op straat aantreft met een camera in de hand. Maar hoe fascinerend ook, daarvoor ben ik niet gekomen.
Release in werking; Querijn neemt de lead
Bijna half tien. Over twee minuten gaat het feest beginnen. Niek bladert nog wat door zijn immense collectie fotobestanden en oogt zonder spanning. Intussen verschijnen steeds meer mensen op het scherm. Altijd weer leuk om te zien welke achtergronden mensen tevoorschijn toveren in teams. Developer Bram op het strand, developer Ahmad in een berglandschap. Scrummaster/tester Macheal, tester Jaap, releasemanager Arne, developer Inge hebben er minder werk van gemaakt.
En nu aan het werk. Developer Querijn is de man achter de knoppen en deelt op zijn scherm de releasestappen. Terwijl hij regelmatig een slok neemt van zijn koffie of nog een blokje hout op het haardvuur gooit, leest hij voor welke stap hij uitvoert. Bram heeft vanavond de taak om als developer mee te kijken en je ziet hem dan ook zich regelmatig naar het scherm buigen om erop toe te zien of Querijn het juiste doet. Inge en Ahmad zijn de twee paar extra ogen mocht het nodig zijn. Tester Jeroen heeft vandaag zijn papadag en is stand-by.
Het komt goed uit dat Niek een achtergrond als tester heeft, want halverwege de avond, stokt de dan toe geolied lopende machine. Waar vorige week nog alles foutloos verliep in de test- en acceptatieomgeving, verschijnt er nu een foutmelding in beeld. ‘De gebruikersnaam mag niet leeg zijn’. Iedereen is alert. Wat gebeurt hier en hoe lossen we dit op? Na een paar suggesties van de extra ogen wordt de melding binnen drie minuten opgelost. Waarschijnlijk had het te maken met ‘rommelgebruikers’; namen die ooit opgevoerd zijn als tester, maar niet goed meer werken. Tijd voor een opschoonactie morgen.
De 7 apps van Mendix
Tester Jaap en de testautomaat
Querijn pakt de draad weer op, en de weggezakte spanning laait weer op als tester Jaap halverwege is. Nadat hij de testautomaat heeft opgestart, die allerlei gebruikersvragen in hoog tempo afvuurt op de programma’s, verschijnen er opvallend veel rode balkjes in beeld terwijl er groene balkjes werden verwacht. Iedereen is weer bij de les; bij een rood balkje moet er dieper worden ingezoomd om te achterhalen wat er aan de hand is. Het blijkt te komen door een autorisatieconflict met een verkeerd wachtwoord. De test wordt herstart en ja hoor, groen in overvloed. Machael slaakt een hoorbare zucht van opluchting.
De synchronisatie loopt vast
Helemaal op het eind van de avond, het is nu rond kwart voor elf, toch nog een probleem. Een rood balkje dat niet verklaarbaar is. Inge en Niek kijken mee over de schouder van Jaap, en Nieks handen vliegen over de schermen. Hij checkt op meerdere plekken wat er aan de hand kan zijn en laat er een synchronisatie op los die twee keer vastloopt. De tabellen van de woonquotes worden niet goed ingelezen. Iedereen staat nu onder hoogspanning. Wat gebeurt hier? Waarom is dit niet in de test- en acceptatieomgeving naar boven gekomen? Er wordt gekeken wat de consequenties zijn is voor de gebruiker terwijl verklaringen heen en weer vliegen. Nu kan ik het als leek niet meer volgen. Rode en groene balkjes snap ik, maar constructienamen, struikelende programma’s, verkeerde configuraties duizelen mij. Breng ik opnieuw een bad vibe mee? (zie ook kader).
Nu wordt releasemanager Arne geraadpleegd; gaan we het nog aanpassen, of doen we dat in alle rust morgen op kantoor. Hij vraagt om een visuele inspectie. Volgens tester Jaap werken alle apps, is het teststuk goed afgerond, maar geeft de synchronisatie nog een foutmelding waardoor de beheertoets 2023 niet werkt. Waarschijnlijk moeten de woonquotetabellen opnieuw worden geconfigureerd. De foutmelding wordt nog verder afgepeld. Draait toets 2022 wel? Check, hij draait. De hick-up wordt niet zwaar genoeg ingeschat voor een roll back. Arne keurt de release goed. Morgen is er nog werk aan de winkel voor het Mendixteam.
Om twee voor elf pakt Arne de communicatie op en worden de al klaargezette mails de wereld ingestuurd. De release is nu officieel werkelijkheid en gecommuniceerd aan de ketenpartners en aan alle medewerkers. Tijd voor een borrel.
Wat gebeurt er eigenlijk bij een release van Mendix?
Twaalf keer per jaar brengt het Mendix-team van NHG een nieuwe release met grote en kleine veranderingen uit. Die veranderingen worden op verschillende manieren aangedragen. Een change kan voortkomen uit beheer van Mendix, bijv. een nieuwe versie van Mendix of een aangesloten programma zelf. Maar kan ook door een Waardestroomteam komen, die via de portfoliowall hun wensen hebben aangegeven. In deze release van november, de belangrijkste van het jaar, zit een verscherping van de erfpachtconstructie. En natuurlijk alle veranderingen die de nieuwe Voorwaarden en Normen met zich meebrengen.
Van Story via Sprint tot Resultaat
Het Mendixteam verwerkt de wensen samen met de business en de business analisten tot stories, die via sprints worden uitgewerkt. Het uiteindelijke resultaat zijn pakketjes (een verzameling van stories) die klaargezet worden voor de release. Elke set wijzigingen (een wijziging staat zelden op zichzelf), wordt eerst uitgedacht en ontwikkeld, waarna het uitgebreid wordt getest. Daarvoor is een testomgeving gebouwd die de werkelijkheid nabootst. Heeft het de gewenste werking, ziet het er goed uit, brengt het geen onverwachte gevolgen met zich mee (een regressie in ontwikkelaarstermen oftewel terugval in functionaliteit). Denk aan een scherm dat niet meer getoond wordt, een knop niet meer zichtbaar, een berekening die ‘omvalt’ en niet meer het gewenste resultaat oplevert.
Is de test geslaagd en brengt ook de regressietest geen onverwachte uitkomsten, dan worden de pakketjes getest op de acceptatieomgeving. Verschil met de testomgeving is dat de ketenpartners hiertoe toegang hebben. Zij testen dan of het ook allemaal werkt in hun omgeving. Omdat de release van november zo’n belangrijke is, is deze al op 1 november live gezet op de acceptatieomgeving. Ketenpartners hebben dus al een aantal weken kunnen testen of alles werkt.
Dat zo’n proces van bouwen en testen goed gemanaged moet worden staat buiten kijf. Ook de volgorde waarop de developers de release aanvliegen, vraagt om zorgvuldigheid omdat alle zeven apps die in een release worden meegenomen onderling ook afhankelijkheden vertonen. Een verkeerde volgorde van handelingen kan tot verstoringen leiden. Een week voor moment X vindt er nog een belangrijk afstemmingsmoment plaats: de releasemeeting, waarin alle te doorlopen stappen zorgvuldig worden besproken en ook duidelijk wordt wie welke rol op zich neemt. De persoon achter de knoppen op de releaseavond moet dezelfde zijn als degene die de dryrun heeft uitgevoerd op de test- en acceptatieomgeving.
De releasemeeting
In deze vergadering die ik ook als verslaggever bij mocht wonen, komt nog een belangrijk principe ter sprake. Nieuwe software kan nooit alleen getest zijn door de ontwikkelaar zelf. Daar moet een tester naar hebben gekeken voordat het in de procedure wordt opgenomen. Ook het vier-ogen-principe is belangrijk: elke handeling moet altijd gecheckt worden door een ander, daarom zijn er bij elke releaseavond twee developers en twee testers aanwezig. Wie dat op de avond zelf zijn, wordt in deze meeting bepaald. Ik zag nog iets opvallends, the wisdom of the crowd. Of het nu kwam of ik erbij was of puur toeval, er leek even ruis te zitten in de afspraken rond een release. Wie doet wat, waarom en volgens welke principes. Ik zag een leidinggevende die het geduld kon bewaren en kon toezien hoe het team er zelf uitkwam. En dat gebeurde ook.
Op de avond van de release zelf wordt er altijd een back-up gedraaid. Dat is de eerste handeling om half tien, zodat er altijd een mogelijkheid tot ‘roll-back’ is, je kunt altijd terug naar de situatie zoals die was. In de vier jaar dat releasemanager Arne bij NHG werkt, is dat één keer nodig geweest. De spanning van de avond zit in het feit dat het in de productieomgeving gebeurt, en dat het goed moet gaan. Maar daarvoor zijn alle testen gedaan, is er gezorgd voor voldoende back-up, wordt er op verschillende plaatsen gewerkt (want er kan zomaar ergens de stroom uitvallen). En ook de communicatie naar de ketenparters is in gereedheid gebracht door Arne. Het Mendix team als een high perfomance team, goed op elkaar ingespeeld en precies wetend wat er van elkaar wordt verwacht. Waarin de ervaren mensen het voortouw nemen en nieuwkomers de kans krijgen om mee te kijken voordat ze in het diepe worden gegooid bij een release.
Tot slot nog een gekoesterde wens van Arne: “We snappen dat er steeds nieuwe wensen komen. Heel begrijpelijk: we willen beter, we willen meer en ook de wereld om ons heen staat niet stil. Tegelijkertijd kan een bepaalde verandering veel grotere gevolgen hebben dan een WST in eerste instantie ziet. Het zou fijn zijn als de business zelf deze onderlinge afhankelijkheden doorziet en in ogenschouw kan nemen. Ook het Mendix team in een zo vroeg mogelijk stadium erbij betrekken kan voorkomen dat we bij de implementatie pas erachter komen dat de verandering op meer plekken impact heeft.”