TKK_E32230814/DEPLOY_OPTIMASI.md

3.2 KiB

🚀 Cara Deploy Optimasi Firebase ke Railway

Perubahan yang Dibuat

Masalah Sebelumnya

  • SDK timeout setiap 60 detik (delay 10s per check)
  • REST API fallback berfungsi tapi lama
  • Tidak ada smart caching/skipping untuk SDK yang gagal

Solusi yang Diimplementasikan

  1. Timeout lebih cepat: 10s → 5s (SDK) & 8s (REST)
  2. 🧠 Smart fallback: Skip SDK setelah 3x gagal berturut
  3. 📊 API Statistics: Track SDK vs REST usage
  4. 🔧 Konsistensi: Semua fungsi pakai timeout yang sama

Cara Deploy ke Railway

# 1. Add & commit changes
git add railway-worker/worker.js
git commit -m "fix: Optimize Firebase connection with smart fallback"

# 2. Push ke repository
git push origin main

# 3. Railway akan auto-deploy (jika connected)

Opsi 2: Manual Deploy via Railway CLI

# 1. Install Railway CLI (jika belum)
npm install -g @railway/cli

# 2. Login ke Railway
railway login

# 3. Link project (jika belum)
railway link

# 4. Deploy
railway up

Opsi 3: Deploy via Railway Dashboard

  1. Buka Railway Dashboard
  2. Pilih project ApsGo Worker
  3. Klik Deployments tab
  4. Klik Deploy Now atau Redeploy
  5. Tunggu deployment selesai (~2-3 menit)

Verifikasi Setelah Deploy

Setelah deploy, cek logs di Railway:

Log yang NORMAL:

✅ [SMART] Skipping SDK (3+ consecutive failures), using REST API directly...
✅ [DEBUG] REST API successful!
📊 API Stats: SDK=0 | REST=15 | Errors=3

Log yang OPTIMAL:

✅ [DEBUG] Attempting SDK fetch...
✅ [DEBUG] REST API successful!
📊 API Stats: SDK=25 | REST=5 | Errors=0

Indikator Performa:

  • Sebelum: Delay ~10s setiap check
  • Sesudah: Delay ~0-5s setiap check
  • Speed up: 2-10x lebih cepat!

Troubleshooting

Jika masih ada warning "SDK fetch failed"

NORMAL - Ini bukan error, sistem bekerja dengan baik via REST API

Jika "Both SDK and REST API failed"

MASALAH - Check:

  1. Firebase credentials masih valid?
  2. Network Railway ke Firebase OK?
  3. Firebase Database Rules allow?

Jika "SMART: Resetting SDK retry counter"

BAGUS - Sistem mencoba reconnect SDK setelah 50 menit

Monitoring

Untuk monitoring jangka panjang, perhatikan:

  1. API Stats ratio:

    • SDK=0, REST=100 → SDK tidak berfungsi sama sekali
    • SDK=70, REST=30 → SDK kadang timeout (normal)
    • SDK=95, REST=5 → SDK sangat baik!
  2. Consecutive Errors:

    • 0-2: Normal fluctuation
    • 3: Smart fallback activated
    • 10: Ada masalah serius dengan SDK

Tips Tambahan

Jika ingin SDK lebih sering retry:

Edit line di worker.js:

const SKIP_SDK_THRESHOLD = 3; // Ubah ke 5 atau 10
const RESET_THRESHOLD_AFTER = 50; // Ubah ke 20 (20 menit)

Jika ingin REST API sebagai default:

const SKIP_SDK_THRESHOLD = 0; // Langsung skip SDK

Status Setelah Optimasi

  • SDK timeout lebih cepat (10s → 5s)
  • Smart fallback implemented
  • API statistics tracking
  • Consistent timeout across all functions
  • Better error handling
  • Performance improved 2-10x

Catatan: Perubahan ini backward compatible - tidak mengubah functionality, hanya optimasi performa.