devops:改变思维,让一切更加高效

持续交付发布可靠软件的系统方法(交付生态圈)第十三章:组件和依赖

2019-02-17  本文已影响10人  潘晓华Michael

《持续交付发布可靠软件的系统方法》读书笔记

持续交付让应用程序处于随时可发布的状态。在大型重构或添加复杂功能时,要继续保持应用的可发布状态,需要对大型应用组件化。
组件是指应用程序中的一个规模相当大的代码结构,它具有一套定义良好的API,而且可以被另一种实现方式代替。一个基于组件的软件系统,通常其代码库被分成多个相互分离的部分,每个部分通过有限的定义良好的接口提供一些服务与其他组件进行有限的交互。有人把组件称为模块。
基于组件的设计是一种良好的架构,具有松耦合性。

保持应用程序可发布

团队不断地增加新特性,可以给每次新特性创建新的分支,当新特性完成后,再将它合并到主分支。这将会导致合并周期变长,无法做到持续集成,这种方法不是最好的。提倡每个人都应该提交到主干。可是这样又该如何保证主干一直保持可发布状态呢?有如下四种策略:

依赖

库是团队除了选择权以外,没有控制权的软件包,它们很少更新。组件是应用程序所依赖的代码块,它一般由团队自己开发的,更新频繁。
构建时的依赖会与运行时依赖不同,管理依赖遇到问题。

组件

只有一个系统达到一定的复杂度时,才会考虑将它分成多个组件。组件的目的是为了提交团队的效率。

当我们遇到以下情况时,可以考虑将组件代码从代码库中独立出来

大多数情况下,我们建议整个应用程序使用一个构建流水线,每次提交修改时,就应该构建并测试整个应用。只有当效率太低而无法忍受时,才使用并行流水线方式。

二进制包管理

使用制品库来管理二进制包,如Artifactory,Nexus。制品库不应该包含那些无法重现的产物,即便删除整个制品库,也可以方便地将二进制包恢复出来,一般通过重新构建对应的代码。
最简单的制品库是磁盘上的一个目录,最重要的是它应该将一个二进制文件关联到版本控制库中生成该文件的某个源码版本对应上。
流水线与制品库相结合

上一篇 下一篇

猜你喜欢

热点阅读