加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

唔哩携手听云APM:敏捷运维提升产品质量

发布时间:2016-10-21 18:35:12 所属栏目:传媒 来源:站长之家用户
导读:副标题#e# “唔哩”,来自于网络流行语“wuli”,出处在韩语,“我们”的意思。这个画风相当二次元的词是90后星人的基本语汇。唔哩是一款为90后年轻一代打造的新闻资讯App,团队一直致力于以优质内容为基础,以互动分享与个性化设置为特色,加入场景阅读新
副标题[/!--empirenews.page--]

“唔哩”,来自于网络流行语“wuli”,出处在韩语,“我们”的意思。这个画风相当二次元的词是90后星人的基本语汇。唔哩是一款为90后年轻一代打造的新闻资讯App,团队一直致力于以优质内容为基础,以互动分享与个性化设置为特色,加入场景阅读新元素,满足用户任何时间和状态下轻松愉快的阅读需求,做最懂90后年轻一代的贴身伴侣。

作为一款时尚、流行的APP,产品上线之后一直了保持较快的增长速度,经统计自2016年3月份上线以来,4个月后注册用户已达400万、日均活跃用户数为25万人次。持续快速稳定的增长不仅与产品本身的话题性、强大功能密不可分,也得益于唔哩技术团队对用户体验的足够重视,同时也离不开敏捷开发/敏捷运维为产品提供的有力技术支撑。

一、重视持续集成,提升代码质量

对于创业公司来说,缺乏完善的流程规范和技术平台,许多开源的技术方案并不能很好的解决面临的困难,导致产品上线之初各种坑都踩了一遍。比如版本升级后,依赖模块调用版本不对,已知bug再次复现,数据错误等等;为此,唔哩设置了4种环境(dev+test+stage+prod)。

1、 dev环境用于各模块的功能开发,mock接口

2、 test环境用于集成测试,集成测试通过之后,可以提交新版本到stage环境运行

3、 stage环境是非常接近生产环境的,使用的数据是从生产环境同步过来的,在stage环境运行无异常后,最终提交新版本到prod环境

四个环境的操作系统版本和配置参数及环境变量及服务器架构都是一致的,尽量规避因环境不一致产生新的bug到生产环境。

有了环境,接下来就可以做持续集成了。唔哩采用的比较流行方案:gitlab+jenkins,gitlab做版本控制,jenkins做代码自动构建、测试和打包以及把代码自动布署到开发环境。

a)分支模型:gitlab主要分支有两个:master和develop。

master分支保持用于线上环境的代码。

develop分支保持下一个release版本最新的代码,当develop分支的代码达到release稳定要求时,将develop分支的所有变化合并到master分支并对master打上一个tag(release版本号)。

feature分支用于开发新功能,从develop分支分出来,新功能开发完成之后合并到devleop分支。合并之后就可以删除此分支了。

release分支主要用于大版本之后发布一些小的改动(如果有大的功能调整需要从develop分支一个feature分支开发),从develop分支分出来,然后再合并到master分支。合并之后就可以删除此分支了。

bugfix分支用于bug修复,从主分支创建,然后合并到master分支和develop分支。合并之后就可以删除此分支了。

gitlab基本不用太多的配置,需要在gitlab上创建一个用户能pull需要做持续集成的项目,然后在项目的setting里设置web hooks,URL为jenkins生成的GitLab CI Service URL,trigger可以选Push events/Tag push events/Merge Request events,这样当向项目push代码或merge请求的时候就会触发jenkins的构建job,也可以在jenkins里配置轮询的方式,每过多长时间检查一下,如果条件符合触发构建任务。

b)jenkins需要安装一些插件:如Junit、Cobertura、Gitlab Merge Request Builder等。

Gitlab Merge Requests Builder允许在gitlab上提交merge request时候触发jenkins上配置的相关的构建任务,即在slave上将某个分支合并到另一个分支上,合并之后如果构建成功,就将打包好的文件scp到集成环境的主机上进行布署,最后生成测试报告,并发送邮件到相关的邮件接收人。如果一切正常则可以进行code review,这样可以提高code review的效率,然后在gitlab上真正合并分支。下面是jenkins 构建项目的主要项配置及截图:

参数化构建过程:添加4个String Parameter,名字分别为gitlabSourceRepository、gitlabSourceName、gitlabSourceBranch、gitlabTargetBranch ;

源码管理:勾选Git

唔哩携手听云APM:敏捷运维提升产品质量

构建触发器:勾选Gitlab Merge Requests Builder,Gitlab Project Path填上你的项目路径(比如:groupName/projectName), Crontab line 配置H/5 * * * * 即可;

Build:RootPom参数为pom.xml,Goals and options参数为clean cobertura:cobertura package ;

Post Steps:如下图

唔哩携手听云APM:敏捷运维提升产品质量

二、持续布署,每次变更都会加入跟踪统计

对于生产环境,唔哩比较谨慎,目前采用的是人工干预的方式来发布到生产环境。利用jenkins自动构建测试之后,将打包好的文件存放到版本仓库中,然后利用saltstack布署到生产服务器上。在这个过程中,唔哩用python写了一个web平台来管理发布流程。

首先定义一个流程,由开发人员提交版本需求,并描述具体变更说明;然后由运维人员操作布署,只需在web界面点击一下按钮,后台自动上线并实时展现日志;接下来由测试人员进行测试,并产生测试报告;最后流程由PM结束,PM决定一次版本上线是否结束,还是需要回退到历史的版本;版本回退的流程也是一样的过程,流程的每个节点都有相应的邮件描述说明,方便下一步的人员查看。具体流程及流程的每个节点执行哪些job都是可配置的,功能扩展很方便。

唔哩携手听云APM:敏捷运维提升产品质量

在做这个发版的平台主要是基于两个方面考虑:

1、一个是有一些web应用前面都是Nginx做代理,布署后端服务时需要先在Nginx上剔除,布置完后端服务再添加回来,这个需要一个单独的工具或平台集中管理不然不好控制;

2、另一个考虑是把每次版本发布都归档,包括布署过程中产生的日志信息,方便审计,而且根据对历史发版发布的统计也可以发现版本发布的质量,当然是布署上线的次数越少越好。

在未来,唔哩考虑让平台自动去处理,不用人工干预,也可以配置成定时任务去执行,比如一些需要在夜间时进行的版本发布,这样就会轻松许多。现在我们将一些备份的任务也放到这个平台上面来执行,每天会定时执行并发送执行结果邮件通知。

三、实时监控、持续优化

通过以上敏捷迭代可以在很大程度上能提高生产环境下的代码的质量,避免出现一些Bug。但是凡事都有意外,所以对于生产环境正在运行的业务,做好持续的监控很重要。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读