In dit artikel ga ik jullie weer een kijkje in de keuken van Systeembeheer geven. In een vorige artikel vertelde mijn collega Ewoud al over Open Source software, en daar is Antagonist een fanatiek gebruiker van. Software heeft echter liefde en aandacht nodig, en het gebeurt maar al te vaak dat, na het installeren er niet meer naar omgekeken wordt. Dit is één van de grootste oorzaken van vreemde bugs en ernstige security-problemen.
Maar het kan ook anders, want dat bewijzen we bij Antagonist! Zodoende neem ik je in dit artikel graag mee in het reilen en zeilen van software-updates binnen Antagonist. Hoe kiezen we onze software, minimaliseren we de kans op bugs en zorgen we dat altijd de laatste stabiele versies hebben draaien? Op deze vragen zul je hieronder een antwoord vinden.
Routines zijn belangrijk
Een aantal maanden geleden hebben we een tweewekelijkse routine ingevoerd voor het up-to-date houden van de software die wij draaien om je website te serveren. We hebben dit gedaan om de kwaliteit van onze dienstverlening naar een nog hoger niveau te tillen. Deze routine heeft de naam ‘update-donderdag’ gekregen en valt zoals de naam al aangeeft op een donderdag, in elke week met een oneven nummer. Omdat we als organisatie steeds verder groeien, ontstond langzaam de vraag naar standaardisatie van werkzaamheden. Update-donderdag is hier een mooi voorbeeld van. We hebben hier een aantal waardevolle doelen mee bereikt.
- Iedereen binnen ons bedrijf is op de hoogte welke updates (inclusief de specifieke versienummers) er gaan plaatsvinden.
- Er is een vast moment wanneer updates worden uitgerold. Er zijn geen verrassingen voor medewerkers.
- Doordat er een vast moment is, kunnen we problemen die, in het meest onfortuinlijke geval zouden ontstaan, snel in kaart brengen. Dit houdt tevens in dat problemen die buiten dit tijdsbestek ontstaan, waarschijnlijk niet gerelateerd zijn aan de updates.
- We kunnen er in onze (tweewekelijkse) urenplanning rekening mee houden. We weten uit ervaring hoeveel tijd het kost om ons platform te updaten. Dit maakt realistisch plannen een heel stuk gemakkelijker!
- We weten zeker dat we nooit meer dan twee weken achterlopen op de meest recente versie van software.
- Mochten we een belangrijke (bijvoorbeeld security-) update over het hoofd hebben gezien, dan wordt deze alsnog met de routine meegenomen. Het is dus een extra vangnet.
Hoe kiezen we onze software?
Voordat ik ga uitleggen hoe onze update-routine in z’n werk gaat, wil ik je eerst wat meer vertellen over hoe we bepalen welke versies van software we draaien.
Meestal heeft software verschillende branches, dit zijn variaties in software. Als voorbeeld neem ik phpMyAdmin. Deze software heeft vier branches met de versies: 4.0, 4.2, 4.3 en 4.4. Hoewel het logisch lijkt om de hoogste versie te kiezen, is dit in veel gevallen niet de beste keuze. Dit komt omdat software met nieuwe features bijna altijd gelijk staat aan meer bugs. Dit kan een bug zijn, waardoor een gebruikers-functie niet meer naar behoren werkt. Het kan ook een ernstige security-fout zijn.
Stabiel boven nieuw
Software heeft tijd nodig om ‘stabiel’ te worden. In het geval van phpMyAdmin kiezen we bewust voor branch 4.0. Aan deze branch worden geen nieuwe functies toegevoegd, maar er worden nog wel bug- en security-fixes voor gemaakt tot 1 januari 2017. Versie 4.0 van phpMyAdmin wordt ook wel een ‘Long-term Support release’ genoemd, afgekort LTS. Bij Antagonist houden we van LTS.
Naast dat we ons best doen om zo veel mogelijk LTS software te gebruiken, proberen we ook zoveel mogelijk ‘standaard’ software te gebruiken. Dit is de software die bij het besturingssysteem meegeleverd wordt. Dit garandeert betere compatibiliteit met andere software. Vaak is dit overigens ook LTS software. Stabiliteit is voor ons veel belangrijker dan de meest nieuwe features. Op een onbereikbare website heb je immers niets aan nieuwe features ;-).
Zelf verbeteringen doorvoeren
Het komt wel eens voor dat er in het standaard software package iets mist, dat wij of onze klanten wél nodig hebben. We ontkomen er dan niet aan om hier zelf een aanpassing in te maken. Met Open Source software is dit gelukkig geen probleem. In dat geval pakken we de standaard package, kleden we deze uit en herbouwen we het. Voor de kenners: ‘rebuilds’ van bestaande SRPM’s.
Het kwam vroeger wel eens voor dat we software op productie-servers vanaf de bron bouwden (compilen). Hier zijn we van afgestapt. Het is foutgevoelig, onderhoud kost veel tijd en er is niet de garantie dat de software op alle servers exact hetzelfde is. Dit levert onverwacht gedrag op, waardoor problemen moeilijk te analyseren zijn. Zelf alles compilen is leuk en fancy, maar het is eigenlijk altijd vragen om problemen. Zeker als je op onze schaalgrootte werkt.
Onze routine voor software-updates
Zoals ik eerder al vertelde, hebben we een tweewekelijkse update-routine voor alle niet-kritieke updates. Stap één is het maken van een inventarisatie van de beschikbare updates. Deze gaan we vervolgens testen op een aantal testsystemen. Deze systemen zijn hetzelfde ingericht als onze productie-servers, maar deze bevatten uiteraard geen data van onze klanten. Dit testen doen we erg grondig. Voor PHP vergelijken we bijvoorbeeld alle variabelen, headers en modules tegen hetgeen we verwachten. De wijzigingen die doorgevoerd moeten worden, laten we vervolgens kritische controleren door een andere collega.
De volgende stap is een bericht aan iedereen binnen ons bedrijf voor wie het relevant is. Hieronder vallen onder andere alle technische mensen en dus ook de Support-medewerkers. Op deze manier is iedereen op de hoogte van de wijzigingen die eraan gaan komen. Dit biedt gelijk voor iedereen de mogelijkheid om vragen te stellen en opmerkingen te geven.
Software-updates uitvoeren
Vervolgens voeren we de updates uit op een klein deel van onze productie-servers en laten dit een aantal dagen draaien. Onze supporters activeren hun extra ‘Support-zintuig’ om onverwachte problemen snel in kaart te brengen en te melden. Dit is wederom een extra vangnet, voor het geval er tijdens het testen van de updates toch iets over het hoofd is gezien. Je weet het immers nooit helemaal zeker. Als de updates een aantal dagen zonder problemen draaien, dan rollen we ze uit op de rest van het platform.
De laatste stap is het controleren van de updates. Dit gebeurt door een ander persoon dan degene die ze heeft doorgevoerd. Op deze manier minimaliseren we de kans dat er iets over het hoofd is gezien en dat alle servers de juiste versies draaien. Het mooiste is, dit gebeurt allemaal zonder downtime! Jij, als klant, hebt dus nergens last van, maar bent er wel zeker van dat je website op één van de beste servers draait.
Wat valt er buiten deze routine?
Niet alles kunnen we in deze tweewekelijkse routine uitvoeren. Een aantal updates vallen er daarom buiten. Dit zijn er niet veel en worden er steeds minder. Een voorbeeld van iets dat buiten de routine valt, is het onderhoud waarvoor een reboot nodig is. Hoewel we voor security-updates de Linux-kernel niet hoeven te rebooten, dankzij KernelCare, ontkomen we er niet aan om servers af en toe te herstarten. Als dit nodig is, dan maken we hiervoor een onderhoudsvenster (in dal-uren) en dat vermelden we op onze statuspagina.
Een ander voorbeeld zijn kritieke security-bugs. Zodra deze bij bekend zijn, voeren we direct een fix door, we wachten hiervoor niet op de volgende update-donderdag. Een paar voorbeelden van de afgelopen maanden, waarbij we direct actie ondernamen waren: Heartbleed, Poodle en GHOST.
Tot slot
Ik hoop dat ik je met dit artikel wat meer inzicht heb gegeven in de (open) keuken van systeembeheer. Zoals je ziet, ben je bij Antagonist verzekerd dat de server, waarop je website draait, altijd voorzien is van de meest recente en stabiele software. Voor ons heel normaal, maar helaas is het in veel gevallen niet vanzelfsprekend. Bij Antagonist zit je in ieder geval goed met je website, e-mail en andere data! Nieuwsgierig naar hoe wij webhosting opnieuw hebben vormgegeven?
P.S. Wil je op de hoogte blijven van alle artikelen, updates, tips en trucs die verschijnen op ons blog? Dat kan! Rechts bovenin via RSS, e-mail, het liken op Facebook, het +1’en op Google+ of het volgen op Twitter.