2024-07-14|閱讀時間 ‧ 約 25 分鐘

新手村導讀 - 3: 淺談軟體開發流程

這篇就來介紹一下在工作與以前念書時期在開發流程上的不同吧~

CI/CD

CI/CD 是一種自動化的軟體開發實踐,用於快速、可靠地交付和更新應用程式。全名是持續整合(Continuous Integration)和持續交付/部署(Continuous Delivery/Deployment)。

持續整合:這是一種開發實踐,開發人員會頻繁地(通常每天)將代碼更改合併到共享的主分支中。每次合併都會觸發一個自動化的構建和測試序列,以早期發現並快速修復任何錯誤或問題。
持續交付:這是一種延伸的實踐,自動化地將已經通過測試的代碼更改部署到生產環境。這確保了你可以隨時快速、安全地交付新版本的應用程式。
持續部署:這也是一種延伸的實踐,與持續交付類似,但是在持續部署中,每次更改都會自動部署到生產環境。這需要一個高度成熟的測試和發佈管道,以確保不會將錯誤部署到生產環境。

在實作上,我們一般會用工具來完成 CI/CD。例如 Travis CI、 AWS CodePipeline 等。

我個人覺得最大的優點是,CI 可以執行自動測試,以避免有人動到一些功能,結果在沒注意到的地方壞掉了;CD則是能持續交付與自動部屬,持續交付可以避免上線後壞掉還要等一段時間去回復上一個版本,而自動部屬則是很方便、避免人為疏失。

Travis CI

Travis CI 是一種持續整合的服務,用於自動化構建在 GitHub 上托管的內容,進行測試並部署到各種環境。以下是 Travis CI 的一些主要特性:

  1. 易於集成:可以輕鬆地與 GitHub 集成。只需在 GitHub 倉庫中添加一個 .travis.yml 配置文件,並在 Travis CI 網站上啟用該倉庫,就可以開始使用 Travis CI 了。
  2. 支持多種語言:支持多種編程語言,包括 PHP、Python、Ruby、Java、Node.js 等。
  3. 自動化部署:可以自動將應用部署到各種平台,如 Heroku、AWS、Google Cloud 等。
  4. 並行構建:支持並行構建,這意味著你可以同時運行多個構建和測試。

由於我第一次碰的 CI 服務就是 Travis CI,所以應該算是比較熟悉(吧)。雖然 Travis CI 的優點很多,但我認為有兩個比較大的缺點:

  1. 速度較慢:Travis CI 的構建速度相對較慢,尤其是在高峰時段,跟其他 CI 服務相比尤其明顯。
  2. GitHub 限制:基本上只有原本就在 GitHub 上的專案在使用 Travis CI 才會覺得方便,對於其他平台來說則很不方便。

此外,Travis CI 只有 CI 的部分,不包含 CD。

加解密

在工作上不免會碰到一些相對機密的資料,例如密碼、姓名等。此時如果量夠大,就需要考量到資料外洩的風險而做資料的加密。

目前有兩種主要類型的加密:對稱加密和非對稱加密。這兩者的差別主要是能不能用同一個密鑰去進行加解密。

對稱加密由於是用同一把鑰匙,因此安全性較低但是速度較快,例如 AES 和 DES;非對稱加密則是用兩把鑰匙,相對安全但速度就會比較慢,例如 RSA 和 ECC。

ECC(Elliptic Curve Cryptography)是一種基於橢圓曲線數學的非對稱加密算法,也是相對較新的加密方式。它在相同的安全性的前提下只需要較小的密鑰,這使得 ECC 在需要節省儲存空間和頻寬的情況下(例如在移動設備上)成為一種更好的選擇。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.