Runbook: Kaos tatbikatı (aylık, staging)
Test matrisi (docs/plan/09): worker kill, Redis restart, sağlayıcı 5xx enjeksiyonu — aylık, elle. Betik: infra/scripts/chaos.sh.
Test matrisi (docs/plan/09): worker kill, Redis restart, sağlayıcı 5xx enjeksiyonu — aylık, elle. Betik: infra/scripts/chaos.sh.
Önkoşullar
- Staging sunucusu (
.env.staging,PROVIDER_MODE=mock— betik gerçek sağlayıcılı ortamda çalışmayı reddeder). - Sentetik izleme app'i ve anahtarı (
docs/runbooks/synthetic-monitoring.md):SYNTHETIC_API_URL,SYNTHETIC_API_KEY,SYNTHETIC_APP_ID,SYNTHETIC_SUBSCRIPTION_ID. jq,curl, Docker Compose v2.24+.
Çalıştırma
./infra/scripts/chaos.sh all
```text
Tek senaryo: `worker-kill`, `redis-restart`, `provider-5xx`.
| Senaryo | Enjeksiyon | Beklenen | Gözlem |
|---|---|---|---|
| worker-kill | `worker-dispatch` SIGKILL, 5 sn sonra yeniden başlatma | Yarıda kalan iş BullMQ stalled kontrolü veya `reconcile` ile tamamlanır; yeni gönderim < 120 sn | `WorkerDown` alarmı kısa süre; `queue_jobs_total{state="stalled"}` |
| redis-restart | `docker compose restart redis` (AOF) | Kuyruklar kaldığı yerden devam; API hız sınırı ve oturumlar kesintisiz | `RedisDown` kısa süre, API 5xx yok |
| provider-5xx | `mock:transient` belirteçli abonelik | Üstel geri çekilmeyle yeniden deneme, sonunda `failed` (`MAX_RETRIES`); diğer gönderimler etkilenmez | `provider_send_total{outcome="transient"}` artar, `DispatchFailureRateHigh` eşik altı |
## Kayıt
Her tatbikatta tarih, senaryo, sonuç ve süreleri aşağıya ekleyin; başarısız senaryo için olay kaydı açın (`docs/runbooks/incident.md`).
| Tarih | Senaryo | Sonuç | Not |
|---|---|---|---|Yük testi (k6-operator, dağıtık)
v2 Faz 16 madde 5 (docs/plan/10). Manifestler infra/load/, betikler tests/load/. Tek makineden koşulan Faz 14 prosedürü (10k olay/sn, 1M fan-out) tests/load/README.md içindedir; bu runbook Kubernetes'te dağıtık koşuyu…
Postgres rol ayrımı (RLS'in üretimde etkin olması)
Kiracı izolasyonunun ikinci savunma hattı Postgres Row Level Security'dir (db/migrations/0005_rls.up.sql, FORCE ROW LEVEL SECURITY). Süper kullanıcılar ve BYPASSRLS rolleri RLS'e hiçbir koşulda tabi değildir; uygulama…