UNIPOLUNIPOL

Jurnal Ilmiah Sistem Informasi dan Teknik Informatika (JISTI)Jurnal Ilmiah Sistem Informasi dan Teknik Informatika (JISTI)

Penelitian ini menyajikan analisis komparatif performa tiga runtime backend Go, Bun, dan PHP dalam menangani HTTP request dengan beban data besar dari database MySQL. Pengujian dilakukan menggunakan Grafana k6 dengan skenario ramp up hingga 250-300 virtual users selama 6-7 menit, di deploy pada platform Railway.app dengan spesifikasi 8 vCPU dan 8 GB RAM. Tiga skenario diuji: (1) query 10.000 baris × 40 field dengan 250 VU, (2) query 5.000 baris × 40 field dengan 250 VU, dan (3) query 1.000 baris × 50 field dengan 300 VU. Hasil menunjukkan bahwa Go secara konsisten unggul di seluruh skenario dengan throughput tertinggi mencapai 19,3 req/s pada skenario 10.000 baris dan konsumsi memori yang efisien (43-155 MB). Bun berada di posisi kedua dengan throughput 2,1-3,04 req/s namun mengalami konsumsi memori tertinggi (116-425 MB) akibat double allocation pada proses JSON.stringify(). PHP menunjukkan throughput terendah (3,5-4,8 req/s) dengan error rate yang sangat tinggi (81,4-99,9%) akibat keterbatasan arsitektur PHP-FPM yang sinkronus dalam menangani concurrent requests. Root cause analysis mengidentifikasi bahwa streaming JSON encoder Go, model goroutine yang ringan, dan garbage collector yang prediktabel menjadi faktor utama keunggulan performa Go. Temuan penelitian memberikan panduan empiris bagi pengembang dalam memilih runtime yang sesuai berdasarkan karakteristik beban data dan tingkat konkurensi yang dibutuhkan.

Go secara konsisten mengungguli Bun dan PHP dalam skenario data-heavy, mencatat throughput 19,3 req/s pada query 10.000 baris dengan 250 VU 7× lebih tinggi dari Bun (2,75 req/s) dan 5,5× dari PHP (3,5 req/s).Streaming JSON encoder, model goroutine ringan, dan GC yang prediktabel merupakan faktor teknis utama keunggulan Go.Bun berada di posisi kedua dengan throughput 2,1-3,04 req/s namun mengalami konsumsi memori tertinggi (116-425 MB) akibat double allocation pada proses JSON.Bun lebih sesuai untuk API dengan payload sedang hingga kecil dan membutuhkan optimasi memori sebelum digunakan pada skala besar.PHP menunjukkan throughput terendah (3,5 req/s) dengan error rate sangat tinggi (81-99%) pada skenario beban concurrent tinggi, disebabkan oleh keterbatasan arsitektur PHP-FPM sinkronus.PHP tetap kompetitif pada dataset kecil (1.000 baris) dengan throughput 4,8 req/s mengalahkan Go dan Bun, namun dengan error rate yang masih sangat tinggi (99,7%).Bottleneck database (MySQL melalui koneksi internet dengan latency 20-100 ms) terbukti menjadi faktor pembatas yang signifikan pada seluruh runtime, terutama pada skenario 300 VU.Optimasi infrastruktur database berpotensi memberikan peningkatan performa 3-10× yang melampaui perbedaan antar runtime.Penelitian lanjutan disarankan untuk menguji runtime yang sama dengan konfigurasi database dalam jaringan privat (tanpa latency internet), implementasi streaming response pada Bun, PHP dengan Octane Swoole, serta variasi connection pool size yang berbeda untuk mengukur dampak optimasi infrastruktur terhadap performa masing-masing runtime.

Berdasarkan hasil penelitian, disarankan untuk melakukan studi lanjutan dengan menguji runtime yang sama dalam konfigurasi database dalam jaringan privat (tanpa latency internet) untuk mengukur dampak optimasi infrastruktur terhadap performa masing-masing runtime. Selain itu, penelitian lanjutan juga dapat fokus pada implementasi streaming response pada Bun dan PHP dengan Octane Swoole untuk meningkatkan efisiensi memori dan throughput. Variasi connection pool size yang berbeda juga dapat menjadi fokus penelitian untuk mengoptimalkan performa runtime dalam menangani concurrent requests.

Read online
File size464.13 KB
Pages12
DMCAReport

Related /

ads-block-test