Impulse AI Docs
Intern dokumentasjon
skipLink.label

Rollback-prosedyrer

Konkrete steg for aa rulle tilbake hver komponent naar noe gaar galt i produksjon.

Hurtigoversikt

heading.anchorLabel
KomponentMetodeTidRisiko
APIRailway redeploy forrige~30 sekLav
DatabaseNy migrering som reverserMinutterMedium
iOSIkke mulig — push ny versjonTimer/dagerHoey
WebVercel instant rollback~5 sekLav

API Rollback (Railway)

heading.anchorLabel

Railway lagrer alle tidligere deploys. Rollback er ett klikk.

  1. Gaa til Railway Dashboard → im-api → Deployments
  2. Finn forrige fungerende deploy
  3. Klikk “Redeploy” paa den
Terminal window
# Sjekk at API-et svarer:
curl https://api.impulseai.app/api/v1/health
# Forventet respons:
# {"status":"ok"}

Alternativ: Deploy spesifikk commit

heading.anchorLabel

Hvis du trenger aa deploye en spesifikk commit uten aa rulle tilbake hele deployen:

Terminal window
# Lag en revert-commit:
git revert HEAD
git push origin main
# Railway deployer automatisk

Database Rollback

heading.anchorLabel
  1. Identifiser hva som gikk galt — sjekk siste migrering i packages/database/supabase/migrations/

  2. Opprett reverseringsmigrering:

    Terminal window
    pnpm db:migrate:new revert_feilaktig_migrering
  3. Skriv reverser-SQL:

    -- Eksempel: Fjern en kolonne som ble lagt til
    ALTER TABLE impulses DROP COLUMN IF EXISTS feil_kolonne;
    -- Eksempel: Gjenopprett en kolonne som ble slettet
    ALTER TABLE impulses ADD COLUMN gammel_kolonne TEXT;
    -- Eksempel: Reverser en tabellendring
    DROP TABLE IF EXISTS feil_tabell;
  4. Test lokalt:

    Terminal window
    pnpm db:reset
  5. 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.anchorLabel

Supabase Pro har PITR (Point-in-Time Recovery) for katastrofale situasjoner:

  1. Gaa til Supabase Dashboard → prosjekt → Database → Backups
  2. Velg tidspunkt foer feilen
  3. Restore

Vanlige SQL-reverseringer

heading.anchorLabel

Lagt til kolonne:

ALTER TABLE tabellnavn DROP COLUMN IF EXISTS kolonnenavn;

Slettet kolonne (data tapt):

-- Data kan ikke gjenopprettes uten backup
ALTER 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;
  1. Fiks feilen i koden

  2. Push hotfix:

    Terminal window
    cd apps/mobile-kmp/iosApp
    bundle exec fastlane ios bump type:patch
    git push && git push --tags
    bundle exec fastlane ios beta
  3. Test i TestFlight — verifiser at fix fungerer

  4. Send til App Store:

    Terminal window
    bundle exec fastlane ios promote
  5. Be om Expedited Review i App Store Connect (1-2 dager vs 1 uke)

Kritisk crash — noed-prosedyre

heading.anchorLabel

Hvis appen krasjer for alle brukere:

  1. Identifiser crash i Sentry (stack trace + breadcrumbs)
  2. Fiks minimalt (kun crash-fix, ingen andre endringer)
  3. Kjoer full pipeline: bundle exec fastlane ios release
  4. Be om Expedited Review med forklaring til Apple

Web Rollback (Vercel)

heading.anchorLabel

Vercel har instant rollback innebygd.

  1. Gaa til Vercel Dashboard → prosjekt (landing eller console)
  2. Gaa til “Deployments”
  3. Finn forrige fungerende deploy
  4. Klikk ”…” → “Promote to Production”

Rollback er umiddelbar — ingen byggetid.

Alternativ via CLI

heading.anchorLabel
Terminal window
# List deployments:
vercel ls
# Promoter en spesifikk deploy:
vercel promote <deployment-url>

Beslutningstre

heading.anchorLabel
Problem 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)