Files
trafficpumper/docs/production-serp-runbook.md
2026-08-29 15:53:53 +03:00

65 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TrafficPumper SERP Production Runbook
Aktivasyon seviyeleri: disabled dis istek yapmaz; validation_only yalniz config ve acik izinle ucretsiz bakiye health kontroludur; canary normal customer/scheduler kapaliyken gunde en fazla bir kontrollu sorgudur; enabled butce, kill switch ve circuit breaker altinda normal kullanimdir. Hicbir gecis otomatik yapilmaz.
## Deploy
1. Secret degerlerini yalniz production environment/secret store icinde saglayin.
2. php artisan migrate --force
3. npm ci ve npm run build
4. php artisan optimize:clear
5. Environment yuklendikten sonra config:cache, route:cache ve view:cache
6. php artisan horizon:terminate; process manager yeniden baslatmalidir.
7. php artisan schedule:list
8. Dis isteksiz php artisan serp:dataforseo:health --json
9. Ayri acik izinle health --remote --json
10. Once canary dry-run; ayri izinle yalniz bir kez --execute.
11. Maliyet, normalization, audit, queue ve log kontrolu tamamlanmadan enabled moda gecmeyin.
Migration additive oldugundan bakim modu zorunlu degildir; release eszamanliligini deployment sistemi guvenceye almiyorsa bakim modu kullanin.
## Scheduler ve Horizon
Tek cron: * * * * * cd /GERCEK/PROJE/YOLU ve php artisan schedule:run. Windows gelistirme yolu production yolu degildir. Horizon default ve serp kuyruklarini tuketir. Coklu sunucuda Redis ortak cache/lock/circuit icin zorunludur.
## Emergency stop ve rollback
Super_admin emergency stop ile yeni Live/submit islemlerini keser; mevcut ucretli Standard task polling sonucu kurtarir. Gerekirse worker/scheduler kontrollu durdurulur, onceki release donulur ve config cache yenilenir. Additive migration veri riski varsa korlemesine geri alinmaz. Stuck kayitlar once serp:reconcile, sonra onayla --execute ile islenir.
## Ilk 24 saat
Saatlik harcama, bakiye, basari orani, auth/429/5xx, circuit/kill state, stuck/poll sayilari, backlog, failed jobs ve scrub edilmis loglari kontrol edin. Secret, Authorization header, keyword veya ham response gorulurse emergency stop uygulayin.
## AŞAMA 8 — Güvenli production geçişi (Seviye 0)
Bu çalışma alanından production sunucusuna erişim veya deployment yetkisi verilmemiştir. Gerçek proje yolu, PHP binary, web/PHP-FPM/Horizon servis adları, cron/timer, release ve rollback hedefi **production'da salt okunur keşfedilecek**; Windows geliştirme yolları production değeri değildir.
### Deployment öncesi kapılar
- Release/commit ve doğrulanmış rollback hedefini kaydet; yedek politikasının varlığını doğrula.
- `APP_ENV=production`, `APP_DEBUG=false`; shared Redis cache/lock ve kalıcı queue kullan.
- `DATAFORSEO_LOGIN` ve `DATAFORSEO_PASSWORD` yalnız secret store/environment içinde bulunmalı; değerleri ekrana basma.
- Başlangıç durumu `SERP_CHECKS_ENABLED=false`, `SERP_OPERATION_MODE=disabled`, `SERP_PROVIDER=dataforseo` kalmalıdır.
- Önce `php artisan migrate --pretend`, yetkili deploy sırasında sonra `php artisan migrate --force` çalıştır.
- Lock dosyalarıyla production Composer/npm kurulumu ve `npm run build`; ardından cache, route, view ve worker yenileme adımlarını platformda keşfedilmiş servis adlarıyla uygula.
- `/up`, ana sayfa, login, admin login, migration status, route list, `schedule:list`, Horizon ve `default,serp` tüketimini doğrula.
`php artisan serp:production:preflight --json` dış HTTP yapmaz ve kritik kapıda non-zero döner. Disabled deploy sonrasında `serp:dataforseo:health --json`, `serp:dataforseo:canary --json`, `serp:reconcile` ve `serp:operations:snapshot --window=24h --json` çalıştırılır. Preflight production ortamında PASS olmadan aktivasyon ilerletilmez.
### Ayrı onay kapıları
1. Remote health: yalnız ayrı açık onayla `serp:dataforseo:health --remote --json`. Bakiye critical altındaysa veya health başarısızsa dur.
2. Tek canary: remote health PASS sonrasında ayrıca canary mode değişikliği ve ayrıca tek ücretli `canary --execute` onayı gerekir. Normal customer ve scheduler trafiği kapalı kalır.
3. Limited production: canary kabul kriterlerinin tamamı PASS olduktan sonra ikinci ayrı açık onay gerekir. İki anahtar birlikte açılmadan normal trafik başlamaz.
Canary kabulü; başarılı HTTP/envelope, yalnız organic sonuç, `rank_group` normalizasyonu, depth 10, tek reservation/reconciliation, izin verilen maliyet, scrubbed audit/log, kapalı circuit ve doğru bütçe sayaçlarının tamamını gerektirir. Eksikte emergency stop/disabled uygulanır.
### Limitler ve ilk 24 saat
Güvenli profil: günlük 1.00 USD, aylık 20.00 USD, uyarı %80, low balance 10.00 USD, critical balance 2.00 USD, Live rezervasyon 0.003 USD, Standard 0.001 USD, depth 10. Ramp-up yeni ücretli rezervasyonları atomik olarak ilk saat 5, ilk 6 saat 25, ilk 24 saat 100 toplam kontrolle sınırlar; daha önce ücretlenmiş Standard polling devam eder.
Filament `/admin/serp-operations` ve `serp:operations:snapshot` aynı metrik servisini kullanır. Bütçe, backlog, failed/stuck, health, kill/circuit ve ramp durumu izlenir. Support/admin salt okunur; emergency stop/clear yalnız `super_admin` yetkisidir. Audit kanıtları operasyon audit kayıtlarında, maliyetler bütçe ledgerında, hassas olmayan özet Filament/CLI'dadır.
### Rollback ve incident recovery
Önce emergency stop ile yeni ücretli trafik kesilir; ücretlenmiş Standard task polling kontrollü sürer. Release/commit kaydedilip önceki doğrulanmış release'e dönülür; config/route/view cache ve keşfedilmiş PHP-FPM/Horizon servisleri kontrollü yenilenir. Additive migration körlemesine rollback edilmez; ileri düzeltme kullanılır. `/up`, login, admin ve salt okunur SERP ekranları tekrar doğrulanır; budget/audit kayıtları silinmez.