Tidak ada perbedaan antara pengembangan dan produksi di Node.js, yaitu, tidak ada pengaturan khusus yang perlu Anda terapkan agar Node.js berfungsi dalam konfigurasi produksi. Namun, beberapa pustaka di registri npm mengenali penggunaan variabel NODE_ENV dan menjadikannya sebagai pengaturan pengembangan secara default. Selalu jalankan Node.js Anda dengan set NODE_ENV=production.
Cara populer untuk mengonfigurasi aplikasi Anda adalah dengan menggunakan metodologi dua belas faktor.
NODE_ENV dalam Express
Dalam kerangka kerja Express yang sangat populer, pengaturan NODE_ENV ke produksi umumnya memastikan bahwa:
pencatatan dijaga pada tingkat minimum yang penting
lebih banyak tingkat caching dilakukan untuk mengoptimalkan kinerja
Hal ini biasanya dilakukan dengan menjalankan perintah
export NODE_ENV=production
di shell, tetapi lebih baik meletakkannya di berkas konfigurasi shell Anda (misalnya .bash_profile dengan shell Bash) karena jika tidak, pengaturan tidak akan bertahan jika sistem direstart.
Anda juga dapat menerapkan variabel lingkungan dengan menambahkannya di depan perintah inisialisasi aplikasi Anda:
NODE_ENV=production node app.js
Misalnya, dalam aplikasi Express, Anda dapat menggunakan ini untuk mengatur penanganan kesalahan yang berbeda per lingkungan:
if (process.env.NODE_ENV === 'development') {
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
}
if (process.env.NODE_ENV === 'production') {
app.use(express.errorHandler());
}
Misalnya Pug, pustaka templating yang digunakan oleh Express, dikompilasi dalam mode debug jika NODE_ENV tidak disetel ke produksi. Tampilan Express dikompilasi dalam setiap permintaan dalam mode pengembangan, sedangkan dalam produksi, tampilan tersebut di-cache. Ada banyak contoh lainnya.
Variabel lingkungan ini merupakan konvensi yang banyak digunakan dalam pustaka eksternal, tetapi tidak dalam Node.js itu sendiri.
Mengapa NODE_ENV dianggap sebagai antipola?
Lingkungan adalah platform digital atau sistem tempat para insinyur dapat membangun, menguji, menyebarkan, dan mengelola produk perangkat lunak. Secara konvensional, ada empat tahap atau jenis lingkungan tempat aplikasi kita dijalankan:
- Pengembangan
- Pengujian
- Pementasan
- Produksi
Masalah mendasar NODE_ENV berasal dari pengembang yang menggabungkan pengoptimalan dan perilaku perangkat lunak dengan lingkungan tempat perangkat lunak mereka berjalan. Hasilnya adalah kode seperti berikut:
if (process.env.NODE_ENV === 'development') {
// ...
}
if (process.env.NODE_ENV === 'production') {
// ...
}
if (['production', 'staging'].includes(process.env.NODE_ENV)) {
// ...
}
Meskipun ini mungkin terlihat tidak berbahaya, hal ini membuat lingkungan produksi dan pementasan berbeda, sehingga membuat pengujian yang andal menjadi mustahil. Misalnya, pengujian dan fungsionalitas produk Anda dapat berhasil saat NODE_ENV ditetapkan ke pengembangan tetapi gagal saat menetapkan NODE_ENV ke produksi. Oleh karena itu, menetapkan NODE_ENV ke apa pun selain produksi dianggap sebagai antipola.
0 Comments