Advertorial

Door Tweakers Partners

Hoe Hostnet op grote schaal wijzigingen aan de infrastructuur uitrolt

30-09-2020 • 08:00

12

Hoe zorgt een hostingpartij dat klanten van de nieuwste features gebruik kunnen maken, zonder dat updates leiden tot onverwachte downtime? Bij Hostnet, een van de grootste hostingproviders van Nederland, vinden wijzigingen aan de infrastructuur plaats volgens vaste regels: op schaal, in principe automatisch, en alles wordt uitvoerig getest.

Met meer dan 280.000 klanten is Hostnet een van de grootste hostingproviders van Nederland. Het bedrijf biedt diensten aan uiteenlopende doelgroepen: van de kleine ondernemer en small/home-officegebruik tot developers en digitale dienstverleners. Daarvoor biedt het onder meer domeinregistratie, webhosting, online werken, Managed Services en Virtual Private Servers (vps’en).

In het team dat bij Hostnet verantwoordelijk is voor Managed Services zijn drie dev/ops-engineers actief die zich richten op het testen en uitrollen van updates en features op schaal. Zij zijn verantwoordelijk voor de managed en vps-infrastructuur en worden ondersteund door nog eens twee software-developers. Een uitdaging bij het uitrollen van veranderingen op grote schaal, binnen een uitgebreid portfolio aan producten en een complexe infrastructuur, is dat wijzigingen die je op de ene plek doorvoert, op een andere plek onbedoelde (en potentieel nadelige) gevolgen kunnen hebben. “Dat is de essentie van change management”, zegt Jerry Wiersma, dev/ops-engineer bij Hostnet. “Het gaat om de vraag hoe je op een redelijk snelle manier updates en features uitrolt en bijblijft bij de markt, en tegelijkertijd een bepaalde mate van zekerheid hebt dat alles blijft werken zoals het zou moeten.”

Generiek en uitvoerig getest

Om de kans op fouten zoveel mogelijk te beperken, gelden binnen Hostnet bepaalde regels. “We werken in principe niet handmatig, maar geautomatiseerd, en alles gaat op schaal”, zegt Jeroen de Boer, ook dev/ops-engineer bij Hostnet. “Alles dat we maken is generiek, elke klant heeft er profijt van. We voeren dus geen maatwerk uit voor een enkele klant. En wat we maken, testen we uitvoerig. Zelfs als we superzeker zijn van onze zaak, herinneren we ons eraan dat ieder mens fouten kan maken en dat we voorzichtig moeten uitrollen.” Een voorbeeld is het beschikbaar maken van een nieuwe technology stack, namelijk Node.js-hosting. “Omdat we dat graag willen aanbieden, zijn we gaan onderzoeken of de feature een impact heeft op de traditionele tech stack - PHP-hosting - en hoeveel resources hij gebruikt.”

Calamiteiten en r&d uitgezonderd voert men bij Hostnet per regel geen handmatige acties uit bij het doorvoeren van wijzigingen. De volledige configuratie en staat van elk systeem wordt beheerd in code, middels Puppet. Deze software op basis van Ruby kan op een groot aantal uiteenlopende systemen (van Linux tot Windows en Solaris) wijzigingen doorvoeren. Jeroen: “Het geeft ons de zekerheid dat elk systeem de juiste configuratie heeft en biedt de mogelijkheid om gemakkelijk soortgelijke systemen op te leveren.” Met een groot aantal vps’en is dit geen overbodige luxe. “Dat zijn allemaal individuele systemen van klanten waar Plesk op draait en waar meestal weer meerdere domeinen op draaien. Wij gaan niet op al die systemen afzonderlijk wijzigingen doorvoeren. We gebruiken daar een stukje automatisering voor dat voor elke vps elk half uur checked op veranderende code en deze zelf doorvoert.”

Hostnet

Testen kan handmatig

Het team van Jerry en Jeroen werkt in sprints van telkens twee weken, waarin doorgaans meerdere features tegelijk worden opgepakt. Wijzigingen worden in die periode in eerste instantie op een ontwikkelomgeving getest, om te kijken of de beoogde implementatie het gewenste effect heeft. “Dit kan handmatig op een test-vm, bijvoorbeeld in Vagrant”, zegt Jerry. “Ook de implementatie in de Puppet-code testen we op acceptatiesystemen, voordat we een merge request indienen.” Wijzigingen aan software en configuratie worden bij Hostnet doorgevoerd middels merge requests in GitLab. “Deze moeten relateren aan openstaande verzoeken, projecten of verbeteringen. Dit doen wij, omdat dit zorgt voor traceability en auditability van elke wijziging.”

Elke merge request maakt automatisch een ci/cd-pipeline waarin verschillende Docker-containers de kwaliteit en functionaliteit van de code testen op basis van code linters en unit tests. Daarnaast is het zo dat het projectteam de codewijzigingen nakijkt. Zodra alle automatische tests slagen, de code voldoet aan de door Hostnet gestelde standaarden en de maintainers het groene licht hebben gegeven, is het tijd om de code te mergen. “En zo niet, dan krijgt de developer feedback”, zegt Jeroen. “Wanneer de code eenmaal gemerged is, komen er opnieuw ci/cd-pipelines om het merge-result nogmaals te testen alvorens automatisch de laatste versie van de code naar acceptatie te deployen, en later naar productie.”

Node.js zonder regressie in PHP

Een voorbeeld van een recente wijziging op deze manier is het doorvoeren van Node.js-hosting. Jeroen: “Ons platform bood nog geen ondersteuning voor het server-side gebruikmaken van JavaScript. Onze klanten konden alleen nog maar met PHP backend-applicaties maken. Omdat er veel interesse was in Node.js, hebben wij onderzocht of en hoe we dit konden aanbieden. Moesten wij bijvoorbeeld configuratiewijzigingen doorvoeren, was er een negatief effect op de door de klant gebruikte resources en was er geen sprake van regressie in de bestaande stack die met PHP werkte?” Na het testen werd onder meer duidelijk dat er sprake was van positieve impact voor concurrency bij Node.js-applicaties en dat bestaande PHP-applicaties hier geen last van zouden hebben. “De conclusie was dat we dit veilig voor onze klanten konden aanbieden. Op dat punt ben je dan klaar met het testen en start het opbouwen van de automatisering, om de feature daarna automatisch uit te rollen, te zorgen dat hij bij iedereen terechtkomt en stabiel blijft.”

Het meten van de impact van codewijzigingen op customer workloads gebeurt via canary deployments. Met een rundeck job zorgt Hostnet ervoor dat alle systemen tijdelijk stoppen met automatische Puppet-runs, zodat de wijziging niet direct op alle systemen wordt doorgevoerd. Na de rundeck-job schakelt Puppet gefaseerd weer in. Eerst op vijftig systemen, dan op honderd, enzovoort.” Het inbouwen van extra zekerheden is altijd nodig, vindt Jeroen. “Zodra alle tests slagen en iedereen denkt ‘Dit gaat goed komen’, gaat de code naar de productiestraat. En dat is toch het eerste moment dat er daadwerkelijk iets met nieuwe code op klantsystemen gebeurt. Dat blijft een spannend moment. Je kunt nog zoveel zekerheden inbouwen, we maken helaas allemaal weleens een fout. Daar moet je altijd rekening mee houden.”

Wat als er dan toch problemen ontstaan?

Jerry: “Mochten er ondanks alle automatische tests en peer reviews toch nog problemen ontstaan, dan komen we hier altijd vroeg achter, voordat het een impact heeft op alle workloads van onze klanten. In dit geval stoppen we de canary deployments, en afhankelijk van de impact lossen we het op met een roll-forward. Dat wil zeggen dat we het probleem direct oplossen door ervoor te zorgen dat het werkt zoals we het voor ogen hebben. Pas als dit niet mogelijk is, bijvoorbeeld omdat het te complex is of te veel impact heeft, voeren we alsnog een rollback uit.” Een voorbeeld van zo’n scenario was een update in PHP, enige tijd geleden. Jeroen: “Al onze tests wezen uit dat onze update een performanceverbetering zou betekenen, maar al snel na de rollout begonnen bij onze servicedesk meldingen van incidenten bij klanten binnen te komen. We onderzochten deze meldingen, achterhaalden de oorzaak en hebben de update direct uit productie gehaald. Vervolgens hebben we met Puppet overal de oude configuratie teruggezet, allemaal in een tijdsbestek van ongeveer drie kwartier, inclusief het onderzoek. Zo’n gebeurtenis laat wel zien dat je nooit zeker kunt weten wat het effect is van een update. Maar ook dat onze procedure hier prima werkte en onze klanten zo min mogelijk last hebben gehad van downtime.”

Dit artikel is geen redactioneel artikel, maar een advertorial en tot stand gekomen dankzij Hostnet en Tweakers Partners. Dit is de afdeling binnen Tweakers die verantwoordelijk is voor commerciële samenwerkingen, winacties en Tweakers-events zoals Meet-ups, Developers Summit, Testfest en meer. Kijk hier voor een overzicht van alle acties en events. Mocht je ideeën met ons willen delen over deze vorm van adverteren, dan horen wij dat graag. Hierover kun je met ons in gesprek via [Discussie] Reclame algemeen].

Reacties (12)

12
11
4
1
1
5
Wijzig sortering
Dank voor het kijkje onder de motorkap. Fascinerend om te zien dat er bij Hostnet daadwerkelijk een gedachte achter zit en er toch systematisch wordt geprobeerd om de serverstack te beheren en te deployen.
Ook al is dit een advertorial, een dergelijke vorm van transparantie vind ik erg fijn. Net zoals Cloudflare bijvoorbeeld doet op hun blogs.

Een van de redenen waarom ik dit juist bij Hostnet zo fascinerend vind om te lezen, is vanwege het feit dat ik geschrokken ben van de problematiek bij Hostnet op het gebied van standaardisering en beveiligingsopties: problematiek waar ik zelf ook veelvuldig tegenaan ben gelopen.

Het gebrek aan IPv6 bij Hostnet zorgt ervoor dat mensen die klant zijn bij hen, niet bij Hostnet kunnen komen vanuit het buitenland: in Azië bijvoorbeeld worden veel nieuwe internetverbindingen opgeleverd met alleen IPv6-ondersteuning, en niet meer het oudere IPv4. Even snel inloggen bij Hostnet voor beheer? No way. Gaat alleen via een IPv4 proxy met alle nadelen van dien.
DNSSEC-ondersteuning, zoals verlangd door het NCSC/overheid? Nope, niet bij Hostnet.
Veilige TLS/SSL? No way. TLS 1.0 en 1.1 staan nog aan, wat ik op zich nog wel begrijp voor gebruikers met antieke systemen die al lang niet meer zijn bijgewerkt, maar de door hen ondersteunde ciphers zouden al lang uitgefaseerd moeten zijn en in een correcte volgorde moeten staan voorzien van de juiste veilige DHparams.
Er zijn daar nog veel meer onvolkomenheden waar ik tegenaan ben gelopen, die eigenlijk gewoon in strijd zijn met NCSC/overheid, Pas Toe Of Leg Uit en de algemene standaardisering.

Ik vind dat jammer. Ik begrijp dat dit extra tijd en energie vergt en dat ik vanaf de zijlijn relatief makkelijk praten heb, maar klanten moeten er m.i. toch vanuit kunnen gaan dat een provider proactief zorgt voor een continu correcte en up-to-date implementatie van de serverstack, zonder zelf te hoeven testen op bijvoorbeeld internet.nl? En helemaal als Nederlands bedrijf zijnde: Nederland staat/stond altijd hoog in de lijsten als het gaat om internet, connectivity en development. Hoe geweldig is het om dat in ere te houden?

Het artikel schrijft over wijzigingen op grote schaal aanbrengen. Ik hoop dat het voldoen aan de technologische verwachtingen en NCSC/overheidswensen ook onderdeel is en zal zijn van die infrastructurele wijzigingen. De tijd zal het leren.. ;)
Of maak een optie in Plesk waarbij je oude standaarden nog ondersteund die je standaard uitzet. Of indien je dat als bedrijf "gevaarlijk voor de continuiteit" vind standaard aanzet.

[Reactie gewijzigd door D11 op 25 juli 2024 13:07]

Als zij geen TLS 1.2/1.3 ondersteunen, dan kunnen zij niet met mijn hosting omgeving communiceren.
Tot nu toe zie ik hostnet niet in mijn error logs (mijndomein dan weer wel, maar die doen niet zelf mail beheren, dat doen wat rare duitsers).

DNSSEC, Argon2, TLS 1.3, IPv6, etc zijn hier standaard en het was 2 weken werk om overal te implementeren.
Weet je zeker dat hostnet dat nog niet kan?
Hostnet ondersteunt wel TLS 1.2 en soms ook TLS 1.3, maar TLS 1.0 en TLS 1.1 staan ook nog aan.
Ik besloot zojuist eens de proef op de som te nemen en te kijken wat internet.nl voor uitslag geeft bij een aantal van de sites daar.
En zelfs hun hoofdsite (plus klantenlogin): https://internet.nl/site/www.hostnet.nl/988506/
Laten we hopen dat in ieder geval de klantenlogin snel op 100% score zal komen te staan. :)
Fijn om te horen dat je het artikel waardeert! In mijn optiek is dergelijke transparantie en inzicht noodzakelijk om met (potentiële) klanten in gesprek te kunnen gaan over de technische invulling van hun oplossing. Wij maken op dit moment niet op structurele basis zulke blogs, maar het voeren van technisch consults is de basis van onze managed-diensten. Zowel met bestaande als nieuwe klanten wisselen we graag informatie uit, om zeker te zijn dat de oplossing die we bieden is wat de klant nodig heeft.

Het klopt dat onze diensten nog niet beschikbaar zijn over IPv6. Wel is onze infrastructuur IPv6-ready en zijn bijvoorbeeld onze nameservers al beschikbaar over IPv6. Het uitrollen van IPv6 over al onze diensten vergt helaas wat meer tijd. In Europa zien we dat klanten met een IPv6-only-verbinding via CGNAT alsnog gebruik kunnen maken van het IPv4-internet.

Wij bieden voor .nl domeinen reeds ondersteuning voor DNSSEC. Zo is dit standaard actief voor elke nieuw bestelde .nl domeinnaam. Bovendien zijn we met andere registries in gesprek om dit voor meerdere TLDs te kunnen ondersteunen.

Nieuw opgeleverde diensten bieden standaard enkel ondersteuning voor TLSv1.2 en hoger. Echter hebben we er bewust voor gekozen om dit bij bestaande systemen niet zonder overleg door te voeren, omdat een deel van onze klanten nog gebruikmaakt van oudere software die hier niet mee overweg kan. Wij moeten hierin uiteraard een middenweg vinden tussen het ondersteunen van (verouderde) software die onze klanten gebruiken, en het bieden van een veilig platform.

Binnen Hostnet hebben wij een securityteam dat zich bezighoudt met vulnerability-scans en het doorvoeren van daaraan gerelateerde wijzigingen. Zo zorgen zij ervoor dat we niet alleen de nieuwste protocollen, maar ook oudere protocollen op een veilige manier kunnen ondersteunen. Als blijkt dat het niet verantwoord is om dergelijke protocollen/cipher suites te gebruiken, dan kiezen we natuurlijk voor veiligheid boven compatibiliteit.

Kortom: DNSSEC en TLSv1.2 worden zeker door ons ondersteund, en we zijn hard aan het werk om ook IPv6 te ondersteunen.

Als je je ergens zorgen over maakt, wil ik je vragen contact met ons op te nemen. Er zijn, vooral in het managed-segment, heel veel mogelijkheden om de configuratie op de specifieke situatie van onze klanten af te stemmen. We denken graag met je mee en ontvangen ook graag feedback over mogelijke verbeterpunten.

@Jeroen de Boer, Dev/Ops Engineer
Interessant om te lezen hoe van test naar productie word gewerkt.
Had stiekem gehoopt, dat ze dieper op het beheer van een grote infrastructuur zouden in gaan.
Zoals wat voor storage ze gebruiken, welke virtualisatie technieken.

Verder natuurlijk leuk dat ze nu ook NodeJS ondersteunen.
Hostnet was mijn beste solicitatie ooit. Stond binnen 20 minuten weer buiten toen ze vroegen na een salaris indicatie. Ik had het gevoel dat ze grap maakte.
Redelijk offtopic, maar het vragen naar een salarisindicatie is helemaal niet ongebruikelijk voor, tijdens of na een sollicitatie. Sterker nog, je kan in sommige gevallen op voorhand al bepspreken of solliciteren uberhaubt zin heeft als beide partijen de salarisindicatie-kaarten op tafel leggen. Liggen die indicaties te ver uit elkaar dan weet je voldoende. Daarbij moet gezegd worden dat salaris je levensgeluk niet gaat bepalen, maar het leuke werk wat je gaat doen wel.
Onderbetaald bedoel je? Geef eens wat meer details 🙃
Daar staan ze inderdaad bekend om.

Op dit item kan niet meer gereageerd worden.