CategoriesLaravelProgramming

Meningkatkan Performa Aplikasi Laravel dengan Octane 

Octane adalah server PHP yang dioptimalkan untuk Laravel. Mampu meningkatkan performa aplikasi secara drastis. Serta menggunakan teknologi modern seperti Swoole, RoadRunner, dan frankenPHP.

  
Keunggulan Menggunakan Laravel Octane

  • Respons aplikasi menjadi lebih cepat. 
  • Mampu menangani lebih banyak traffik sekaligus. 
  • Mengurangi beban server dan biaya infrastruktur. 
  • Mudah diintegrasikan dengan aplikasi Laravel yang ada. 

Kenapa Laravel Octane Cepat ?

  • Octane menggunakan server aplikasi persisten seperti frankenPHP, Swoole atau RoadRunner. Server ini berjalan terus-menerus dan dapat menangani banyak permintaan secara bersamaan tanpa harus memulai proses PHP baru untuk setiap permintaan. Hal ini mengurangi overhead secara signifikan. 
  • Octane juga mampu menjalankan beberapa permintaan secara bersamaan dalam satu proses, sehingga meningkatkan throughput dan mengurangi latency. 

Instalasi Laravel Octane Pada Aplikasi Laravel

Pertama jalankan perintah

composer require laravel/octane

Perintah tersebut akan menambahkan dependency octane pada composer kita 

Setelah selesai proses penginstallan octane, Meskipun dependency octane pada composer telah di install, octane belum bisa berjalan sepenuhnya, ini dikarenakan octane membutuhkan server khusus untuk membungkus aplikasi laravel kita. Octane menyediakan beberapa pilihan server diantaranya  frankenphp, roadrunner, dan swoole 

Untuk menginstall server, jalankan perintah

php artisan octane:install

Pada tutorial ini, saya memilih menggunakan server roadrunner.

untuk roadrunner dan frankenphp di tulis menggunakan go dan tidak perlu menjalankan konfigurasi khusus untuk menginstall mereka, karena octane akan otomatis mendownload mereka 

Sedangkan untuk swoole yang di tulis menggunakan c/c++, ada konfigurasi khusus yaitu menambahkan php extension swoole 

Selanjutnya menginstall roadrunner dependency, pilih Yes. Composer akan mendownload dependency yang di perlukan dan menambahkannya di composer.json 

Setelah menginstall dependency roadrunner berhasil, kita akan diminta untuk mendownload file binary roadrunner (karna roadrunner di build menggunakan go. dan go support binary build). 

Pilih Yes untuk mendownload roadrunner binary file. Tunggu hingga proses download selesai. Dan laravel octane siap dijalankan

Menjalankan Aplikasi Laravel Octane 

Setelah proses penginstalan selesai, kini waktunya menjalankan aplikasi laravel, Berbeda dengan aplikasi laravel biasa, dimana untuk menjalankan aplikasi, kita menggunakan perintah php artisan serve 

pada laravel octane, kita menjalankan aplikasi dengan perintah

php artisan octane:start 

Selesai, kita berhasil menjalankan aplikasi laravel octane dengan server roadrunner. (saya sengaja menggunakan port 8001 karna port 8000 telah saya pakai)

Benchmark/Perbandingan Aplikasi Laravel Biasa, Dengan Aplikasi Laravel Menggunakan Octane

meskipun aplikasi kita telah bisa menggunakan roadrunner sebagai server, kita masih tetap bisa menjalankan aplikasi laravel biasa (tanpa roadrunner server / tidak pakai octane). 
 
jadi untuk membandingkan performa antara laravel biasa dengan laravel octane, tidak usah membuat aplikasi baru, cukup menjalankan aplikasi pada port yang berbeda dengan perintah masing – masing 

php artisan serve untuk menjalankan aplikasi laravel biasa pada port 8000 (port default) 

php artisan octane:start –port 8001 untuk menjalankan aplikasi laravel dengan octane pada port 8001 (karna port 8000 telah terpakai) 

Setelah menjalankan masing masing aplikasi, kini saatnya melakukan benchmarking kedua aplikasi tersebut, 

Saya menggunakan program wrk untuk melakukan benchmark nya 

wrk -c 150 -d 5 -t 4  http://127.0.0.1:8000 

Perintah ini akan menjalankan request sebanyak 150 kali selama 5 detik dengan menggunakan 4 thread pada masing masing aplikasi (sesuaikan portnya) 

Dapat dilihat pada hasil benchmarking, aplikasi yang menggunakan octane (kiri) mendapatkan : 
505.28 request/second 
16.91MB transfer/second 

Sedangkan aplikasi yang tidak menggunakan octane (kanan) hanya mendapatkan : 
95.99 request/second 
 3.21MB transfer/second 

kenaikan yang dialami aplikasi kita untuk penanganan request sekitar  426.04%, menakjubkan bukan ?! 

Kapan Menggunakan Octane 

  • Aplikasi dengan beban tinggi: Jika aplikasi kita sering mengalami lonjakan trafik, octane dapat membantu meningkatkan skalabilitas dan kinerja. 
  • Aplikasi real-time: Octane sangat cocok untuk aplikasi yang membutuhkan respons waktu yang sangat cepat, seperti aplikasi chat atau game online. 
  • Aplikasi yang membutuhkan kinerja tinggi: Jika Anda ingin memaksimalkan kinerja aplikasi laravel Anda, Octane adalah pilihan yang tepat. 

Kekurangan Menggunakan Octane

  • Rentan terhadap memory leaks : karna server octane (roadrunner, swool, frankenphp) akan menjalankan aplikasi sekali, dan di taruh di memory, aplikasi menjadi rentan terhadap memory leaks. Meskipun itu tergantung dari kodingan developer pada aplikasinya. https://laravel.com/docs/11.x/octane#managing-memory-leaks 
  • Konfigurasi ekstra saat implementasi dependency injection laravel :  menurut dokumentasi di laravel, aplikasi yang menggunakan octane butuh konfigurasi ekstra saat mengimplementasikan dependency injection. Untuk lebih jelasnya bisa melihat dokumentasi laravel di https://laravel.com/docs/11.x/octane#dependency-injection-and-octane