Kenapa Sudah Ada .env Tapi Masih Perlu Struct Config di Go?

 

Dalam pengembangan aplikasi backend menggunakan Go, kita sering menggunakan file .env untuk menyimpan konfigurasi seperti nama database, password, port server, hingga URL API. Pertanyaannya: kalau sudah ada .env, kenapa masih perlu membuat struct Config?
Jawabannya sebenarnya sederhana karena .env dan Config memiliki fungsi yang berbeda.

 

.env Adalah Tempat Menyimpan Data Konfigurasi di Luar Aplikasi

File .env merupakan tempat menyimpan variabel lingkungan (environment variables). Tujuannya:

  • menyimpan konfigurasi secara aman di luar source code,

  • memudahkan perubahan tanpa perlu mengubah kode,

  • mencegah data sensitif (password, secret key) masuk ke Git.

Contoh isi .env:

DB_HOST=localhost
DB_USER=admin
DB_PASSWORD=123

.env adalah sumber data. Namun .env tidak bisa langsung dipakai oleh kode Go tanpa dibaca terlebih dahulu.

 

godotenv.Load() Mengambil Isi .env

Fungsi ini bertugas membaca .env dan memasukkan isinya ke dalam variabel environment.

Seperti membuka catatan konfigurasi, lalu menaruh semua nilainya ke dalam memori aplikasi.

 

Struct Config Adalah Wadah Resmi di Dalam Kode Go

Walaupun .env sudah dibaca, variabel-variabelnya tetap tersebar.
Tiap kali butuh data, kamu harus menulis:

os.Getenv("DB_HOST")
os.Getenv("SERVER_PORT")
os.Getenv("JWT_SECRET")

Ini rawan salah ketik, kurang efisien, dan tidak terorganisir.

Karena itu, dibuatlah struct Config:

type Config struct {
    DBHost      string
    DBPort      string
    DBUser      string
    DBPassword  string
    DBName      string
    ServerPort  string
    JWTSecret   string
    BaseURL     string
    FrontendURL string
}

Struct ini berperan sebagai dompet/map tempat menyimpan seluruh konfigurasi dalam satu objek terstruktur.

Setelah diproses, kamu cukup mengaksesnya seperti ini:

config.DBHost
config.ServerPort
config.JWTSecret

Rapi, aman, dan mudah digunakan.

 

Kenapa Cara Ini Lebih Baik?

✔ Menghindari salah ketik variabel environment

Karena semua sudah terkumpul dalam satu struct.

✔ Lebih mudah untuk unit testing

Cukup siapkan satu Config palsu (mock), tidak perlu membuat .env lain.

✔ Lebih aman

Data sensitif tidak tercecer ke seluruh kode.

✔ Lebih mudah dirawat

Jika suatu saat menambah variabel baru, tinggal menambah satu baris di struct.

 

Kesimpulan

  • .env = tempat menyimpan konfigurasi di luar aplikasi

  • Config struct = wadah untuk menyimpan konfigurasi di dalam aplikasi

  • godotenv.Load() = jembatan yang memindahkan data dari .env ke struct

Dengan pola ini, aplikasi Go akan jauh lebih rapi, mudah dipelihara, dan minim error.




0 Comments:

Posting Komentar