1. 修改程式碼
就像我之前說的,軟體開發基本上就是在程式碼裡做一些小改動。這個流程已經被數百萬的程式設計師持續做了幾十年,結果就是它變得非常成熟、標準化,甚至有很多正式的規範。
用來存放程式碼的專用工具叫做 Git。Git 是一個分散式版本控制系統。它不只是存放程式碼,更會追蹤所有的變更,幫助團隊協作,不會互相干擾 🤝。
有了 Git,開發者可以建立不同的專案版本(branch),完整保存所有變更歷史,甚至可以回到過去的任何一個點。就像是程式碼的時光機!Git 還能合併變更、解決衝突,所以它已經成為現代團隊合作的核心工具之一。👩💻
2. 編譯專案
在測試或上傳到伺服器之前,必須先把專案編譯。
🏗️ 專案編譯就是把原始碼轉換成可執行檔或其他可以運行的格式,通常還會包含測試和部署的步驟。這是軟體開發的關鍵環節,確保你的程式可以正常運作。
編譯不只是單純的轉換,雖然轉換常常是其中一部分。完成後,你可能會得到數十甚至數百個檔案,接著要把它們傳到不同的伺服器上。
常見的編譯工具有:
- ☕ Maven 和 Gradle — 在 Java 項目中很常用,用來管理依賴和編譯流程。
- 🐜 Apache Ant — 另一個 Java 編譯工具,提供很高的彈性來寫自訂的編譯腳本。
- 🖥️ MSBuild — 用來編譯用 Microsoft Visual Studio 建立的專案。
- ⚙️ Make — 傳統的編譯工具,用 Makefile 定義規則,特別在 C 和 C++ 項目中很流行。
- 🌐 Webpack — 常用於打包 JavaScript 應用,管理模組和依賴。
- 📜 Gulp 和 Grunt — 自動化常見任務的工具,比如壓縮檔案、轉換 SCSS 為 CSS 等。
還有一些高階的打包工具,稍後會提到。
3. CI/CD
🔄 CI/CD(Continuous Integration / Continuous Delivery) — 一種流程,讓團隊可以持續合併所有分支的變更到主幹,並自動測試和部署。這樣可以快速找到問題並修正,提高開發效率和速度。
其中一個很常用但已經有點老的 CI/CD 工具是 Jenkins。如果你在小公司工作,80% 的機率會用到它。
🤖 Jenkins — 一個很受歡迎的自動化系統,用來做 CI/CD。它可以自動化建構、測試、部署等流程,讓你的程式碼品質更好,開發速度更快。
如果進到大公司,還有其他五個選擇:
- 🚦 TeamCity — JetBrains 出品的商業級 CI 系統,跟開發和測試環境整合得很緊密。
- 📝 GitLab CI — GitLab 內建的 CI/CD 功能,用 YAML 配置,設定很方便。
- ☁️ CircleCI — 雲端服務,支援自動測試和部署,適合多專案管理。
- 🦑 Travis CI — 早期的雲端 CI 服務,很多開源專案都用它,跟 GitHub 整合很順。
- 🎍 Bamboo — Atlassian 的產品,跟 Jira、Bitbucket 配合得很好。
不用你全都會用,通常公司會有專門的 DevOps 團隊來設定這些流程。你只要知道它們存在,聽到 Jenkins、CI/CD 或「continuous integration」就知道在講什麼就好。
4. 將專案部署到伺服器
寫完專案還不夠,還要讓它跑到你的伺服器上。部署(deploy)就是把你的 web 應用放到伺服器上,讓用戶可以透過網路存取 🚚。
這個流程包含把專案檔案傳到伺服器、設定伺服器環境、資料庫、依賴套件,還有調整網路和安全設定 😅。
你覺得你的程式碼會自己跑到伺服器嗎?有人會幫你傳嗎?還是你會用 SSH 連到遠端伺服器,傳幾個檔案,自己設定?別擔心:現在已經沒那麼多人這樣做了。現在有 Docker 了。
🐳 Docker — 一個用來開發、傳送和運行應用的容器平台。它可以把你的應用和所有依賴打包在一起,形成一個獨立的容器,讓環境一致性變得超方便。從開發到測試再到正式環境都可以用同一個容器,省時又省心。
用 Docker,你可以把專案打包成 Docker container。這就像一台虛擬機一樣。
雖然很多 Docker 的教學會說它是「虛擬機」,但其實它更像是一個輕量級的虛擬環境。只分攤主機的核心,不像傳統的虛擬機那樣需要完整的作業系統,速度快又佔資源少 ⚡。
用 Docker 來部署專案,流程變得超簡單,可靠性也大大提升。專案打包成 Docker container,隨時可以搬來搬去,在哪台支援 Docker 的系統上都能跑 🚢。
這樣就不用擔心不同伺服器環境不一樣的問題,也可以很容易擴展:需要更多資源就多啟幾個 container,負載降低就關掉一些。大家都轉用 Docker,真的又快又方便。
GO TO FULL VERSION