Lompat ke konten
Kembali ke modul

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
EnvironmentUntukData
localMesinmu, saat kamu bekerjaPalsu, bisa dibuang
previewSatu per pull request, untuk reviewPalsu atau salinan
stagingGladi bersih yang menyerupai productionRealistis, dianonimkan
productionPengguna sungguhanSungguhan, 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?".

Coba sendiri

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

Sebuah rahasia yang wajib tidak ada di production. Kapan aplikasinya sebaiknya mengetahuinya?

Pilih jawaban dulu