沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!
微办事典范多长处,例如缩短开辟时光、小且自力宣布、分散治理等惹人了一系列挑衅,像是版本控制,测试,安排和设备治理。本文供给了一个办法,来处理微办事复杂的构建、测试和安排法度榜样。
问题解释
构建、测试和安排法度榜样对于那些只有很少的微办事和通俗办事的项目来说是异常简单的。平日,一个解决筹划有2-3个Docker镜像,办事和UI,是以它很轻易履行集成、测试,我们是以得出结论——办事与UI和其他兼容。版本控制策略也可以很简单,直接用法度榜样文件的版本(pom, nuget或其他)。即使安排到临盆情况,也可认为每个微办事手工完成
当下面的情况产生时,情况就会产生巨变:
- 解决筹划被分为几个自力的“数据流”,每个“数据流”有一组微办事和UI。
- 每个微办事都有它本身的寿命和宣布周期。
- 不合团队(甚至竞争关系)在同样的项目上工作。
- 微办事年腋荷琐“数据流”运行时,依附来自另一个“数据流”的微办事。
- 微办事取决于生态体系(常用的办事,比如AAA、日记记录等等)。
当每个微办事有它本身的安排和运行设备时,情况变得更为复杂。举个例子,在一个测试情况中,一个微办事不须要安装多种实例,但倒是临盆所需。是以我们须要处理至少3-n维数组:
- 容器化微办事 Docker/LXC/OS镜像
- 安排设备
- 运行设备
这些还须要进行治理。
别的,项目中还可能存在一些额外的束缚汉孟耋。我们还须要推敲一些额外的请求:
- 不变的办事器范式。
- 未经测试微办事不得涌如今资本中。
- 经由过程测试法度榜样的每个构建是有可能交付的。
- 全部解决筹划的安排/回滚法度榜样应尽可能简单,并且避免处理不呵9依υ?办事的复杂性,它们都有不合的版本。
构建法度榜样
微办事管道
当世界上其他国度歇息时,微办事必须持续工作,所以下面的结不雅是精确的——起首它必须被分别构建和测试。一个微办事的管道应当与下图类似。
步调:
- 归并代码变革到SCM中master/构建分支,将触发构建法度榜样。
- 在构建法度榜样时代,履行单位测试和组件测试。静态代码分析也可以履行来经由过程源代码质量考验关。
- 宣布构建工件莅临时资本库。
- 大年夜模板中创建临时安排描述符。Velocity、Groovy或任何其他模板都可以用于Jenkins。
- 安排到开辟情况,不管集成测试结不雅许可开辟人员手动检查。
- 安排到测试情况并开端集成测试。有外部化的测试场景和法度榜样比较好。
- 在经由过程案例集成测试时宣布到存储库中。触发与其他微办事的集成。
端到端测试管道
端到端的集成测试工作拥有所有微办事的最新版本,已经成功地经由过程了集成测试。“集成测试前”加上变革将供给必须测试的微办事版本集。
在此阶段,一组微办事将与其他微办事的最新稳定版本集成。
步调:
- 下流构建发送的名称和微办事的版本,微办事已变革。
- 构建办事器加载所有现有微办事的最新版本号。简单的属性文件就够了。
- 与新版本归并。版本和安排模板的集合用于创建安排描述符。
- 安排微办事应用一组变革了版本的安排描述符,并运行集成测试。
- 如不雅经由过程测试法度榜样,构建办事器将持续一组微办事,版本设置为“集成测试前”,为了下次应用。
- 构成设备和宣布。为了简化安排过程,创建一个“uber”安排描述符,它将包含所有须要的微办事、设备变量等。
集成测试前
所有微办事的集成测试,可以说是经由过程集成测试的每一个构定都有可能交付的。
提示和陷阱
应用“最新”的不和模式来安排办事并不是一个好办法,须要指定微办事切实其实切版本,因为不是所有的办事项革都须要从新安排。
几乎弗成能为每个情况测试所有可能的微办事版本设备,在大年夜多半情况下实际上是不须要的。
最好每次都从新创建测试情况。
保持Jenkins管道作为源代码的一部分。
尽量避免应用Spring Cloud config server等外部化的运行时设备。最好应用安排描述符供给设备值。
【编辑推荐】
- 微办过后若何做一次体系梳理
- 大年夜0开端的微办事架构:(一)重识微办事架构
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 9、移动应用开辟对象 Codename>Codename>PhoneGap 是一款HTML5平台,经由过程它,开辟商可以应用HTML、CSS及>>>详细阅读
本文标题:容器化微服务的持续集成/持续交付
地址:http://www.17bianji.com/lsqh/38038.html
1/2 1