buildhome搭建环境解决方案

发表于:2012-11-05来源:百度质量部作者:不详点击数: 标签:buildhome
成功部署产品线 百度目前质量部共不下20条产品线,已有过半产品线使用buildhome进行搭建环境,并将于自动化测试结合起来,可以随时在跑脚本测试时候搭建环境。

  成功部署产品线

  百度目前质量部共不下20条产品线,已有过半产品线使用buildhome进行搭建环境,并将于自动化测试结合起来,可以随时在跑脚本测试时候搭建环境。

  环境搭建背景

  在百度内部的不同产品线下,搭建一套环境主要包括:程序、配置项、数据三项内容。其中配置文件和数据的区分界限并不明显,可灵活变通,基本不会变的配置文件可以为一个数据,数据如果是明文且符合某一定格式也可以为配置文件。

  困难在于:程序和配置项和数据需要统一版本,只有这统一才能够保证上下游程序接口一致,程序读取数据接口一致和功能点的展示一致,整个系统功能才能完整工作,其中配置文件中的配置项中还包括与下游模块的关联关系。

  现状是:测试环境多,多套测试环境维护各不相同版本,每一套测试环境未能及时升级版本导致新项目测试使用的环境不是基线版本,每次进行更新都是到线上下载配置文件和程序,拷贝下来配置文件直接使用存在测试连上线上风险,调试和判断测试环境数据是否匹配需要非常大的投入。

  buildhome介绍

  你们搭建环境是否遇到与我们产品线类似的困扰?是否由于环境问题导致项目质量的问题?每次部署一套测试环境都要修改很多配置项,特别是其中的IP信息和数据依赖关系是不是很烦?或许,buildhome能够解除你的困扰!

  buildhome能干什么?

  1.快速帮你搭建一套完整环境或者自定义的环境,包括程序、数据、模板、配置项信息。

  2.通过参照环境(例如线上环境)进行监控模块配置项、程序md5、固定数据信息,提供监控报警功能

  3.管理模块与模块的关联关系,配合线上(或提供的)配置项,完整生成一份适合线下使用的配置文件,无需手工更改。使用人员几乎可以不关注模块的配置文件进行搭建一套环境

  4.管理模块与数据的关联关系,集中管理当前版本的数据部署,使得更新时候可以同步更新

  5.定时更新监控程序md5、配置文件、数据md5,不至于环境与线上同步失效。

  6.提供数据、程序、配置文件的项目版本管理,可以方便回滚到不同项目的版本系统中。

  buidhome主要功能–管理关联关系

  我们的一套测试环境中有多个模块,这些模块可能需要与一个或多个上游或者下游模块进行交互,从而形成了网状结构,如图所示:

  在实际部署的时候,我们往往将这些模块分成多个组。从而部署到多个服务器,进行快速搭建,比如MachineA,MachineB和MachineC上,例如:

  我们希望能够很方便地将这样一套环境迁移到另外一套服务器,比如MachineA,MachineD和MachineE上,例如:

  同时,我们也需要能够很方便的将一套环境中的模块重新分组并部署到相应服务器上,例如:

  在以上操作中,各个模块之间的关联关系并没有改变,因此配置人员一旦把关联关系给找到并且配置关联上,无论怎么部署一套环境在不同机器上,可以由工具实现协助找到当前搭建模块和下游所在的机器,这些模块就能相互协同工作!

  buildhome一个重要功能正是维护了各个模块之间的关联关系,从而使你能够方便的实现环境的迁移和环境内模块的快速搭建和重新分组部署。

  其基本思想是把配置文件中涉及的配置项的取值值等用变量来表示,从而把关联关系抽象出来,通过当前环境的一个配置,与测试机器的IP,NAME等信息进行实例化,实现关联关系的抽象。Buildhome在搭建环境过程中进行识别,并转换其取值为下游模块的IP或其他值,实现动态关联。

  在某一些模块中,可能出现一个程序对应多个配置文件或者没有配置文件情况,buildhome都进行了支持,并且对于百度内部的主流的配置文件格式都进行支持。

  buidhome主要功能–管理数据(包括模板)与程序关系

  在百度内部的很多产品线中,程序和数据有严格的对应关系,缺少某部分的对应关系的数据(例如检索系统缺少一份字典文件),程序不能够启动或者启动后出现功能不正常的情况,如果想要快速搭建个完整的环境,必须把程序版本与数据的关系管理起来。

  数据的维护需要人为进行,否则不能够完全管理一整套环境,导致buildhome搭建起来的系统可能有程序、数据的不一致!

  对于数据维护方面,buildhome提供更新环境的客户端进行操作。更新客户端如下:

  拼装页面模块的页面模板是一个比较特殊的数据,下载下来的数据还需要进行线上url的替换,与程序也是一个对应关系,需要做的操作是下载下模板进行执行模板替换脚本的操作。

  在域名替换方面,现阶段存在很多个替换脚本和替换域名列表,并且每一个替换列表信息不一定完全同步,在一个项目上线新增了一个域名时候,通知其他替换脚本需要代价,buildhome完全管理了模板域名替换部分,每一台机器进行同步,统一替换脚本,测试人员可以不用理会历史版本的域名替换问题,buildhome内部实现同步。

  程序与数据的关系是一个很简单的一对多的关系,配置过程中需要把数据和所在路径配置上即可进行工作。

  buidhome主要功能–管理程序版本

  程序版本管理使用是简单的与线上版本同步的操作,每天在流量低的时候与线上服务器进行一个同步操作。

  buidhome主要功能–监控配置项、程序版本、数据

  由于buildhome内部已经存在了程序的初始/线上配置项和关联关系,既可以知道每一个配置项的值是什么,对于IP信息通过关联关系和当前环境的一个配置,即可以知道这个IP实际应该连哪台机器的哪个端口。通过与当前机器的模块的配置文件的对比,可以得出当前机器是否存在配置项的修改。

原文转自:http://www.ltesting.net