Environment Dalam Pembangunan Software: Perspektif Bisnes vs Developer
Published:
Updated:
Bila bercakap tentang "environment" dalam pembangunan software, sebenarnya ada dua perspektif yang berbeza.
Ramai orang selalu campur kedua-duanya sekali.
Sedangkan dari sudut bisnes dan sudut developer, maksudnya tidak semestinya sama.
1. Perspektif Bisnes: Local, Staging dan Production
Dari sudut bisnes, environment biasanya merujuk kepada di mana software itu dijalankan.
Contohnya:
Local
Local ialah tempat developer membangunkan sistem.
Di sinilah feature baru dibina, bug fix dan eksperimen dilakukan.
Biasanya sistem running dalam komputer developer sendiri menggunakan Docker, XAMPP, Valet, Herd atau tools lain.
Production
Production ialah sistem sebenar yang digunakan oleh pengguna.
Contohnya:
- sistem tempahan pelanggan
- portal staf
- dashboard dalaman syarikat
Apa yang pengguna/user nampak setiap hari ialah production.
Staging
Staging pula ialah salinan (copy) untuk production yang digunakan untuk tujuan live testing.
Contohnya:
- QA team membuat testing
- stakeholder mencuba feature baru
- client approval sebelum release
Perlu Ke Ada Staging?
Jawapannya bergantung kepada saiz team organisasi anda.
Kalau syarikat besar dengan ramai pengguna dalaman, ramai stakeholder dan proses approval yang ketat, staging hampir menjadi satu keperluan.
Tetapi untuk bisnes kecil yang hanya ada 2 atau 3 orang pengguna, staging kadang-kadang menjadi overkill.
Sebab staging memerlukan:
- server tambahan
- domain tambahan
- database tambahan
- backup tambahan
- pengurusan cybersecurity tambahan
Untuk team kecil, kadang-kadang lebih praktikal sekiranya semua pengguna install Docker dalam komputer masing-masing dan hanya execute git pull (atau guna github desktop) bila ada version baru.
Tiada kos server tambahan dan lebih selamat kerana sistem tidak terdedah ke internet macam server.
Akhir sekali, keputusan untuk ada staging atau tidak perlu ni berdasarkan:
- saiz team anda
- keperluan testing
- tahap keselamatan
- bajet
- proses operasi syarikat
2. Perspektif Developer: Environment Variable dan Rahsia Sistem
Bagi programmer pula, perkataan environment sering membawa maksud yang berbeza.
Ia biasanya merujuk kepada configuration dan environment variable.
Contohnya:
DB_PASSWORD=secret
API_KEY=xxxx
STRIPE_SECRET=xxxx
APP_ENV=production
Maklumat seperti:
- password database
- API key
- token rahsia
- credential payment gateway
biasanya disimpan dalam environment variable dan bukannya terus di dalam source code (hardcoded).
Ini penting untuk keselamatan aplikasi.
Setiap Framework Menguruskan Environment Secara Berbeza
Sebagai contoh, Laravel menyediakan:
APP_ENV=local
APP_ENV=production
Melalui APP_ENV, Laravel boleh menentukan sendiri bagaimana aplikasi perlu behave.
Sebagai contoh:
- debug mode hanya dibuka pada local
- sesetengah command tidak dibenarkan pada production
- error detail tidak display kepada live site
Banyak behaviour telah diuruskan oleh framework ni.
Bagaimana Dengan Next.js atau Nuxt?
Framework JavaScript moden seperti Next.js dan Nuxt memang support environment variables.
Tetapi mereka tidak mempunyai konsep APP_ENV yang begitu ketat seperti Laravel.
Disebabkan itu, developer biasanya perlu menentukan sendiri macam mana aplikasi/software perlu behave.
Contohnya:
- adakah ini demo server?
- adakah ini staging server?
- adakah ini production server?
- patutkah email sebenar dihantar?
- patutkah analytics running?
- patutkah payment gateway sandbox digunakan?
Semua ini perlu direka sendiri oleh team development.
Ia memberikan lebih fleksibiliti, tetapi memerlukan lebih banyak perancangan (planning & architecture desicion).
Sebab itu, bila bercakap tentang "environment", kita perlu jelas sama ada kita sedang bercakap dari sudut bisnes atau dari sudut pembangunan software.
