Press "Enter" to skip to content

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production Laravel

fadli 2

Production Laravel – Sebelum Masuk Ke tahap Production, ada 18 hal yang wajib kamu lakukan untuk meningkatkan Performance dan juga Security aplikasi laravel kamu.

Apa saja itu? Yuk langsung saja kita bahas.

1. Set cache driver ke Redis

Kalau dalam aplikasi kamu terdapat sebuah task process yang lumayan kompleks, sehingga memakan banyak CPU server dan butuh waktu beberapa detik untuk menyelesaikan nya, maka kamu perlu men-caching proses tersebut.

Untuk cara penggunaan cache pada laravel, kamu bisa kunjungi dokumentasi resmi nya disini.

Ketika sudah disimpan di cache, maka proses pengambilan data yang selanjutnya akan lebih cepat, karena sistem membaca dari cache nya.

Pada laravel, tempat untuk penyimpanan cache nya terdiri dari beberapa driver, seperti File, Array, Database, dan Redis.

Pemilihan driver cache yang tepat juga akan sangat berpengaruh terhadap performa aplikasi, berikut adalah gambaran perbandingan dari setiap driver.

Laravel Production

Jika dilihat dari table perbandingan diatas, maka mimin menyarakan untuk menggunakan driver Redis, jika terdapat kendala dalam instalasi redis pada server kamu, minimal kamu bisa gunakan driver yang database.

2. Config Caching

Ketika sudah berada ditahap production, kita wajib melakukan caching terhadap file config nya.

Ketika file config nya sudah di cache, maka aplikasi kita tidak perlu mem-parsing lagi setiap variable yang ada didalam file .env dan juga yang ada didalam file config nya.

Karena setiap key dan value yang ada didalam file config akan tersimpan di cache, maka yang jadi acuan aplikasi adalah setiap data yang ada didalam cache nya, dan ini pasti akan lumayan berpengaruh terhadap performa aplikasi.

Untuk melakukan caching file config cukup dengan menjalankan perintah berikut:

....
php artisan config:cache
....

Jika suatu saat ternyata ada tambahan konfigurasi, aplikasi tidak bisa langsung membaca data konfigurasi yang baru nya.

kamu perlu menghapus cache config nya yang lama, kemudian melakukan ulang caching config nya.

Untuk menghapus cache config nya, bisa menjalankan perintah berikut:

....
php artisan config:clear
....

3. Set Log Level ke “warning”

Saat berada pada mode development, log level nya berada pada posisi “debug”.

Tapi ketika sudah berada pada lingkungan production, kita perlu set log level nya ke “warning”. ini perlu kita lakukan agar tidak terlalu banyak memakan process dan storage.

Karena ketika sudah berada pada level warning, log yang tercatat tidak sebanyak saat kita berada pada level debug.

4. Menghilangkan Depedency Development

Saat kita berada pada mode development, pastinya kita akan banyak menginstall library atau depedency yang berhubungan dengan proses development.

Contoh saja yaitu library debugbar yang berfungsi untuk me-monitoring aplikasi kita saat sedang berada pada proses development.

Baca juga: Monitoring Aplikasi Laravel Saat Development Dengan Laravel Debugbar.

Tapi ketika kita sudah berada pada lingkungan production, library atau depedency tersebut sudah tidak perlu kita gunakan lagi, karena akan menimbulkan proses yang lebih banyak dan dapat meningkatkan kinerja memori, pastinya ini akan berpengaruh terhadap performa aplikasi.

Solusi nya, saat kita menjalankan perintah composer install pada lingkungan production, ada sedikit tambahan flag dibelakang nya agar library atau depedency yang dikhususkan untuk development tidak ikut terinstall.

....
composer install --prefer-dist --no-dev -o
....

5. Jangan panggil variable env secara langsung

Hal kecil tapi lumayan berpengaruh terhadap performa aplikasi, yaitu harap meminimalisir pemanggilan variable .env secara langsung dari luar file config.

Jadi kalau bisa, setiap kali kita ingin memanggil sebuah variable env, mending dibuatkan aja file config tersendiri, baru nanti dari file config tersebut kita panggil variabel .env nya.

Kenapa harus melalui file config? Karena kita bisa melakukan cache terhadap file config, tapi tidak terhadap file .env.

6. Menentukan Queue Driver Yang Tepat

Kalian juga perlu menentukan driver yang tepat untuk menyimpan proses queue/antrian nya, jika sudah berada pada tahap production, disarankan menggunakan redis.

Berikut adalah perbandingan dari masing-masing driver nya:

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production

7. Route Cache

Wajib melakukan cache route ketika berada pada tahap production, hal ini dapat meningkatkan performance 5x lipat.

Tapi jika masih dalam tahap development atau dalam local environment, disarankan untuk tidak melakukan ini, karena setiap ada perubahan route, perlu melakukan clear cache juga, pastinya ini akan merepotkan.

Untuk men-cache route nya, kalian cukup menjalankan perintah berikut:

....
php artisan route:cache
....

8. Menentukan Session Driver Yang Tepat

Driver session yang direkomendasikan saat berada pada lingkungan production adalah menggunakan Database atau Redis.

Berikut perbedaan pada masing-masing driver nya:

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production

9. Menghapus Global Middleware Yang Tidak Digunakan

Kamu perlu menghapus atau meng-comment global Middleware yang sudah tidak digunakan lagi.

Untuk menghapus nya bisa langsung cek didalam file “\App\Http\Kernel”.

10. Melakukan Caching Terhadap View

Secara default, file blade akan selalu dikompilasi setiap kali ada request untuk pemanggilan view tersebut.

Oleh karena itu, kita perlu melakukan caching terhadap view nya dengan menjalankan perintah:

....
php artisan view:cache
....

11. Set App Debug Ke False

Dari sisi keamanan, point ini adalah yang paling penting dan yang paling wajib kalian lakukan.

Bisa dibilang ini adalah level keamanan tertinggi dari setiap aplikasi laravel kita.

Jika ditahap production kita membiarkan nilai APP_DEBUG nya ke true, maka ketika nanti terjadi error, orang lain dapat melihat informasi yang bersifat sensitif yang dimiliki oleh aplikasi kita, misalkan seperti kredensial database, kredensial mail server, dan sebagai nya.

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production Laravel

Hal ini tentu nya sangat berbahaya sekali, oleh karena itu kita perlu memberi nilai APP_DEBUG nya ke false.

Caranya yaitu kalian edit file .env, kemudian cari variable APP_DEBUG, dan set nilai nya ke false.

....
APP_DEBUG=false
....

12. CSRF Protection

Pastikan bahwa aplikasi web kamu terlindungi dari serangan CSRF.

Secara default, laravel sudah menyediakan sebuah middleware dengan nama VerifyCsrfToken yang bertujuan untuk melindungi setiap route dengan method (POST, PUT, PATCH, dan DELETE) dari serangan csrf.

Kalau kamu cek file “App/Http/Kernel.php”, pada middlewareGroups web sudah terpasang middleware VerifyCsrfToken.

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production

Dan jika kita membuat route didalam file web.php, sebetulnya sudah otomatis terlindungi dari serangan CSRF, karena file route tersebut sudah dipasangi middleware web.

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production

Kecuali jika kamu membuat route untuk kebutuhan API atau untuk kebutuhan webhook, maka tidak perlu dipasangi lagi middleware VerifyCsrfToken nya.

13. Mengatur Level Permission File & Folder Nya

Secara umum, semua direktori Laravel harus diatur dengan tingkat permission maksimal 775 dan file yang tidak dapat dieksekusi dengan tingkat izin maksimal 664.

File yang dapat dieksekusi seperti file Artisan harus disediakan dengan tingkat permission maksimal 775.

Berikut adalah acuan permission untuk masing2 folder:

'allowed_permissions' => [
    base_path() => '775',
    app_path() => '775',
    resource_path() => '775',
    storage_path() => '775',
    public_path() => '775',
    config_path() => '775',
    database_path() => '775',
    base_path('routes') => '775',
    app()->bootstrapPath() => '775',
    app()->bootstrapPath('cache') => '775',
    app()->bootstrapPath('app.php') => '664',
    base_path('artisan') => '775',
    public_path('index.php') => '664',
    public_path('server.php') => '664',
],

Jika memberi nilai permission nya lebih daripada yang di atas, maka ini bisa beresiko akun kamu dapat diakses oleh akun yang lain.

Untuk mengatur permission pada cpanel, kamu tinggal klik aja folder nya, kemudian klik button permission yang ada di navbar nya.

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production Laravel

14. Menggunakan Versi Depedency Yang Stable

Sebelum beralih ke tahap production, kalian harus memastikan terlebih dahulu bahwa depedency atau library yang kalian install adalah yang versi stable nya.

Kalau kalian menggunakan versi rilis yang tidak stable, takutnya depedency yang kamu gunakan belum mendapatkan update dari sisi bug ataupun keamanan nya.

Nah untuk mengupdate depedency atau package ke versi yang paling stable, kamu bisa jalankan perintah berikut:

....
composer update --prefer-stable
....

15. Custome error page

Seperti yang kita ketahui bahwasanya laravel memiliki halaman error page nya sendiri.

Misalkan ketika error page not found (404) akan berbentuk seperti ini:

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production Laravel

Atau error 500 (Internal Server Error) yang seperti ini:

18 Hal Yang Wajib Dilakukan Sebelum Masuk Ke Production Laravel

Atau error-error yang lainnya seperti 401, 403, atau 503 pun laravel memiliki halaman error nya sendiri.

Kalau kalian tidak meng-custom halaman error tersebut, maka orang lain/pengguna web tersebut akan mengetahui bahwasanya web tersebut dibuat dengan menggunakan framework laravel.

Jika dilihat dari sisi keamanan nya, seorang developer tidak boleh membocorkan informasi mengenai framework apa yang digunakan agar si pengguna web tersebut tidak mencari celah tentang keamanan nya.

16. Set Folder Cache Dan Storage

Folder Cache dan Folder Storage harus bersifat writeable.

Jika folder Storage tidak bersifat writeable, maka sistem tidak akan bisa melakukan penyimpanan file.

Sementara jika folder Cache tidak bersifat writeable, maka sistem tidak akan bisa menyimpan cache.

Untuk memberi permission, tinggal jalankan perintah seperti berikut:

sudo chmod -R ug+w storage
sudo chmod -R ug+w bootstrap/cache

17. Env example

Secara default, file .env tidak akan ikut tercommit, karena masuk kedalam list .gitignore.

Oleh karena nya, kalian perlu mengcopy semua variable yang ada di file .env kedalam file .env.example, agar nanti pengembang selanjutnya juga bisa mengetahui variable env apa saja yang di define.

Itu tadi 17 hal yang wajib kamu lakukan sebelum masuk kedalam tahap production.

Semoga bermanfaat, terima kasih..

Support Us

Jika artikel ini bermanfaat untuk kamu, membantu menyelesaikan masalah yang sedang kamu hadapi, kamu juga bisa dukung kami dengan mengunjungi halaman berikut: https://saweria.co/sangcahayaid

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: