Ekspluatatsiya
Backup va restore
PostgreSQL, S3, encryption key va operatsion restore tartibi.
Nimani saqlash kerak?
| Aktiv | Nega kerak | Talab |
|---|---|---|
| PostgreSQL | Barcha metadata, chat, auth, jobs, usage | Encrypted, off-site, retention + PITR |
| S3 bucket | Foydalanuvchi fayl baytlari | Versioning/lifecycle yoki replikatsiya |
| Master encryption key | Provider credentiallarini decrypt qilish | Alohida secret manager backup |
| Deploy config | Image digest, Caddy va env nomlari | Secret qiymatlaridan ajratilgan config-as-code |
| Caddy state | ACME account/cert cache | Persistent volume; qayta olish ham mumkin |
Kalitsiz backup to‘liq emas
Database restore qilinib, o‘sha MASTER_ENCRYPTION_KEY tiklanmasa provider credential ciphertextlari ochilmaydi. Kalitni DB backup bilan bir joyda saqlamang.
PostgreSQL backup
Logical backup misoli
pg_dump --format=custom --no-owner --no-acl \
--dbname="$DATABASE_URL" \
--file=edubase-$(date +%F-%H%M).dump
pg_restore --list edubase-2026-07-25-1200.dump | headKatta production bazada managed PostgreSQL snapshot va WAL/PITR afzal. pg_dump consistency beradi, lekin RPO/RTO talabini yakka o‘zi qondirmasligi mumkin.
Restore drill
- Izolyatsiyalangan yangi PostgreSQL/S3 target yarating.
- Database va mos object versiyalarini bir vaqt nuqtasiga tiklang.
- Master key va kerakli runtime secretlarni secret managerdan ulang.
- Amaldagi binaryga mos migration statusini tekshiring.
- API/worker’ni private staging’da ishga tushiring.
- Login, provider decrypt/test, conversation, download va usage reconciliationni tekshiring.
- RPO/RTO va topilgan muammolarni drill jurnaliga yozing.
DB va S3 consistency
DB metadata va S3 bytes bitta distributed transactionda emas. Restore vaqt nuqtalari farq qilsa orphan object yoki missing object paydo bo‘lishi mumkin. Periodik reconciliation va delete cleanup joblari bunday farqlarni aniqlash/tuzatishga xizmat qiladi.