Internet.nl-testsuite nu als Docker-pakket beschikbaar
"Makkelijker testen leidt tot grotere adoptie moderne internetstandaarden"
"Makkelijker testen leidt tot grotere adoptie moderne internetstandaarden"
Afgelopen maand heeft Platform Internetstandaarden versie 1.8 van de Internet.nl-software gepubliceerd. Belangrijkste vernieuwing is dat de hele softwaresuite nu als Docker-pakket beschikbaar is. Daarmee zijn grootverbruikers van deze testportaal niet langer beperkt door de capaciteit van de Internet.nl-dienst of afhankelijk van een ingewikkelde en tijdrovende installatie. In plaats daarvan kunnen zij nu snel zelf hun eigen Docker-instantie opzetten. "Voor iemand die al bekend is met Docker is de installatie, de configuratie en het opstarten nu een half uurtje werk."
"We liepen tegen de grenzen aan van wat we in de huidige opzet aan sites, verbindingen en domeinen konden testen," vertelt Bart Knubben, die vanuit Forum Standaardisatie betrokken is bij Platform Internetstandaarden. "Dat geldt zowel voor onszelf als voor de tests die we voor anderen uitvoeren. Dit jaar komen we uit op meer dan een miljoen enkelvoudige tests via ons front-end (de webportaal). Daarnaast geautoriseerde gebruikers via de API en het dashboard meerdere namen in een keer testen. Dat zijn nog eens meer dan 5 miljoen tests per jaar."
"Omdat we niet onbeperkt kunnen opschalen, kwamen we met het idee om het hele pakket voor Internet.nl in een Docker-configuratie te stoppen, zodat anderen de software makkelijk zelf kunnen draaien."
"Een van de beperkingen van de Internet.nl-portaal is dat die maar vanaf één enkel punt kan testen," vult Marco Davids, Research Engineer bij SIDN Labs en betrokken bij de ontwikkeling van Internet.nl, aan. "Dat betekent dat alleen publiek toegankelijke domeinnamen op deze manier benaderd kunnen worden. Maar er zijn ook organisaties die de Internet.nl-suite op hun eigen locatie (on-premise) willen installeren, zodat ze ook hun interne systemen kunnen testen. Met het nieuwe Docker-pakket is dat nu veel makkelijker geworden."
Dit raakt aan een ander probleem van de oude Internet.nl-software: die was weliswaar al open-source maar bestaat uit zoveel componenten en afhankelijkheden, dat de installatie voor een externe gebruiker wel een week werk kon opleveren. Kijken we naar de individuele onderdelen van de softwaresuite, dan treffen we daar onder andere:
Redis: een NoSQL database
PostgreSQL: een klassieke relationele database
RabbitMQ: een message broker
Celery: software voor gedistribueerde taakrijen
Unbound: de DNS-resolver van NLnet Labs
Routinator: de RPKI-validator van NLnet Labs
Django: een web-framework voor Python
Grafana: een analytics/visualisatie-pakket
In de nieuwste versie van de Internet.nl software zijn al deze onderdelen en hun samenhangende configuraties samengebracht in een enkel, gestandaardiseerd Docker-pakket. "Voor iemand die al bekend is met Docker is de installatie, de configuratie en het opstarten nu een half uurtje werk," aldus Knubben.
"De software van Internet.nl is ook in in Denemarken [1], Brazilië en Australië gebruikt om nationale testportalen op te zetten. Juist omdat de configuratie zo veel werk vraagt, draaien deze sites nog steeds een oude versie, die bijvoorbeeld niet de RPKI-tests bevat [aan Internet.nl toegevoegd in augustus 2022]. Zij willen nu het Docker-pakket gaan gebruiken, waarmee ze zonder al te grote inspanningen weer helemaal up-to-date zijn. Hetzelfde geldt voor hosters die onze software gebruiken om hun complete domeinnamen-portfolio te testen. En natuurlijk voor onszelf: de Internet.nl portal draait nu al op dit nieuwe Docker-pakket."
Figuur 1: De nieuwe Docker-versie van Internet.nl is half november in productie gegaan.
Ook onder de hosters zijn er diverse die gelijk met het Docker-pakket aan de slag zijn gegaan. Zij testen bijvoorbeeld wekelijks hun hele portfolio, soms met wel honderdduizenden domeinnamen tegelijk. Dat kan vanwege de incentive-regeling die SIDN (en sommige andere registry’s) aan het gebruik van specifieke internetstandaarden heeft gekoppeld [1, 2], maar ook intern op de eigen domeinnamen (bijvoorbeeld ten behoeve van compliance), extern om de kwaliteit van een domeinnamen-portfolio te beoordelen voor een overname, of als een dienst voor klanten.
"Deze update was aanzienlijk meer werk dan eerst gedacht," vertelt Johan Bloemberg, als extern programmeur verantwoordelijk voor de Dockerisering van de software. "Zo liepen we gelijk tegen de grenzen van de IPv6-ondersteuning van Docker aan, wat betekende dat we de netwerken in eerste instantie met de hand moesten configureren. Gelukkig verbeterde dat gaandeweg het project: de support is nog steeds experimenteel, maar werkt op dit moment goed genoeg voor onze doeleinden."
"De ondersteuning van IPv6 in de interne Docker-netwerken werkt perfect. Dat betekent dat de nieuwe test-omgeving (die alleen de lokale netwerken gebruikt) probleemloos functioneert. Moeilijkheden traden vooral op bij de verbinding met de buitenwereld, onder andere op de Mac, waar gebruikgemaakt wordt van een Linux-virtualisatie (en dus een extra netwerkkoppeling). Nu de ondersteuning van de firewall en proxy's naar de buitenwereld is verbeterd, kun je vanuit de test-omgeving ook testen tegen echte sites. En heeft je hostsysteem geen native IPv6-connectivity, dan kun je daarvoor een tunnel gebruiken."
Tegelijkertijd met deze Dockerisering zijn ook allerlei andere zaken aangepakt:
de documentatie is sterk verbeterd
monitoring en metrics zijn toegevoegd
de onderliggende software-componenten zijn geactualiseerd
over het geheel zijn legio kleinere opschoningen en verbeteringen doorgevoerd
Al met al is tegelijk met de functionele uitbreidingen ook een flinke kwaliteitsslag gemaakt.
"Terwijl we hiermee bezig waren, liepen we tegen allerlei legacy aan," zegt Knubben. "Vandaar dat we hier meer tijd en geld in hebben moeten investeren dan we eerst dachten." Een van de zaken die bijvoorbeeld veel extra tijd hebben gekost, was de implementatie van een geautomatiseerde testomgeving. Daarmee kan de werking van de Internet.nl-software zelf nu wel veel beter gevalideerd (en gereproduceerd) worden."
De toevoeging van het monitoring-onderdeel blijkt ook nog een voordeel voor de ontwikkelaars van de Internet.nl-software zelf op te leveren. "We kampen al langer met een memory leak in de software," vertelt Bloemberg, "waardoor we het Internet.nl-systeem 2 keer per dag moeten herstarten. We hebben dat probleem nog niet opgelost, maar omdat alles nu in afzonderlijke containers draait, hebben we dat lek wel kunnen isoleren."
Figuur 2: In deze grafiek zie je onder meer het geheugengebruik van de nassl-worker (een Python-wrapper op OpenSSL). Zodra de geheugenlimiet van de container is bereikt, wordt deze herstart (vandaar de zaagtand).
Al met al noemt Knubben dit een geslaagde update. "We hebben hierop meer inspanningen moeten leveren dan voorzien, maar er staat nu weer een stevige basis. De broncode was al open-source, anders hadden we dit überhaupt niet kunnen doen. Nu is het hele pakket ook in een standaard formaat [OCI] beschikbaar."
"De ontwikkeling van deze versie hebben we ook helemaal open op GitHub uitgevoerd. Mensen konden zo meekijken met wat we aan het doen waren en input/feedback geven. Daarbij zaten ook gebruikers die in een vroeg stadium mee zijn gaan testen."
Nadeel van een Docker-pakket waar iedereen makkelijk zelf mee aan de slag kan, is dat de ontwikkelaars het zicht op zowel het gebruik als de uitkomsten een beetje kwijtraken. Internet.nl is van origine immers door het Platform Internetstandaarden bedacht als een tool om de adoptie van moderne internetstandaarden te stimuleren.
Er zijn open-sourceprojecten die daarom een telemetriefunctie hebben ingebouwd. "We hebben dat zelf nog niet echt overwogen," aldus Knubben. "Ook omdat we de privacy en de zelfbeschikking van gebruikers zeer belangrijk vinden. Dat laat onverlet dat het interessant kan zijn om inzicht in het hergebruik en de uitkomsten van de software te hebben. Hopelijk horen we daarover van onze hergebruikers. Zo hebben de Denen eerder de gebruikscijfers van hun op Internet.nl gebaseerde testportaal met ons gedeeld." De belangrijkste opbrengst is natuurlijk dat mensen meer zullen gaan testen nu de installatie van de Internet.nl-suite zo makkelijk is geworden. En dat komt de adoptie van de standaarden ten goede.
De ontwikkeling van deze versie van de Internet.nl-software is mede gesponsord door SIDN fonds. "We hebben een bijdrage uit het fonds gekregen en daarnaast zelf ook geïnvesteerd," vertelt Knubben. Het doel was om de gebruikslimieten op de API voor de batch jobs te verhogen. Deze limieten stonden op maximaal 5.000 domeinnamen, en dat maximaal 2 keer per week, maar dat was voor veel partijen lang niet genoeg. Zo ontstond het idee om de hele softwaresuite in Docker-vorm te gieten, zodat we op onze eigen systemen gecontroleerder kunnen opschalen en gebruikers er zelf op hun eigen systemen makkelijk mee aan de slag kunnen. Omdat deze updates aanzienlijk meer werk waren dan we tevoren hadden ingeschat, hebben we zelf wel flink meer uren hieraan besteed."
"Dit project valt bij ons in de categorie van de pioniersprojecten," aldus Elise van Schaik, projectcoördinator bij SIDN fonds. "In dit geval hebben wij een bijdrage van ruim 10 duizend euro geleverd. Dat is een typisch bedrag voor projecten in deze categorie, waarin een idee in een half tot een heel jaar tijd tot een eerste implementatie uitgewerkt wordt. Daarbij kijken we vooral naar de impact. Belangrijkste reden om dit specifieke project te sponsoren is dat het een grote bijdrage levert aan een toegankelijk, sterk en veilig internet."
Lees meer artikelen over projecten die bijdragen aan een sterker internet.