在軟體開發流程中,Development (開發)、Staging (預覽/預演) 與 Production (正式生產) 是三個核心環境,其主要差異在於目的、資料真實性以及對象。
以下是針對這三種環境的差異與建議配置:
1. 環境差異概覽
| 特性 [1, 2, 3, 4, 5] | Development (Dev) | Staging (Stg / Pre-prod) | Production (Prod) |
|---|---|---|---|
| 主要目的 | 撰寫程式碼、功能實作、初步除錯 | 最終品質保證 (QA)、使用者驗收測試 (UAT) | 提供服務給最終使用者 |
| 資料來源 | 模擬資料、假資料 | 正式環境資料的去識別化副本 | 真實使用者數據 |
| 環境穩定度 | 不穩定,程式碼經常變動 | 高度穩定,應與正式環境 100% 相同 | 極高,追求 99.9% 以上可用性 |
| 使用者 | 開發人員 | QA 工程師、產品經理、客戶 | 終端用戶 |
2. 各環境詳細說明與建議
Development (開發環境)
- 用途:這是開發者的「實驗室」,可以自由修改、測試新功能或修復 Bug,即使程式碼崩潰也不會影響他人。
- 建議:
- 本地化:每位開發者應具備自己的本地開發計算機(實體或虛擬)。
- 工具選用:使用 Visual Studio Code、JetBrains 等 IDE 提高效率。 [2, 6, 7, 8, 9]
Staging (預覽環境)
- 用途:此環境是正式上線前的最後一道防線,確保軟體在「模擬真實情境」下運作正常。
- 建議:
- 環境同步:硬體規格、作業系統版本、資料庫配置必須與 Production 保持一致,避免「在開發機上會動,但在雲端不會動」的問題。
- 權限控管:雖然是測試環境,但若涉及部分真實資料,應嚴格限制存取權限。 [1, 10, 11, 12, 13]
Production (正式環境)
- 用途:這是產品實際運行的環境,任何改動都必須經過嚴格審核。
- 建議:
- 自動化部署:建議建立 CI/CD Pipeline(如 GitHub Actions 或 GitLab CI),減少人為部署錯誤。
- 環境變數管理:嚴禁將 API Key 或資料庫密碼寫死在程式碼中,應使用環境變數或秘密管理工具。 [1, 14, 15, 16, 17]
3. 實務流程建議
- Git Flow 管理:開發者在
feature分支開發,合併至develop分支後自動部署到 Dev 環境;確認功能完備後合併至release分支部署到 Staging。 - QA 介入點:QA 人員應在 Staging 環境進行完整的功能測試與回歸測試,而非在頻繁變動的 Dev 環境。
- 基礎架構即程式碼 (IaC):若公司使用 AWS 或 Azure,建議使用 IaC 工具(如 Terraform)來統一管理不同環境的基礎設施,確保各環境配置的一致性。 [3, 4, 15, 18, 19]
[1] https://www.startupterrace.com
[4] https://ithelp.ithome.com.tw
[6] https://learn.microsoft.com
[10] https://wutingy.medium.com
[12] https://ithelp.ithome.com.tw
[13] https://ithelp.ithome.com.tw
[15] https://medium.com
[16] https://hackmd.io
[17] https://medium.com
[18] https://medium.com