Flaks er ikke
en deploy-strategi
Nettbutikken sluttet å ta imot ordre klokka 14.03 en helt vanlig torsdag. Årsaken? Én fil, lastet opp over FTP rett i produksjon, uten test og uten kopi av den gamle. WordPress CI/CD finnes for å gjøre slike episoder umulige. Ikke gjennom strengere rutiner alle likevel glemmer en travel dag, men ved at maskiner kontrollerer koden før den slipper ut til kundene.
Og dette er ikke noe sjeldent uhell. Vi overtar jevnlig nettsider der deploy-historikken bor i hodet til én utvikler som sluttet i fjor. Hvilke pluginversjoner kjører i produksjon? Ingen vet helt sikkert. Det finnes jo ingen logg som kan svare, og da blir hver eneste endring et lite sjansespill med andres arbeidsdag som innsats.
Motgiften er verken eksotisk eller dyr. Koden bor i Git, hver push utløser automatiske tester, og selve deployen er én kommando som oppfører seg likt hver gang. To utviklere er nok til å hente ut gevinsten. Hos oss er dette grunnoppsettet i all profesjonell WordPress-utvikling, ikke noe dere må bestille i tillegg.
Deploys i en vanlig uke hos kundene våre
Fra git push til koden kjører testet i produksjon
Nedetid besøkende opplever per deploy
Fra feilen oppdages til forrige versjon kjører
Byggesteinene i en WordPress CI/CD-pipeline
Git i bunnen
Composer-styrt WordPress
Automatiske tester
Staging som speiler produksjon
Blue-green deploy
Overvåkning og varsling
Null nedetid
uten magi
Teknikken bak er gammel og velprøvd: atomiske deploys. Hver nye versjon bygges helt ferdig i sin egen katalog på serveren, med Composer-pakker og kompilerte assets, mens den gamle fortsetter å svare på trafikk vegg i vegg. Ingen filer overskrives underveis, og besøkende ser aldri en vedlikeholdsside.
Deretter må den nye versjonen bevise at den duger. Helsesjekkene tester at applikasjonen svarer, at den får kontakt med databasen, og at de kritiske sidene faktisk laster. Først når alle sjekkene melder grønt, flyttes en symlink, og fra det øyeblikket treffer all trafikk den nye versjonen uten å miste en eneste forespørsel. Selve byttet tar millisekunder, og derfor deployer vi like gjerne tirsdag formiddag som natt til søndag.
Skulle en deploy likevel feile, pekes symlinken tilbake til forrige versjon, og nettsiden står der den sto, i løpet av minutter og uten at noen må grave i backuper eller kalle inn til krisemøte. Besøkende så aldri annet enn en nettside som virket — det er hele poenget. Oppsettet er beskrevet i detalj i casestudien om null nedetid-deploy i praksis.
Forskjellen, linje for linje
Når er dette overkill?
Ærlig talt? For noen nettsider, ja.
En brosjyrenettside med standardtema og en håndfull velprøvde plugins klarer seg nok lenge med wp-admin og en vedlikeholdsavtale der noen med kompetanse tester oppdateringene før de rulles ut. Full pipeline på et slikt prosjekt blir som å bygge garasje til en sparkesykkel. Da sier vi fra.
Regnestykket snur i det øyeblikket nettsiden tjener penger. En nettbutikk med ordre hver time kan ikke bruke produksjon som testmiljø, og det samme gjelder integrasjoner mot Vipps eller BankID og kodebaser der flere utviklere committer i samme uke. Prislappen på en manuell deploy? Den får dere først se når det smeller.
Tommelfingerregelen vår er enkel. Koster en time nedetid mer enn 10 000 kr, eller skal nettsiden leve med egenutviklet kode i mer enn to år, tjener pipelinen seg inn av seg selv. Jobben gjøres én gang. Den første feildeployen som aldri nådde produksjon, dekker som regel hele fakturaen.