Merilis, dan Bekerja Sebagai Developer · 2/8
Environment dan konfigurasi
Local, staging, production — kode sama, pengaturan berbeda, tanpa kejutan.
Baca 22 menit
Setelah pelajaran ini kamu bisa
- Menjelaskan setiap environment itu untuk apa
- Menyelesaikan konfigurasi dalam urutan yang bisa diprediksi
- Gagal saat startup alih-alih di tengah request
- Mengelola rahasia tanpa menaruhnya di git
| Environment | Untuk | Data |
|---|---|---|
| local | Mesinmu, saat kamu bekerja | Palsu, bisa dibuang |
| preview | Satu per pull request, untuk review | Palsu atau salinan |
| staging | Gladi bersih yang menyerupai production | Realistis, dianonimkan |
| production | Pengguna sungguhan | Sungguhan, tidak tergantikan |
Urutan penyelesaian
Konfigurasi datang dari beberapa tempat sekaligus, dan urutannya harus tetap dan terdokumentasi. Kalau tidak, tidak ada yang bisa menjawab "kenapa nilainya 3000 di sini dan 8080 di sana?".
Penyelesaian config dengan prioritas yang tetap, plus pemeriksaan saat startup. Ubah lapisannya dan lihat nilai mana yang menang.
Hasil
Tekan Jalankan untuk melihat hasilnya.
Ini jalan di browser kamu, di dalam sandbox. Apa pun yang kamu tulis di sini tidak bisa merusak situs.
Rahasia
- Jangan pernah di git. Tidak di sebuah commit, tidak di komentar, tidak di fixture test. Riwayat git itu permanen — rahasia yang sudah di-commit sekali harus diganti, meski kamu menghapusnya di commit berikutnya.
- Jangan di `NEXT_PUBLIC_`. Awalan itu berarti "tanam ini ke bundle browser", seperti dijelaskan modul Node.
- Di penyimpanan rahasia platform-nya. Environment variable Vercel, Docker secret, KMS cloud — tempat yang punya kontrol akses dan log audit.
- Bisa diganti. Anggap setiap rahasia suatu hari perlu diganti. Kalau menggantinya butuh perubahan kode, itu tidak akan terjadi tepat waktu.
- Berbeda per environment. Staging dan production tidak boleh berbagi kunci, kalau tidak bug di staging jadi insiden production.
Tugas praktik
Buat .env.example untuk proyek ini yang mendaftar setiap variable yang dibacanya, dengan nilai placeholder dan komentar untuk masing-masingnya. Cari process.env di codebase-nya untuk menemukan semuanya. Lalu pastikan .env.local diabaikan git sementara .env.example tidak, dan jelaskan kenapa pemisahan itu benar.
Hasil yang diharapkan
Minimal DATABASE_PATH dan NODE_ENV, terdokumentasi tanpa nilai sungguhan.
Cek pemahaman
Pilih jawaban dulu