De instellingen
Applicatiebeheer — deel 17
Donderdag, week vijf. Een knopje dat anders moet staan voor de test dan voor het echt, en Joost staat op het punt de foto opnieuw te gaan bakken. Tot Yara hem tegenhoudt.
Concepts
Donderdagmiddag liep Joost vast op iets kleins, en juist de kleine dingen brachten de oude paniek nog het snelst terug.
Hij was bezig het spelplatform in de testkamer net iets anders te laten draaien dan in het echt. Niets ingewikkelds. Eén instelling moest anders staan. In de testkamer mocht het platform veel praten, alles opschrijven wat het deed, zodat je kon zien wat er gebeurde. In het echt moest het juist stil zijn, alleen de belangrijke dingen melden, anders liep je verzuipen in geklets. Eén knopje. Spraakzaam in test, stil in het echt.
En hij zat ernaar te kijken en dacht: dan moet ik dus twee foto's maken. Een foto van het platform met het knopje op spraakzaam, en een foto met het knopje op stil.
Hij voelde de moeheid komen voordat hij goed begreep waarom. Twee foto's. En straks een derde instelling die ergens anders moest staan, en dan zat hij weer met vier foto's, en bij elke kleine verandering moest hij ze allemaal opnieuw bakken. Hij kende dat gevoel. Dat was precies het soort sluipend werk waar zijn oude leven vol mee zat.
"Je trekt een vies gezicht," zei Yara, die langsliep met een stapel papier onder haar arm.
"Ik moet twee foto's maken van hetzelfde platform," zei Joost. "Eentje die veel praat voor de test, eentje die stil is voor het echt. Eén knopje verschil. En dat zit ingebakken in de foto, dus voor één knopje moet ik twee keer bakken."
Yara bleef staan. Ze legde de stapel papier op zijn bureau. "Nee," zei ze. "Dat doe je niet. Dat knopje hoort niet in de foto."
"Het zit erin."
"Nu wel. Maar dat is precies het probleem dat je voelt." Ze ging op de rand van zijn bureau zitten. "Vertel me eens. In je oude wereld. Stond een programma alles ook ingebakken, of stond de instelling ergens los?"
Joost dacht erover na, en het antwoord kwam vanzelf, want het was zijn hele leven geweest. "Los. Het programma was het programma. En de instellingen stonden in een apart bestandje. Een configbestand. Dat lag in een vaste hoek van de schijf, en daar paste ik het aan. Of het programma veel moest praten of weinig, naar welke database het moest, op welke poort het luisterde. Dat zat niet in het programma zelf. Dat zat in dat bestandje ernaast."
"En als je dat knopje wilde omzetten?"
"Dan opende ik het bestandje, ik zette het om, ik startte het programma opnieuw. Klaar. Ik hoefde het programma niet te herinstalleren. Ik hoefde niks opnieuw te bouwen. Het programma bleef precies hetzelfde. Alleen het bestandje ernaast veranderde."
Yara wees naar hem alsof hij een prijs had gewonnen. "Dat. Precies dat. Dat had je hier ook moeten doen, en in plaats daarvan heb je het knopje in de foto gestopt. Dat is alsof je in je oude wereld de instellingen in het programma had ingemetseld in plaats van in dat losse bestandje. Dan had je voor elk knopje ook het hele programma opnieuw moeten bouwen."
Joost zat stil. Hij voelde het wegzakken, de moeheid, en er kwam iets helderders voor in de plaats. Hij had het andersom gedaan dan hij het zijn hele leven had gedaan. Hij had de gewoonte van twintig jaar overboord gegooid zonder het te merken, omdat de nieuwe wereld hem onzeker maakte en hij maar deed wat voor de hand lag.
"Dus ik trek dat knopje uit de foto," zei hij langzaam. "En ik zet het ergens los. Net als mijn configbestand vroeger."
"Ja. Je maakt de foto één keer, neutraal, zonder dat knopje erin. En het knopje, de instelling, die leg je apart neer. Een setje instellingen dat naast de foto leeft. In de testkamer hang je er het setje aan dat zegt: praat veel. In het echt hang je er het setje aan dat zegt: wees stil. Zelfde foto. Twee setjes instellingen. Je bakt nooit meer twee keer."
"En dat losse setje," vroeg Joost, "hoe heet dat hier?"
"Dat is een ConfigMap," zei Yara. "Letterlijk een kaart met instellingen. Het is je oude configbestand, uit het programma getrokken en in het cluster gelegd, waar de foto het kan oppakken. Dezelfde gedachte die jij al twintig jaar volgt. Wij hebben er alleen een plek voor in het systeem, zodat het setje niet op één machine in een hoekje ligt maar netjes bij de rest."
Joost proefde het woord. Een ConfigMap. Een kaart met instellingen. Het beviel hem, want het was niet nieuw. Het was zijn `/etc`, de hoek van de schijf waar al zijn configbestandjes hadden gewoond, nu met een ander jasje aan.
"Het is als de receptenkaart bij een gerecht," zei hij. "De keuken is de keuken. De kok is de kok. Die veranderen niet. Maar op de kaart staat: vandaag pittig, of vandaag mild. Dezelfde keuken, dezelfde kok, en je verandert alleen de kaart. Je verbouwt de keuken niet omdat iemand het minder pittig wil."
Yara knikte traag. "Je hebt een gave om dingen om te draaien zodat ze ineens simpel klinken. Ja. Dat is het. De foto is de keuken. De ConfigMap is de kaart. Je past de kaart aan, niet de keuken."
Dus dat deden ze. Joost trok het knopje uit de foto. Hij maakte de foto opnieuw, neutraal, zonder mening over praten of stil zijn. En hij legde twee setjes instellingen klaar, los van de foto. Eentje voor de testkamer, spraakzaam. Eentje voor het echt, stil. En hij hing in de testkamer het spraakzame setje aan de foto, en het platform begon te kletsen, alles op te schrijven, precies zoals hij wilde voor het testen.
"En in het echt," zei hij, en hij hing daar het stille setje aan, en het platform werd stil, alleen het belangrijke nog.
"Zelfde foto," zei Yara. "Twee gedragingen. En als je morgen weer iets aan een knopje wilt veranderen, dan pas je het setje aan. De foto blijft staan. Geen nieuwe bak."
Er bleef één ding aan Joost knagen, en hij was te lang systeembeheerder om het niet te vragen. "En als ik zo'n setje aanpas terwijl het platform al draait. Merkt het dat dan vanzelf, of moet ik het platform opnieuw opstarten?"
Yara glimlachte, en het was de glimlach van iemand die de goede vraag hoort. "Dat hangt ervan af hoe de foto het setje oppakt, en dat is iets voor in de labs, achter een toetsenbord. Soms ziet het platform de nieuwe instelling vanzelf na een tijdje. Soms moet je het even opnieuw laten opstarten zodat het de nieuwe kaart leest. Maar het belangrijke heb je te pakken: je bakt geen nieuwe foto meer voor een knopje. Nooit meer."
Dat was genoeg. Joost wist dat hij dat fijne onderscheid pas echt in zijn vingers zou krijgen als hij het zelf zou doen, en niet vandaag, en niet door erover te horen. En dat was prima. Hij had het hart van de zaak, en het hart van de zaak was iets wat hij al twintig jaar deed.
Hij dacht aan zijn oude configbestandjes, die hij met de hand had bijgewerkt, vaak laat, vaak met een schuin oog op een storing die net was begonnen. Hij had ze gekoesterd, die bestandjes. Ze waren overzichtelijk geweest. Je opende er een, je zette een waarde om, je startte opnieuw, en je wist precies wat je had gedaan. Dat het hier net zo werkte, alleen netter en op een vaste plek in het cluster, gaf hem hetzelfde gevoel als de cron van laatst. Niet dat hij iets nieuws leerde. Dat hij iets ouds terugvond.
Yara was alweer doorgelopen met haar stapel papier. Joost bleef nog even naar het scherm kijken, naar de ene neutrale foto en de twee setjes ernaast, en hij dacht: ik was bijna twee keer gaan bakken voor één knopje. Hij had de gewoonte van twintig jaar even kwijtgeraakt onder de zenuwen, en hij had hem nu terug. Hij sloot het scherm en ging verder met de rest van de middag, lichter dan hij eraan was begonnen.