Task #5 del 1/3 (URL-migrering). Verifiseringen motbeviste STATE.md-premisset om ren prefix-swap: rebrand er per-URL, ikke mekanisk. En blind sed ai-foundry→foundry ville lagd 56 nye 404-er (classic-stiene finnes ikke under nytt foundry/-prefiks — bekreftet empirisk). Metode: resolverte alle 237 unike KB-URLer mot live redirects (curl -L), bygde full-URL→full-URL-mapping fra faktisk url_effective. Bevarer locale-form, query (?view=) og #fragment per lenke. - 231 navnerom-erstatninger over 141 filer (408 forekomster): - 161 → azure/foundry/ (98 ren prefix-swap + 10 sti-reorg + reorg-tilfeller) - 69 → azure/foundry-classic/ (eldre hub-spor: assistants, hub-DR, on-your-data; faktisk redirect-mål per operatorvalg) - 1 → azure/foundry-local/ - 2 døde lenker (404) fikset til verifiserte mål: - agent-service → azure/foundry/agents/overview - concepts/evaluation-evaluators/ → azure/foundry/how-to/evaluate-generative-ai-app - 5 path-/display-referanser (uten https://, i backticks/lenketekst) rettet manuelt. - 6 slug-baserte ai-foundry-treff urørt (scope-grense): managed-grafana-dashboard, security-baseline, power-platform prompt-builder, architecture baseline-chat (sistnevnte slug-rebrand i annet navnerom — mulig fremtidig funn). - Parkert til task #5 del 2/3: Norway East GPT-5-datasuverenitet-fiks + modellkatalog-utvidelse (5.3/5.4/5.5, gpt-oss, sora-2). Verifisert: 0 gjenværende azure/ai-foundry/-navnerom i skills/. validate-plugin.sh 219 PASS. test-kb-integrity.sh 117/117 passed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
265 lines
12 KiB
Markdown
265 lines
12 KiB
Markdown
# RTO and RPO Planning for AI Services
|
||
|
||
**Last updated:** 2026-02
|
||
**Status:** GA
|
||
**Category:** Business Continuity & Disaster Recovery
|
||
|
||
---
|
||
|
||
## Introduksjon
|
||
|
||
Recovery Time Objective (RTO) og Recovery Point Objective (RPO) er de to mest kritiske metrikkene i enhver BCDR-strategi for AI-systemer. RTO definerer hvor raskt et system må gjenopprettes etter en forstyrrelse, mens RPO definerer hvor mye datatap som er akseptabelt. For AI-tjenester som Azure OpenAI, Azure AI Search og Azure Machine Learning er disse metrikkene spesielt viktige fordi nedetid direkte påvirker brukeropplevelsen og forretningsbeslutninger.
|
||
|
||
I norsk offentlig sektor er kravene til tilgjengelighet regulert gjennom flere rammeverk, inkludert Utredningsinstruksen, NSMs grunnprinsipper for IKT-sikkerhet og Digitaliseringsdirektoratets arkitekturprinsipper. Organisasjoner må dokumentere RTO og RPO for alle kritiske systemer som del av sin sikkerhetsstyring og internkontroll.
|
||
|
||
For AI-løsninger bringer disse kravene unike utfordringer: modelldata, treningsdata, embedding-indekser og konfigurasjoner må alle vurderes separat i en Business Impact Analysis (BIA). En chatbot med RAG-arkitektur har for eksempel separate RPO-krav for selve language model-endpointet, search-indeksen og kunnskapsdokumentene.
|
||
|
||
## Business Impact Analysis for RTO-bestemmelse
|
||
|
||
En Business Impact Analysis (BIA) er det første steget i å definere RTO for AI-systemer. BIA kartlegger forretningspåvirkningen av nedetid for hvert AI-komponent.
|
||
|
||
### Kritikalitetstier for AI-systemer
|
||
|
||
| Tier | Beskrivelse | RTO-mål | RPO-mål | Eksempel AI-bruk |
|
||
|------|-------------|---------|---------|------------------|
|
||
| Tier 0 — Mission Critical | Nedetid er uakseptabelt | < 1 min | 0 | Sanntids sikkerhetsovervåking med AI |
|
||
| Tier 1 — Business Critical | Kort nedetid tolererbar | < 15 min | < 5 min | Kundeservicebot i produksjon |
|
||
| Tier 2 — Business Operational | Timer akseptabelt | < 4 timer | < 1 time | Intern rapporteringsplattform med AI |
|
||
| Tier 3 — Administrative | Lengre nedetid OK | < 24 timer | < 24 timer | Trenings- og sandbox-miljøer |
|
||
|
||
### BIA-prosess for AI-komponenter
|
||
|
||
1. **Identifiser alle AI-avhengigheter**: Kartlegg komponentene i AI-løsningen (modell-endpoints, search-indekser, data-pipelines, embedding-stores)
|
||
2. **Vurder forretningspåvirkning per komponent**: Hva skjer hvis Azure OpenAI-endpointet er nede? Hva om AI Search-indeksen er korrupt?
|
||
3. **Kvantifiser finansiell påvirkning**: Beregn kostnad per time med nedetid
|
||
4. **Kartlegg avhengigheter**: Hvilke systemer avhenger av AI-komponentene?
|
||
5. **Definer akseptabel degradering**: Kan systemet tilby begrenset funksjonalitet uten AI?
|
||
|
||
### BIA-mal for AI-tjenester
|
||
|
||
```markdown
|
||
## Business Impact Analysis — [Tjenestenavn]
|
||
|
||
### Tjenestebeskrivelse
|
||
- **Funksjon:** [Hva gjør AI-tjenesten?]
|
||
- **Brukere:** [Antall brukere/systemer som avhenger av tjenesten]
|
||
- **Driftstid:** [Forventet tilgjengelighet, f.eks. 24/7 eller kontortid]
|
||
|
||
### Påvirkningsvurdering
|
||
| Nedetid | Finansiell påvirkning | Omdømmepåvirkning | Regulatorisk risiko |
|
||
|---------|----------------------|--------------------|--------------------|
|
||
| 0–1 time | [Lav/Middels/Høy] | [Lav/Middels/Høy] | [Lav/Middels/Høy] |
|
||
| 1–4 timer | [...] | [...] | [...] |
|
||
| 4–24 timer | [...] | [...] | [...] |
|
||
| > 24 timer | [...] | [...] | [...] |
|
||
|
||
### Konklusjon
|
||
- **Kritikalitetstier:** [0/1/2/3]
|
||
- **RTO-krav:** [X minutter/timer]
|
||
- **RPO-krav:** [X minutter/timer]
|
||
```
|
||
|
||
## Datatap-toleranse og RPO-beregning
|
||
|
||
RPO for AI-systemer krever spesiell oppmerksomhet fordi data har forskjellig verdi og regenereringstid.
|
||
|
||
### RPO-kategorier for AI-data
|
||
|
||
| Datatype | Typisk RPO | Regenereringstid | Beskyttelsesmekanisme |
|
||
|----------|-----------|-------------------|-----------------------|
|
||
| Treningsdata (datasett) | 24 timer | Dager til uker | Azure Blob Storage GRS/GZRS |
|
||
| Finjusterte modeller | 24 timer | Timer til dager | Model registry backup |
|
||
| Search-indekser (embeddings) | 1–4 timer | Timer | Dual-region indexing |
|
||
| Brukerdata/konversasjoner | 0–15 min | Ikke regenererbar | Cosmos DB multi-region writes |
|
||
| Konfigurasjoner og prompts | 0 | Minutter via IaC | Git + IaC deployment |
|
||
| Fine-tuning jobb-tilstand | 4–24 timer | Timer | Checkpoint-basert backup |
|
||
|
||
### Beregningsmodell for RPO
|
||
|
||
RPO beregnes basert på tre faktorer:
|
||
|
||
1. **Data change rate**: Hvor ofte endres dataene?
|
||
2. **Replication lag**: Hva er forsinkelsen mellom primær og sekundær region?
|
||
3. **Backup frequency**: Hvor ofte tas backup?
|
||
|
||
```
|
||
Effektiv RPO = max(Replication Lag, Backup Interval)
|
||
```
|
||
|
||
For Azure Storage med Geo Priority Replication er RPO for blobs garantert <= 15 minutter (99.0% av faktureringsperioden).
|
||
|
||
### Azure-tjenester og deres innebygde RPO
|
||
|
||
| Azure-tjeneste | Innebygd RPO | Konfigurasjon | Merknad |
|
||
|----------------|-------------|---------------|---------|
|
||
| Azure OpenAI | Ingen innebygd DR | Manuell multi-region | Stateless — redeploy i ny region |
|
||
| Azure AI Search | Ingen innebygd repl. | Manuell multi-region | Rebuild indeks fra kilde |
|
||
| Azure Cosmos DB | ~0 (multi-region writes) | Konfigurerbar | Automatisk geo-replikering |
|
||
| Azure Blob Storage (GRS) | ~15 min | Aktivér GRS/GZRS | Async replikering |
|
||
| Azure Blob Storage (GPR) | <= 15 min SLA | Aktivér Geo Priority Repl. | SLA-backed RPO |
|
||
| Azure SQL Database | ~5 sek (geo-repl.) | Active geo-replication | Async replikering |
|
||
| Azure Machine Learning | Ingen innebygd DR | Manuell multi-region | Separat storage per region |
|
||
|
||
## Mapping av krav til Azure-kapabiliteter
|
||
|
||
### Recovery-konfigurasjoner
|
||
|
||
| Konfigurasjonstype | RTO | RPO | Kostnad | Egnet for |
|
||
|--------------------|-----|-----|---------|-----------|
|
||
| Active-Active | ~0 | ~0 | Høyest | Tier 0: Mission Critical |
|
||
| Active-Passive (Warm) | Minutter | Minutter | Middels-Høy | Tier 1: Business Critical |
|
||
| Active-Passive (Cold) | Timer | Timer | Middels | Tier 2: Business Operational |
|
||
| Backup & Restore | Timer–Dager | Timer–Dager | Lavest | Tier 3: Administrative |
|
||
|
||
### Azure OpenAI BCDR-konfigurasjon
|
||
|
||
```python
|
||
# Eksempel: Multi-region Azure OpenAI med failover via Azure API Management
|
||
import openai
|
||
from azure.identity import DefaultAzureCredential
|
||
|
||
# Primær region
|
||
primary_client = openai.AzureOpenAI(
|
||
azure_endpoint="https://aoai-primary-norwayeast.openai.azure.com/",
|
||
api_version="2024-10-21",
|
||
azure_deployment="gpt-4o"
|
||
)
|
||
|
||
# Sekundær region (warm standby)
|
||
secondary_client = openai.AzureOpenAI(
|
||
azure_endpoint="https://aoai-secondary-swedencentral.openai.azure.com/",
|
||
api_version="2024-10-21",
|
||
azure_deployment="gpt-4o"
|
||
)
|
||
|
||
def call_with_failover(messages, max_retries=3):
|
||
"""Call Azure OpenAI with automatic failover to secondary region."""
|
||
try:
|
||
response = primary_client.chat.completions.create(
|
||
model="gpt-4o",
|
||
messages=messages,
|
||
timeout=30
|
||
)
|
||
return response
|
||
except Exception as e:
|
||
print(f"Primary region failed: {e}")
|
||
# Failover to secondary
|
||
response = secondary_client.chat.completions.create(
|
||
model="gpt-4o",
|
||
messages=messages,
|
||
timeout=30
|
||
)
|
||
return response
|
||
```
|
||
|
||
### Azure AI Search multi-region oppsett
|
||
|
||
```bash
|
||
# Deploy identisk search-tjeneste i to regioner
|
||
az search service create \
|
||
--name "search-primary-norwayeast" \
|
||
--resource-group "rg-ai-prod" \
|
||
--location "norwayeast" \
|
||
--sku "standard" \
|
||
--replica-count 3 \
|
||
--partition-count 2
|
||
|
||
az search service create \
|
||
--name "search-secondary-swedencentral" \
|
||
--resource-group "rg-ai-dr" \
|
||
--location "swedencentral" \
|
||
--sku "standard" \
|
||
--replica-count 2 \
|
||
--partition-count 2
|
||
|
||
# Bruk Azure Traffic Manager for routing
|
||
az network traffic-manager profile create \
|
||
--name "tm-search-failover" \
|
||
--resource-group "rg-networking" \
|
||
--routing-method Priority \
|
||
--unique-dns-name "ai-search-global"
|
||
```
|
||
|
||
## Norske regulatoriske krav
|
||
|
||
### Forvaltningsloven og Utredningsinstruksen
|
||
|
||
Norske offentlige organisasjoner må dokumentere:
|
||
- **Konsekvensanalyse**: Vurdering av konsekvenser ved bortfall av AI-tjenester
|
||
- **Alternativanalyse**: Evaluering av ulike BCDR-strategier med kost/nytte
|
||
- **Risiko- og sårbarhetsanalyse (ROS)**: Identifisering av trusler mot AI-systemers tilgjengelighet
|
||
|
||
### NSMs grunnprinsipper
|
||
|
||
NSM (Nasjonal sikkerhetsmyndighet) krever:
|
||
- Klassifisering av systemer etter kritikalitet
|
||
- Dokumenterte gjenopprettingsplaner
|
||
- Regelmessig testing av beredskapsplaner
|
||
- Loggføring og rapportering av hendelser
|
||
|
||
### Data Residency-krav
|
||
|
||
| Krav | Beskrivelse | Påvirkning på BCDR |
|
||
|------|-------------|-------------------|
|
||
| Schrems II | Data kan ikke overføres til usikre tredjeland | Begrens DR-regioner til EU/EØS |
|
||
| GDPR Art. 32 | Tilstrekkelig sikkerhetsnivå inkl. tilgjengelighet | Dokumentér RTO/RPO i DPIA |
|
||
| Forvaltningsloven §13 | Taushetsplikt | Kryptering i alle DR-regioner |
|
||
|
||
## Dokumentasjons-maler og governance
|
||
|
||
### RTO/RPO-dokumentasjonsmal
|
||
|
||
```markdown
|
||
# RTO/RPO Dokumentasjon — [Systemnavn]
|
||
|
||
## Versjon og godkjenning
|
||
- **Versjon:** [X.Y]
|
||
- **Sist oppdatert:** [Dato]
|
||
- **Godkjent av:** [Navn og rolle]
|
||
- **Neste revisjon:** [Dato]
|
||
|
||
## Systembeskrivelse
|
||
[Kort beskrivelse av AI-systemet og dets forretningsfunksjon]
|
||
|
||
## Komponentoversikt med RTO/RPO
|
||
|
||
| Komponent | Kritikalitet | RTO | RPO | DR-strategi | Ansvarlig |
|
||
|-----------|-------------|-----|-----|-------------|-----------|
|
||
| Azure OpenAI Endpoint | Høy | 15 min | N/A | Multi-region | Platform team |
|
||
| AI Search Index | Høy | 1 time | 4 timer | Dual indexing | Data team |
|
||
| Cosmos DB (state) | Kritisk | 0 | 0 | Multi-region writes | Platform team |
|
||
| Blob Storage (docs) | Middels | 4 timer | 15 min | GRS | Ops team |
|
||
|
||
## Testplan
|
||
- **Frekvens:** Kvartalsvis
|
||
- **Type:** Failover drill + tabletop
|
||
- **Suksesskriterier:** [Definer]
|
||
|
||
## Hendelsesklassifisering
|
||
[Ref. til incident response plan]
|
||
```
|
||
|
||
### Governance-prosess
|
||
|
||
1. **Årlig BIA-revisjon**: Oppdater kritikalitetsvurderinger
|
||
2. **Kvartalsvis testing**: Verifiser at RTO/RPO-mål oppnås
|
||
3. **Hendelsesdrevet oppdatering**: Revider etter reelle hendelser
|
||
4. **Endringsbasert vurdering**: Nye AI-komponenter trigger ny BIA
|
||
|
||
## Referanser
|
||
|
||
- [Business continuity and disaster recovery overview](https://learn.microsoft.com/en-us/azure/reliability/concept-business-continuity-high-availability-disaster-recovery) — Grunnleggende BCDR-konsepter og definisjoner
|
||
- [Develop a disaster recovery plan for multi-region deployments](https://learn.microsoft.com/en-us/azure/well-architected/design-guides/disaster-recovery) — WAF-veiledning for DR-planlegging
|
||
- [Recommendations for defining reliability targets](https://learn.microsoft.com/en-us/azure/well-architected/reliability/metrics) — SLO, RTO og RPO-definisjoner
|
||
- [BCDR considerations with Azure OpenAI](https://learn.microsoft.com/en-us/azure/foundry-classic/how-to/high-availability-resiliency) — Azure OpenAI-spesifikk BCDR
|
||
- [Azure Storage redundancy](https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy) — GRS, GZRS og replikeringsalternativer
|
||
- [Azure Storage Geo Priority Replication](https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy-priority-replication) — SLA-backed RPO for blobs
|
||
- [Reliability in Azure AI Search](https://learn.microsoft.com/en-us/azure/reliability/reliability-ai-search) — Tilgjengelighet og DR for AI Search
|
||
|
||
## For Cosmo
|
||
|
||
- **Bruk denne referansen** når kunden trenger hjelp med å definere RTO og RPO for sine AI-systemer, eller når de planlegger BCDR-strategi.
|
||
- Start alltid med en Business Impact Analysis (BIA) før du foreslår tekniske løsninger — RTO/RPO er forretningsbeslutninger, ikke tekniske.
|
||
- Utfordre kunder som sier "alt er kritisk" — differensiert kritikalitet er nøkkelen til kostnadseffektiv BCDR.
|
||
- For norsk offentlig sektor: Påpek at DPIA (Data Protection Impact Assessment) bør inkludere tilgjengelighetsvurdering med RTO/RPO.
|
||
- Husk at Azure OpenAI er stateless — RTO handler om redeployment og DNS-oppdatering, ikke om datavederlag.
|