虽然还处于早期阶段,但Web3已经显示出其能提供区块链和DevOps协同工作的可能。本文讨论了DevOps的实践、流程、工具、及其它将如何与区块链技术相互补充来交付Web3解决方案。
DevOps是一个涵盖了软件开发的文化、思维模式、开发风格、过程和技术的总称。DevOps旨在通过协作、自动化、可预测的结果、更短的交付周期和更快的客户反馈来提高软件交付的质量。
区块链是一种不可变的分布式账本技术。区块链分类帐由去中心化的“区块”组成,其中包含分类帐网络上的事件或“交易”记录。一旦区块链记录了一个交易,就不能删除或更新它。区块链可以是中心化的,也可以是去中心化的,它的固有性质总是分布式的。
然而,大多数区块链网络是去中心化的,这意味着它们是运行在网络中的节点上,而不是在中央服务器上。此外,去中心化的区块链是无需许可的,这意味着任何人都可以访问它们或参与它们的网络。
Web3是下一代互联网的假想版本。 Web2 迎来了动态用户生成内容、电子商务广泛采用和易于使用的时代。而由区块链技术驱动的 Web3 通过将用户数据的所有权从大型参与者转移给用户本身的方法,就足以带来去中心化的新时代。Web3组织,比如ConsenSys,提供了新的工具,当与常见的 DevOps 实践相结合时,这些工具有望带来一系列安全性和生产力优势。
DevOps和区块链是如何互补的?
DevOps是一个不断改进软件交付链的循环。它的最佳实践可以通过不同的阶段和工具支持区块链技术开发。当前的DevOps工具和实践将使用容器化、自动化和较短的开发迭代来帮助区块链开发。
另一方面,区块链技术通过不变性、安全性、智能合约等提供了一种更好的方式来交付服务和数据。此外,通过确保质量和消除模糊性,它可以将DevOps交付提升到一个新的水平。
DevOps实践和工具将如何帮助区块链开发?
下表展示了在不同的DevOps阶段将如何协同工作,它将怎样为区块链开发、测试和交付做出贡献。
DevOps 阶段 | 区块链开发示例 | Web3 工具示例 |
反馈 | 在此阶段,区块链应用程序开发团队将从客户、内部团队,甚至竞争对手的市场研究中收到关于改进现有功能或添加新功能的反馈。 | 服务请求监控工具,如Request Tracker |
开发 | 开发团队在区块链应用程序中添加新功能、改进现有功能或修复bug。他们使用不同的工具、技术和平台进行开发。 | 开发环境、框架、库、存储库和工具集如下: Remix IDE\Solidity\Truffle\Drizzle\Ethlint\Radicle\Ethereum Virtual Machine (EVM) |
测试 | 开发人员对新开发的代码进行单元测试。测试团队进行系统集成测试、性能测试,等等。 | 代码测试工具,如Ethereum Tester\Ganache\Diligence Fuzzing\hevm |
集成 | 所有测试成功后,团队将新开发的代码推送到区块链应用程序的源代码存储库。pull请求将最新的更改合并到主分支。 | CI工具如:CircleCI\Jenkins |
构建和部署 | 与主分支的集成触发了构建过程。此时应用程序已使用所有依赖项构建完成,并准备好部署。一旦构建完成,持续部署pipeline将应用程序部署到较低的环境,如UAT或STAGING。部署之后,在这些环境上运行一系列自动化测试,以确保一切都按预期工作。如果所有自动化测试都成功,pipeline将把最新版本的区块链应用程序部署到生产环境中。 | 构建自动化和CD工具,如:Gradle\Truffle |
监控 | 可观察性平台、日志管理解决方案和监控工具从区块链应用程序中收集日志、指标、跟踪和事件。IT团队使用这些工具来排除事故和性能问题、调查安全问题或计划容量。 | 可观察性技术:Infura\BlockScout\Ethernal\Quine |
运营 | IT运营团队确保区块链应用程序按预期运行并实现其SLA。它们在基础设施上执行必要的维护任务、应用修复程序、升级软件等等。 | 服务管理工具,如Spiceworks |
区块链如何帮助DevOps实践?
作为一项新兴技术,区块链已经从加密货币转移到应用程序范围。随着技术的成熟,它可以以各种方式增强DevOps和软件交付过程。
不可变账本的透明交付
应用程序可以利用区块链的不可变账本技术来实现更透明、更可靠的交付。区块链中的每个节点都可以包含软件开发过程及其依赖关系的完整历史,从而增加它的可信度。
智能合约的质量保证
智能合约的任意代码只在成功满足预定条件的情况下执行。因此,智能合约可以用来规范测试和验收过程。此外,这种方法将有助于实现法规遵循和批准过程的自动化。
带有智能合约的SLA
软件交付可以使用智能合约为应用程序的消费者来编码服务水平协议。这可以消除协议中规定的需求上的歧义和分歧。同样,分布式账本可以帮助结算付款和确保许可权。
不可变账本的安全性和可审计性
DevSecOps的实践努力确保软件的安全性,需要认证的区块链通过验证网络中的参与者而进一步增强了这种安全性。日志事件可以记录在一个不可变的分类账中,以便研究人员可以追溯安全漏洞的确切的时间点。
此外,由于基于区块链的代码是不可变的,而且所有节点都有整个交易历史,因此可以通过审计开源或第三方库的相关账本来维护和验证供应链安全。
强制性文件
软件文档常常是不存在的、低质量的或过时的。相同文档的多个版本常常会造成歧义。不可变账本可以包含最新文档的签名版本,而且还可以在软件交付之前激活智能合约,以确保满足特定文档标准。
Web3和DevOps的未来
Web3可能会为DevOps创建新一代基于区块链的工具、实践和流程。示例包括用于全球范围内的开源和业务协作的去中心化的、分布式的、安全的代码存储库。这类代码存储库的例子包括Radicle或Ellcrys。
Web3还需要专门的编程语言来适应区块链限制并提供丰富的库集。Solidity就是这样一种编程语言。程序员可以使用像Truffle这样的开发框架来构建和测试应用程序,并在以太坊虚拟机(EVM)上运行它们。
Web2应用程序允许验证消息的内容,但不一定要验证发送者。在区块链技术中,增加了可验证发送方的可信节点安全层。Web3将通过不可变的账本和智能合约增加开发者的信任和安全性,使任何人都能审查软件的质量和用途。像Diligence这样的工具可以审核这样的智能合约。Quorum Key Manager等其他工具可以帮助机密文件和密钥的管理。
结论
DevOps是一种被广泛接受的软件交付实践。其成功的部分原因在于其采用了尖端技术。
区块链也是一项新兴技术,它可以从网络交付的软件中获得极大的好处。当前的DevOps工具和实践可以帮助开发区块链上的应用程序,而更成熟的区块链的采用可以改善DevOps实践。