Rollback-prosedyrer
Konkrete steg for aa rulle tilbake hver komponent naar noe gaar galt i produksjon.
Hurtigoversikt
heading.anchorLabel| Komponent | Metode | Tid | Risiko |
|---|---|---|---|
| API | Railway redeploy forrige | ~30 sek | Lav |
| Database | Ny migrering som reverser | Minutter | Medium |
| iOS | Ikke mulig — push ny versjon | Timer/dager | Hoey |
| Web | Vercel instant rollback | ~5 sek | Lav |
API Rollback (Railway)
heading.anchorLabelRailway lagrer alle tidligere deploys. Rollback er ett klikk.
- Gaa til Railway Dashboard → im-api → Deployments
- Finn forrige fungerende deploy
- Klikk “Redeploy” paa den
Verifisering
heading.anchorLabel# Sjekk at API-et svarer:curl https://api.impulseai.app/api/v1/health
# Forventet respons:# {"status":"ok"}Alternativ: Deploy spesifikk commit
heading.anchorLabelHvis du trenger aa deploye en spesifikk commit uten aa rulle tilbake hele deployen:
# Lag en revert-commit:git revert HEADgit push origin main# Railway deployer automatiskDatabase Rollback
heading.anchorLabel-
Identifiser hva som gikk galt — sjekk siste migrering i
packages/database/supabase/migrations/ -
Opprett reverseringsmigrering:
Terminal window pnpm db:migrate:new revert_feilaktig_migrering -
Skriv reverser-SQL:
-- Eksempel: Fjern en kolonne som ble lagt tilALTER TABLE impulses DROP COLUMN IF EXISTS feil_kolonne;-- Eksempel: Gjenopprett en kolonne som ble slettetALTER TABLE impulses ADD COLUMN gammel_kolonne TEXT;-- Eksempel: Reverser en tabellendringDROP TABLE IF EXISTS feil_tabell; -
Test lokalt:
Terminal window pnpm db:reset -
Deploy reverseringen:
Terminal window # Dry-run foerst:# GitHub Actions → "DB Deploy" → staging → dry-run# Deretter migrer:# GitHub Actions → "DB Deploy" → staging → migrate# Verifiser i staging, deretter prod:# GitHub Actions → "DB Deploy" → production → dry-run# GitHub Actions → "DB Deploy" → production → migrate
Point-in-Time Recovery
heading.anchorLabelSupabase Pro har PITR (Point-in-Time Recovery) for katastrofale situasjoner:
- Gaa til Supabase Dashboard → prosjekt → Database → Backups
- Velg tidspunkt foer feilen
- Restore
Vanlige SQL-reverseringer
heading.anchorLabelLagt til kolonne:
ALTER TABLE tabellnavn DROP COLUMN IF EXISTS kolonnenavn;Slettet kolonne (data tapt):
-- Data kan ikke gjenopprettes uten backupALTER TABLE tabellnavn ADD COLUMN kolonnenavn datatype;Endret kolonnetype:
ALTER TABLE tabellnavn ALTER COLUMN kolonnenavn TYPE gammel_type;Lagt til tabell:
DROP TABLE IF EXISTS tabellnavn;Lagt til constraint:
ALTER TABLE tabellnavn DROP CONSTRAINT IF EXISTS constraint_navn;iOS Rollback
heading.anchorLabel-
Fiks feilen i koden
-
Push hotfix:
Terminal window cd apps/mobile-kmp/iosAppbundle exec fastlane ios bump type:patchgit push && git push --tagsbundle exec fastlane ios beta -
Test i TestFlight — verifiser at fix fungerer
-
Send til App Store:
Terminal window bundle exec fastlane ios promote -
Be om Expedited Review i App Store Connect (1-2 dager vs 1 uke)
Kritisk crash — noed-prosedyre
heading.anchorLabelHvis appen krasjer for alle brukere:
- Identifiser crash i Sentry (stack trace + breadcrumbs)
- Fiks minimalt (kun crash-fix, ingen andre endringer)
- Kjoer full pipeline:
bundle exec fastlane ios release - Be om Expedited Review med forklaring til Apple
Web Rollback (Vercel)
heading.anchorLabelVercel har instant rollback innebygd.
- Gaa til Vercel Dashboard → prosjekt (landing eller console)
- Gaa til “Deployments”
- Finn forrige fungerende deploy
- Klikk ”…” → “Promote to Production”
Rollback er umiddelbar — ingen byggetid.
Alternativ via CLI
heading.anchorLabel# List deployments:vercel ls
# Promoter en spesifikk deploy:vercel promote <deployment-url>Beslutningstre
heading.anchorLabelProblem oppdaget i produksjon?│├─ API-feil?│ ├─ Siste deploy? → Railway rollback (30 sek)│ └─ Eldre feil? → git revert + push│├─ Database-feil?│ ├─ Ny kolonne/tabell? → Ny migrering som fjerner│ ├─ Slettet data? → PITR (siste utvei)│ └─ Feil constraint? → Ny migrering som dropper│├─ iOS crash?│ ├─ Alle brukere? → Hotfix + Expedited Review│ └─ Noen brukere? → Normal fix + TestFlight + promote│└─ Web-feil? └─ Vercel instant rollback (5 sek)