Menelusuri perjalanan RoadRunner dari masalah bootstrap PHP-FPM per-request hingga lahirnya aplikasi server PHP berbasis Go pada 2019 oleh tim Spiral, memahami peran Goridge sebagai jembatan Go ke PHP, dan mengapa pada 2026 RoadRunner menjadi pilihan app server modern bersama Laravel Octane dan Spiral.

Setelah di episode 0 kita menyiapkan environment — memastikan PHP 8.3+, Composer, dan RoadRunner v2025.1.15 terinstall — pada episode ini kita menarik napas sejenak dari hands-on dan memahami mengapa RoadRunner ada. Sejarah sebuah teknologi mungkin terasa tidak penting, padahal justru di sanalah letak alasan mengapa desainnya seperti sekarang.
Mengapa harus memahami sejarah RoadRunner? Karena RoadRunner tidak lahir dari ruang rapat vendor besar, melainkan dari frustrasi nyata para engineer PHP terhadap cost of bootstrap. Memahami asal-usulnya akan menjelaskan keputusan-keputusan desainnya — mengapa ia memakai worker pool, mengapa ada protokol Goridge, dan mengapa ia menjadi fondasi aplikasi PHP modern.
Sebelum RoadRunner, cara standar menjalankan PHP di production adalah PHP-FPM di belakang Nginx/Apache. Alurnya kurang lebih begini:
Masalah utamanya bukan kecepatan CPU eksekusi, melainkan bahwa setiap request mengulang bootstrap aplikasi dari nol: memuat composer autoloader, membaca config, membangun container/DI, menghubungkan ke database, dan menyusun framework. Untuk framework berat seperti Laravel atau Symfony, ini bisa memakan puluhan hingga ratusan milidetik — sebelum satu baris logika bisnis dijalankan. Di bawah beban tinggi, CPU justru habis untuk pekerjaan berulang yang sebenarnya bisa dilakukan sekali.
Gagasan "long-running process" untuk PHP bukan hal baru — Swoole dan Workerman sudah ada lebih dulu. Namun Swoole menjalankan PHP sebagai runtime C yang menambatkan kalian ke ekosistemnya, dan workerman kurang matang untuk skala enterprise. Tim Spiral — penulis framework PHP Spiral — mengambil pendekatan berbeda pada 2019: biarkan Go menangani hal yang Go paling baik (jaringan, konkurensi, plugin), dan biarkan PHP menangani yang PHP paling baik (logika bisnis, ekosistem).
RoadRunner dirilis pertama kali pada 2019 oleh tim Spiral. Arsitekturnya:
Goridge adalah lapisan protokol RPC yang menjembatani Go dan PHP. Ia memungkinkan Go memanggil kode PHP dan sebaliknya, dengan encoding biner efisien (dulu berbasis binary, kini berbasis protobuf). Inilah yang membuat PHP bisa "hidup" sebagai service worker di bawah kendali server Go.
| Fakta | Detail |
|---|---|
| Penulis | Tim Spiral (spiral framework) |
| Rilis pertama | 2019 |
| Bahasa server | Go |
| Bahasa worker | PHP |
| Protokol komunikasi | Goridge (Go↔PHP RPC) |
| Pengelolaan | Open source, roadrunner-server org di GitHub |
Pada 2026, RoadRunner sudah matang sebagai app server PHP — bukan sekadar eksperimen. Beberapa alasan:
RoadRunner tidak menggantikan Nginx sepenuhnya — banyak arsitektur tetap menaruh Nginx/Caddy sebagai reverse proxy di depannya (kita bahas di episode 15). Yang ia gantikan adalah lapisan PHP-FPM + ekosistem proses per-request.
Untuk menempatkan RoadRunner pada peta, bandingkan dengan alternatif app server PHP:
| Aspek | RoadRunner | FrankenPHP | Swoole / OpenSwoole |
|---|---|---|---|
| Bahasa server | Go | Go (Caddy) | C (PHP extension) |
| Worker model | Proses PHP terpisah (Goridge) | Threads PHP di dalam proses | Coroutine di dalam PHP |
| Integrasi framework | Laravel Octane, Symfony, Spiral | Laravel Octane, Symfony | Laravel Octane, Hyperf |
| Ekosistem plugin | Sangat luas (KV, jobs, gRPC, temporal) | Terbatas (via Caddy) | Bergantung framework |
| Kompleksitas operasional | Worker proses terpisah, mudah di-container | Single binary | Setup extension dan config rumit |
Poin kuncinya: RoadRunner menempatkan batas yang bersih antara jaringan/konkurensi (Go) dan logika bisnis (PHP). Kalian tidak perlu menulis ulang aplikasi ke coroutine model — PHP kalian tetap PHP, hanya dijalankan sebagai worker persistent.
| Tahun | Tonggak |
|---|---|
| 2019 | RoadRunner rilis pertama oleh tim Spiral, berbasis Goridge |
| 2020 | Laravel Octane mengadopsi RoadRunner sebagai salah satu server |
| 2021-2023 | Plugin ekosistem matang: KV, jobs, gRPC, metrics, temporal |
| 2024 | Rilis stable dengan manajemen config versi 3 |
| 2025-2026 | v2025.1.x — fokus perbaikan keamanan toolchain Go (CVE-2026-32280, CVE-2026-42504) dan upgrade fiber; SIGUSR2 graceful restart sejak v2025.1.8 |
Pada episode 1 ini, kalian telah menelusuri perjalanan RoadRunner dari masalah PHP-FPM hingga menjadi app server PHP modern.
Inti yang harus dibawa pulang:
Di episode 2 selanjutnya, kita akan membedah arsitektur dan konsep utama RoadRunner — peran binary rr sebagai server, bagaimana .rr.yaml mengatur semuanya, cara kerja pipes/Unix socket untuk komunikasi worker, dan siklus hidup worker dari lahir sampai di-restart supervisor. Sampai jumpa di episode 2!