Yapf.net

Maintenance scripts vs commando's

Serveronderhoud, het starten en stoppen van services en dergelijken kun je doen via losse commando's of via scriptjes en daar schijnt een meningsverschil over te bestaan?

TL;DR; Scriptjes. Gebruik altijd scriptjes. Gewoon altijd, punt.


De redenering is simpel; een scriptje zal altijd dezelfde handelingen uitvoeren. Gegarandeerd, elke keer. Mensen daarentegen maken fouten, al geef je ze een checklist met handelingen dan presteren ze he nog om stappen over te slaan.
Scriptjes kunnen ook heel goed worden uitgevoerd door mensen die niet bekent zijn met de commando's, dus als je een belletje krijgt van een collega die met zijn handen in het haar zit dan kun je veel makkelijker uitleggen dat hij "start.sh" moet intikken dan "docker-compose -f /var/spool/konijnenpootjes.yml -d --remove-orphans -X overdevecht -I 55 -P nogevendoorzetten -Y we-zijn-er-bijna" en dan erachter komen dat je ook '--prod' had moeten meegeven en nu is staat de staging omgeving live en google is de test-data aan het indexeren. Nee., gewoon start.sh

"Jamaar, als je de commando's nooit handmatig uitvoert dan weet je niet wat het script doet en kun je niet ingrijpen als er iets fout gaat"

De kans dat je een tikfout maakt is oneindig veel groter dan dat de procedure zelf spontaan faalt. Je introduceert een enorme kans op fouten met als redenering dat het makkelijker wordt om fouten te herstellen.

"jamaar, scriptjes moet je onderhouden"

En als de commando's veranderen moet je nieuwe commando's aanleren. De kans dat je een commando uit gewoonte op de oude manier intikt en daarmee de omgeving sloopt is veel te groot om goed te praten dat je geen zin hebt om een handjevol scriptjes aan te passen (wat sowieso een flutargument is want dat is letterlijk je werk als developer)

Scriptjes dus.