Jeg brakk Norges største nett­sider, med én kode­linje

Tok saken i egne hender, kjørte manuell deploy, ødela for hele mediehuset.

Onsdag forrige uke tok fagredaktør Jørgen Jacobsen ned flere store norske nettsider. Bare fordi han skulle oppdatere kode24. 📸: Ole Petter Baugerød Stokke
Onsdag forrige uke tok fagredaktør Jørgen Jacobsen ned flere store norske nettsider. Bare fordi han skulle oppdatere kode24. 📸: Ole Petter Baugerød Stokke Vis mer

"Det var ikke i forrige uke at jeg knakk produksjon", eller jo, vent, det var faktisk i forrige uke!

Onsdag forrige uke tok jeg nemlig egenhendig ned Norges 3., 12., 17. og 22. største nettside.

Alt fordi jeg skulle oppdatere én stakkars script-referanse hos kode24.

Slik skjedde det.

Stille før stormen

Morgenen onsdag forrige uke forløp som en helt vanlig onsdag i kode24.

Onsdag er dagen i uka vi har fått audiens til å dra på kontoret, for å spille inn podcast.

Jeg plukka opp redaktør Ole Petter på veien i min slitne og litt bulkete Nissan Leaf, vi satt på noe rar rap-musikk vi begge er enig om at teksten må ignoreres i, og durte i vei til kontoret.

Dagen før hadde jeg gjort klar en kode-oppdatering til kode24. En script-endring som tegner stillingsannonser inn i artiklene våre. Vi skulle gjerne hatt mer trafikk til dem, nemlig.

Siden onsdag er podcast-dag, og vi sender live på YouTube, går fort hele formiddagen til forberedelser og innspilling. Vi bestemte oss derfor for å utsette utkjøring av oppdateringen til etter lunsj. I tilfelle noe gikk galt med kode24, og vi måtte hasterette noe.

«Du, hvordan ble det med den oppdateringen, egentlig?»

Etter podcast og lunsj, ble jeg sittende å gjøre klar oppdateringen.

Ole Petter spaserte en tur til Dinsides redaksjonslokaler. De var akkurat i ferd med å oppdatere til nyeste versjon av vårt CMS, Labrador.

Etter 20 minutter dukket Ole Petter opp igjen og spurte:

- Du, hvordan ble det med den oppdateringen egentlig?

- Ah ja, jeg tar det nå! svarte jeg.

Så begynte det.

Utålmodighetens pris

Oppdatering av kode24-koden er egentlig en enkel operasjon: Jeg committer koden min til en branch, publiserer branchen, lager en pull request i Github til master, ser over og merger inn.

CircleCi lytter på endringer og bygger automatisk ut i produksjon. Så vidt jeg vet ved å ta en tarball av master og kopiere over på serveren.

Men akkurat denne dagen kom ikke endringen ut i produksjon. Selv om CircleCi rapporterte at alt var ok, og alt så riktig ut på Github.

Jeg plinga på sjefsutviklern for hele sulamitten på Slack, men før hun rakk å komme med et fornuftig råd ble jeg utålmodig, tok saken i egne hender, og hamret på knappen for manuell deploy.

Det var ikke så lurt.

«Bilder av ødelagte forsider og artikkelmaler skjøt opp som paddehatter i Slack-kanalen.»

"Fronten er fucka!"

Den manuelle deploy-en kjørte gjennom, den. Og alt så fint ut på kode24.

- Ja ja, den var jo grei, tenkte jeg, og sa fra til Ole Petter at alt var i skjønneste orden.

Så tittet jeg over på Slack, hvor hele Aller Media holder til. En ny beskjed fra sjefsutviklern. Og så en til, og så en til.

"Rakk du å gjøre en manuell deploye?"

"Det skriver over det vi har på fronten, sånn at det er gamle labrador som brukes."

"Ikke deploy manuelt på nytt!!!"

Meldinger om ødelagte forsider og artikler fosset inn i Slack-kanalen. I samme mediehus som oss sitter sider som Dagbladet.no, Dinside.no, KK.no og SOL.no - alle ble rammet. 📸: Jørgen Jacobsen
Meldinger om ødelagte forsider og artikler fosset inn i Slack-kanalen. I samme mediehus som oss sitter sider som Dagbladet.no, Dinside.no, KK.no og SOL.no - alle ble rammet. 📸: Jørgen Jacobsen Vis mer

"Ble litt ramaskrik her, ref. #utv-bugs."

Litt ramaskrik indeed. I #utv-bugs-kanalen var det full bonanza.

"Saker har gått over til gammel mal, fronten er fucka" kimte det fra frontsjefen i Dagbladet.

"Forsida vår er bare rot!" fulgte hun opp med.

"Min siste sak er nettopp blitt transformert til gamle Labrador av seg selv - og er føkka. Hjelp?" skrev en fortvila Dagbladet-journalist.

Bilder av ødelagte forsider og artikkel-maler skjøt opp som paddehatter i Slack-kanalen.

Dinside, som var så fornøyde med oppgradering til nytt system, hadde plutselig også fått siden sin ødelagt.

Så banker en av Sol.no sine journalister, som vi sitter vegg i vegg med, på døra.

- Har dere opplevd noe problemer? Alt er helt ødelagt hos oss, forteller hun forbauset.

- Ja, og det er min skyld, inrømmer jeg.

Hva skjedde?

Det var en ganske god grunn til at ting gikk som det gikk.

Og hvorfor alt så bra ut hos kode24.

kode24 er nemlig den eneste siden i mediehuset vårt som ikke har migrert til nye view-templates i Labrador. Rett og slett fordi vi er så opptatt med å lage godt innhold til dere.

Templatene våre lever likevel sammen med templatene for alle sitene på huset, og arver mange felles innstillinger.

Nylig ble derimot deployen til produksjon gjort om til å bygge fra et nytt repo med nye templates, der alle de andre sitene nå får templatene sine fra. De gamle templatene til kode24 blir flettet inn. Men når jeg kjørte en manuell deploy, skrev jeg over alt med gamle templates.

Derfor så alt fint ut på kode24, mens alle andre siter på huset ble rullet tilbake til en gammel versjon, hvor alt brakk.

Utviklingsavdelingen hadde selvfølgelig blitt enig om å ikke bruke verktøyet for manuell deploy, men det hadde ikke jeg fått med meg. Heldigvis fikset utviklingsavdelingen opp, og rullet tilbake. Det hele varte mindre enn fem minutter.

Fem minutter som føltes som femti.

- Jaja, flirte Ole Petter da alt var tilbake på plass igjen.

- Nå får vi hvert fall god oppmerksomhet fra ledelsen om vår nye oppdatering!