62 lines
1.3 KiB
Markdown
62 lines
1.3 KiB
Markdown
# ADR-002: Hybrid Cache Stratejisi
|
||
|
||
## Durum
|
||
|
||
Kabul edildi
|
||
|
||
## Bağlam
|
||
|
||
Netflix'ten scraped verileri nasıl saklayacağımıza karar vermemiz gerekiyor. Seçenekler:
|
||
|
||
1. **Sadece Cache**: Redis'te TTL ile sakla
|
||
2. **Sadece Database**: PostgreSQL'de kalıcı sakla
|
||
3. **Hybrid**: Cache + Database birlikte
|
||
|
||
## Karar
|
||
|
||
**Hybrid Cache Stratejisi** (Cache → DB → Netflix) seçildi.
|
||
|
||
## Akış
|
||
|
||
```
|
||
İstek → Redis Cache → Varsa dön
|
||
→ Yoksa → PostgreSQL → Varsa dön, Cache'e yaz
|
||
→ Yoksa → Netflix'ten çek → DB'ye yaz → Cache'e yaz → Dön
|
||
```
|
||
|
||
## Gerekçe
|
||
|
||
### Sadece Cache Eksikleri
|
||
- TTL dolduğunda veri kaybı
|
||
- Yeniden scraping maliyeti
|
||
|
||
### Sadece Database Eksikleri
|
||
- Her istekte DB sorgusu
|
||
- Daha yavaş yanıt
|
||
|
||
### Hybrid Avantajları
|
||
1. **Hız**: Cache hit durumunda anlık yanıt
|
||
2. **Kalıcılık**: Veriler DB'de saklanır
|
||
3. **Verimlilik**: Netflix'e gereksiz istek atılmaz
|
||
4. **TTL Esnekliği**: Cache süresi ayarlanabilir
|
||
|
||
## Sonuçlar
|
||
|
||
### Olumlu
|
||
- En hızlı yanıt süresi (cache hit)
|
||
- Veri kalıcılığı
|
||
- Netflix üzerinde minimal yük
|
||
|
||
### Olumsuz
|
||
- İki sistem senkronizasyonu
|
||
- Daha fazla kod karmaşıklığı
|
||
|
||
### Yapılandırma
|
||
```env
|
||
REDIS_TTL_SECONDS=604800 # 7 gün
|
||
```
|
||
|
||
## Tarih
|
||
|
||
2025-02-27
|