
NGRadio: Optimasi Arsitektur & Real-Time Streaming
Menyelamatkan aplikasi radio streaming dari beban server yang kritis dengan merombak arsitektur monolithic (CI2) menjadi semi-microservice. Menghapus sistem Ajax Polling usang dan menggantinya dengan WebSockets untuk efisiensi real-time, diselesaikan dalam waktu kurang dari 2 minggu.
Tantangan & Masalah Sistem
Sistem lama mencekik server (cPanel) karena menggunakan metode Ajax Polling untuk fitur chat, request lagu, dan status siaran. Ratusan pendengar menarik data dari server secara bersamaan setiap beberapa detik, membuat resource server terkuras habis untuk tugas yang tidak efisien. Di sisi lain, infrastruktur yang tersedia sangat terbatas (shared hosting).
Solusi & Rekayasa Arsitektur
Saya memisahkan arsitektur menjadi dua bagian: Public Page yang super ringan menggunakan Vue.js (SSG) dan Admin Panel berbasis Laravel 10 dengan sistem akses RBAC. Saya membuang Ajax Polling dan mengalihkan seluruh fitur real-time menggunakan Pusher. Saya juga mengintegrasikan bank lagu dari Centova Cast (via import Excel) dan membangun Auto-Kill Switch menggunakan Laravel Scheduler & Cronjobs untuk mematikan status siaran secara otomatis jika penyiar lupa menekan tombol off-air.