Web3:區(qū)塊鏈技術(shù)將如何改進(jìn) Web3 中的 DevOps ?
雖然還處于早期階段,但Web3已經(jīng)顯示出其能提供區(qū)塊鏈和DevOps協(xié)同工作的可能。本文討論了DevOps的實(shí)踐、流程、工具、及其它將如何與區(qū)塊鏈技術(shù)相互補(bǔ)充來(lái)交付Web3解決方案。
DevOps是一個(gè)涵蓋了軟件開發(fā)的文化、思維模式、開發(fā)風(fēng)格、過(guò)程和技術(shù)的總稱。DevOps旨在通過(guò)協(xié)作、自動(dòng)化、可預(yù)測(cè)的結(jié)果、更短的交付周期和更快的客戶反饋來(lái)提高軟件交付的質(zhì)量。
區(qū)塊鏈?zhǔn)且环N不可變的分布式賬本技術(shù)。區(qū)塊鏈分類帳由去中心化的“區(qū)塊”組成,其中包含分類帳網(wǎng)絡(luò)上的事件或“交易”記錄。一旦區(qū)塊鏈記錄了一個(gè)交易,就不能刪除或更新它。區(qū)塊鏈可以是中心化的,也可以是去中心化的,它的固有性質(zhì)總是分布式的。
然而,大多數(shù)區(qū)塊鏈網(wǎng)絡(luò)是去中心化的,這意味著它們是運(yùn)行在網(wǎng)絡(luò)中的節(jié)點(diǎn)上,而不是在中央服務(wù)器上。此外,去中心化的區(qū)塊鏈?zhǔn)菬o(wú)需許可的,這意味著任何人都可以訪問(wèn)它們或參與它們的網(wǎng)絡(luò)。
Web3是下一代互聯(lián)網(wǎng)的假想版本。 Web2 迎來(lái)了動(dòng)態(tài)用戶生成內(nèi)容、電子商務(wù)廣泛采用和易于使用的時(shí)代。而由區(qū)塊鏈技術(shù)驅(qū)動(dòng)的 Web3 通過(guò)將用戶數(shù)據(jù)的所有權(quán)從大型參與者轉(zhuǎn)移給用戶本身的方法,就足以帶來(lái)去中心化的新時(shí)代。Web3組織,比如ConsenSys,提供了新的工具,當(dāng)與常見的 DevOps 實(shí)踐相結(jié)合時(shí),這些工具有望帶來(lái)一系列安全性和生產(chǎn)力優(yōu)勢(shì)。
DevOps和區(qū)塊鏈?zhǔn)侨绾位パa(bǔ)的?
DevOps是一個(gè)不斷改進(jìn)軟件交付鏈的循環(huán)。它的最佳實(shí)踐可以通過(guò)不同的階段和工具支持區(qū)塊鏈技術(shù)開發(fā)。當(dāng)前的DevOps工具和實(shí)踐將使用容器化、自動(dòng)化和較短的開發(fā)迭代來(lái)幫助區(qū)塊鏈開發(fā)。
另一方面,區(qū)塊鏈技術(shù)通過(guò)不變性、安全性、智能合約等提供了一種更好的方式來(lái)交付服務(wù)和數(shù)據(jù)。此外,通過(guò)確保質(zhì)量和消除模糊性,它可以將DevOps交付提升到一個(gè)新的水平。
DevOps實(shí)踐和工具將如何幫助區(qū)塊鏈開發(fā)?
下表展示了在不同的DevOps階段將如何協(xié)同工作,它將怎樣為區(qū)塊鏈開發(fā)、測(cè)試和交付做出貢獻(xiàn)。
DevOps 階段 | 區(qū)塊鏈開發(fā)示例 | Web3 工具示例 |
反饋 | 在此階段,區(qū)塊鏈應(yīng)用程序開發(fā)團(tuán)隊(duì)將從客戶、內(nèi)部團(tuán)隊(duì),甚至競(jìng)爭(zhēng)對(duì)手的市場(chǎng)研究中收到關(guān)于改進(jìn)現(xiàn)有功能或添加新功能的反饋。 | 服務(wù)請(qǐng)求監(jiān)控工具,如Request Tracker |
開發(fā) | 開發(fā)團(tuán)隊(duì)在區(qū)塊鏈應(yīng)用程序中添加新功能、改進(jìn)現(xiàn)有功能或修復(fù)bug。他們使用不同的工具、技術(shù)和平臺(tái)進(jìn)行開發(fā)。 | 開發(fā)環(huán)境、框架、庫(kù)、存儲(chǔ)庫(kù)和工具集如下: Remix IDE\Solidity\Truffle\Drizzle\Ethlint\Radicle\Ethereum Virtual Machine (EVM) |
測(cè)試 | 開發(fā)人員對(duì)新開發(fā)的代碼進(jìn)行單元測(cè)試。測(cè)試團(tuán)隊(duì)進(jìn)行系統(tǒng)集成測(cè)試、性能測(cè)試,等等。 | 代碼測(cè)試工具,如Ethereum Tester\Ganache\Diligence Fuzzing\hevm |
集成 | 所有測(cè)試成功后,團(tuán)隊(duì)將新開發(fā)的代碼推送到區(qū)塊鏈應(yīng)用程序的源代碼存儲(chǔ)庫(kù)。pull請(qǐng)求將最新的更改合并到主分支。 | CI工具如:CircleCI\Jenkins |
構(gòu)建和部署 | 與主分支的集成觸發(fā)了構(gòu)建過(guò)程。此時(shí)應(yīng)用程序已使用所有依賴項(xiàng)構(gòu)建完成,并準(zhǔn)備好部署。一旦構(gòu)建完成,持續(xù)部署pipeline將應(yīng)用程序部署到較低的環(huán)境,如UAT或STAGING。部署之后,在這些環(huán)境上運(yùn)行一系列自動(dòng)化測(cè)試,以確保一切都按預(yù)期工作。如果所有自動(dòng)化測(cè)試都成功,pipeline將把最新版本的區(qū)塊鏈應(yīng)用程序部署到生產(chǎn)環(huán)境中。 | 構(gòu)建自動(dòng)化和CD工具,如:Gradle\Truffle |
監(jiān)控 | 可觀察性平臺(tái)、日志管理解決方案和監(jiān)控工具從區(qū)塊鏈應(yīng)用程序中收集日志、指標(biāo)、跟蹤和事件。IT團(tuán)隊(duì)使用這些工具來(lái)排除事故和性能問(wèn)題、調(diào)查安全問(wèn)題或計(jì)劃容量。 | 可觀察性技術(shù):Infura\BlockScout\Ethernal\Quine |
運(yùn)營(yíng) | IT運(yùn)營(yíng)團(tuán)隊(duì)確保區(qū)塊鏈應(yīng)用程序按預(yù)期運(yùn)行并實(shí)現(xiàn)其SLA。它們?cè)诨A(chǔ)設(shè)施上執(zhí)行必要的維護(hù)任務(wù)、應(yīng)用修復(fù)程序、升級(jí)軟件等等。 | 服務(wù)管理工具,如Spiceworks |
區(qū)塊鏈如何幫助DevOps實(shí)踐?
作為一項(xiàng)新興技術(shù),區(qū)塊鏈已經(jīng)從加密貨幣轉(zhuǎn)移到應(yīng)用程序范圍。隨著技術(shù)的成熟,它可以以各種方式增強(qiáng)DevOps和軟件交付過(guò)程。
不可變賬本的透明交付
應(yīng)用程序可以利用區(qū)塊鏈的不可變賬本技術(shù)來(lái)實(shí)現(xiàn)更透明、更可靠的交付。區(qū)塊鏈中的每個(gè)節(jié)點(diǎn)都可以包含軟件開發(fā)過(guò)程及其依賴關(guān)系的完整歷史,從而增加它的可信度。
智能合約的質(zhì)量保證
智能合約的任意代碼只在成功滿足預(yù)定條件的情況下執(zhí)行。因此,智能合約可以用來(lái)規(guī)范測(cè)試和驗(yàn)收過(guò)程。此外,這種方法將有助于實(shí)現(xiàn)法規(guī)遵循和批準(zhǔn)過(guò)程的自動(dòng)化。
帶有智能合約的SLA
軟件交付可以使用智能合約為應(yīng)用程序的消費(fèi)者來(lái)編碼服務(wù)水平協(xié)議。這可以消除協(xié)議中規(guī)定的需求上的歧義和分歧。同樣,分布式賬本可以幫助結(jié)算付款和確保許可權(quán)。
不可變賬本的安全性和可審計(jì)性
DevSecOps的實(shí)踐努力確保軟件的安全性,需要認(rèn)證的區(qū)塊鏈通過(guò)驗(yàn)證網(wǎng)絡(luò)中的參與者而進(jìn)一步增強(qiáng)了這種安全性。日志事件可以記錄在一個(gè)不可變的分類賬中,以便研究人員可以追溯安全漏洞的確切的時(shí)間點(diǎn)。
此外,由于基于區(qū)塊鏈的代碼是不可變的,而且所有節(jié)點(diǎn)都有整個(gè)交易歷史,因此可以通過(guò)審計(jì)開源或第三方庫(kù)的相關(guān)賬本來(lái)維護(hù)和驗(yàn)證供應(yīng)鏈安全。
強(qiáng)制性文件
軟件文檔常常是不存在的、低質(zhì)量的或過(guò)時(shí)的。相同文檔的多個(gè)版本常常會(huì)造成歧義。不可變賬本可以包含最新文檔的簽名版本,而且還可以在軟件交付之前激活智能合約,以確保滿足特定文檔標(biāo)準(zhǔn)。
Web3和DevOps的未來(lái)
Web3可能會(huì)為DevOps創(chuàng)建新一代基于區(qū)塊鏈的工具、實(shí)踐和流程。示例包括用于全球范圍內(nèi)的開源和業(yè)務(wù)協(xié)作的去中心化的、分布式的、安全的代碼存儲(chǔ)庫(kù)。這類代碼存儲(chǔ)庫(kù)的例子包括Radicle或Ellcrys。
Web3還需要專門的編程語(yǔ)言來(lái)適應(yīng)區(qū)塊鏈限制并提供豐富的庫(kù)集。Solidity就是這樣一種編程語(yǔ)言。程序員可以使用像Truffle這樣的開發(fā)框架來(lái)構(gòu)建和測(cè)試應(yīng)用程序,并在以太坊虛擬機(jī)(EVM)上運(yùn)行它們。
Web2應(yīng)用程序允許驗(yàn)證消息的內(nèi)容,但不一定要驗(yàn)證發(fā)送者。在區(qū)塊鏈技術(shù)中,增加了可驗(yàn)證發(fā)送方的可信節(jié)點(diǎn)安全層。Web3將通過(guò)不可變的賬本和智能合約增加開發(fā)者的信任和安全性,使任何人都能審查軟件的質(zhì)量和用途。像Diligence這樣的工具可以審核這樣的智能合約。Quorum Key Manager等其他工具可以幫助機(jī)密文件和密鑰的管理。
結(jié)論
DevOps是一種被廣泛接受的軟件交付實(shí)踐。其成功的部分原因在于其采用了尖端技術(shù)。
區(qū)塊鏈也是一項(xiàng)新興技術(shù),它可以從網(wǎng)絡(luò)交付的軟件中獲得極大的好處。當(dāng)前的DevOps工具和實(shí)踐可以幫助開發(fā)區(qū)塊鏈上的應(yīng)用程序,而更成熟的區(qū)塊鏈的采用可以改善DevOps實(shí)踐。