Belajar RoadRunner - Sejarah, Latar Belakang & Mengapa Membutuhkannya
Episode 1 of 26

Belajar RoadRunner - Sejarah, Latar Belakang & Mengapa Membutuhkannya

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.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Masalah PHP-FPM: Bootstrap per-Request

Sebelum RoadRunner, cara standar menjalankan PHP di production adalah PHP-FPM di belakang Nginx/Apache. Alurnya kurang lebih begini:

100%

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.

Solusi: Long-Running PHP

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).

Lahirnya RoadRunner dan Goridge

RoadRunner dirilis pertama kali pada 2019 oleh tim Spiral. Arsitekturnya:

  • Server (Go): menerima HTTP/gRPC request, mengelola sekumpulan proses PHP sebagai worker pool, dan menyediakan plugin ekosistem (KV, queue, metrics, dll).
  • Worker (PHP): proses PHP persistent yang dibangun sekali lalu melayani ribuan request melalui komunikasi Goridge.

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.

FaktaDetail
PenulisTim Spiral (spiral framework)
Rilis pertama2019
Bahasa serverGo
Bahasa workerPHP
Protokol komunikasiGoridge (Go↔PHP RPC)
PengelolaanOpen source, roadrunner-server org di GitHub

Mengapa RoadRunner Penting di 2026

Pada 2026, RoadRunner sudah matang sebagai app server PHP — bukan sekadar eksperimen. Beberapa alasan:

  1. Framework populer terintegrasi resmi — Laravel memilih RoadRunner sebagai salah satu server resmi Octane, dan Spiral menjadikannya runtime bawaan.
  2. Ekosistem plugin luas — HTTP, gRPC, KV, queue/jobs, metrics, temporal, centrifuge (WebSocket) — semua diakses PHP via RPC.
  3. Production-grade — worker supervision otomatis (restart saat bocor/rusak), graceful shutdown, dan dukungan konfigurasi penuh.
  4. Ekosistem modern PHP — PHP 8.4 dengan JIT membuat worker persistent semakin cepat, dan komunitas mulai meninggalkan pola FPM klasik untuk aplikasi realtime & high-traffic.

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.

RoadRunner vs Alternatif

Untuk menempatkan RoadRunner pada peta, bandingkan dengan alternatif app server PHP:

AspekRoadRunnerFrankenPHPSwoole / OpenSwoole
Bahasa serverGoGo (Caddy)C (PHP extension)
Worker modelProses PHP terpisah (Goridge)Threads PHP di dalam prosesCoroutine di dalam PHP
Integrasi frameworkLaravel Octane, Symfony, SpiralLaravel Octane, SymfonyLaravel Octane, Hyperf
Ekosistem pluginSangat luas (KV, jobs, gRPC, temporal)Terbatas (via Caddy)Bergantung framework
Kompleksitas operasionalWorker proses terpisah, mudah di-containerSingle binarySetup 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.

Timeline Singkat

TahunTonggak
2019RoadRunner rilis pertama oleh tim Spiral, berbasis Goridge
2020Laravel Octane mengadopsi RoadRunner sebagai salah satu server
2021-2023Plugin ekosistem matang: KV, jobs, gRPC, metrics, temporal
2024Rilis stable dengan manajemen config versi 3
2025-2026v2025.1.x — fokus perbaikan keamanan toolchain Go (CVE-2026-32280, CVE-2026-42504) dan upgrade fiber; SIGUSR2 graceful restart sejak v2025.1.8

Penutup

Pada episode 1 ini, kalian telah menelusuri perjalanan RoadRunner dari masalah PHP-FPM hingga menjadi app server PHP modern.

Inti yang harus dibawa pulang:

  • PHP-FPM mem-bootstrap ulang aplikasi setiap request — mahal untuk framework berat.
  • RoadRunner (2019, tim Spiral) memindahkan lapisan server ke Go dengan worker pool PHP persistent.
  • Goridge adalah protokol RPC yang menjembatani Go dan PHP.
  • Di 2026 RoadRunner matang: integrasi Octane/Spiral, plugin luas, dan pengerasan keamanan v2025.1.x.

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!