這篇就來介紹一下在工作與以前念書時期在開發流程上的不同吧~
CI/CD 是一種自動化的軟體開發實踐,用於快速、可靠地交付和更新應用程式。全名是持續整合(Continuous Integration)和持續交付/部署(Continuous Delivery/Deployment)。
持續整合
:這是一種開發實踐,開發人員會頻繁地(通常每天)將代碼更改合併到共享的主分支中。每次合併都會觸發一個自動化的構建和測試序列,以早期發現並快速修復任何錯誤或問題。 持續交付
:這是一種延伸的實踐,自動化地將已經通過測試的代碼更改部署到生產環境。這確保了你可以隨時快速、安全地交付新版本的應用程式。持續部署
:這也是一種延伸的實踐,與持續交付類似,但是在持續部署中,每次更改都會自動部署到生產環境。這需要一個高度成熟的測試和發佈管道,以確保不會將錯誤部署到生產環境。
在實作上,我們一般會用工具來完成 CI/CD。例如 Travis CI、 AWS CodePipeline 等。
我個人覺得最大的優點是,CI 可以執行自動測試,以避免有人動到一些功能,結果在沒注意到的地方壞掉了;CD則是能持續交付與自動部屬,持續交付可以避免上線後壞掉還要等一段時間去回復上一個版本,而自動部屬則是很方便、避免人為疏失。
Travis CI 是一種持續整合的服務,用於自動化構建在 GitHub 上托管的內容,進行測試並部署到各種環境。以下是 Travis CI 的一些主要特性:
由於我第一次碰的 CI 服務就是 Travis CI,所以應該算是比較熟悉(吧)。雖然 Travis CI 的優點很多,但我認為有兩個比較大的缺點:
此外,Travis CI 只有 CI 的部分,不包含 CD。
在工作上不免會碰到一些相對機密的資料,例如密碼、姓名等。此時如果量夠大,就需要考量到資料外洩的風險而做資料的加密。
目前有兩種主要類型的加密:對稱加密和非對稱加密。這兩者的差別主要是能不能用同一個密鑰去進行加解密。
對稱加密由於是用同一把鑰匙,因此安全性較低但是速度較快,例如 AES 和 DES;非對稱加密則是用兩把鑰匙,相對安全但速度就會比較慢,例如 RSA 和 ECC。
ECC(Elliptic Curve Cryptography)是一種基於橢圓曲線數學的非對稱加密算法,也是相對較新的加密方式。它在相同的安全性的前提下只需要較小的密鑰,這使得 ECC 在需要節省儲存空間和頻寬的情況下(例如在移動設備上)成為一種更好的選擇。