信息无障碍通道
您的位置:首页>>业界动态

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

发布时间:2016-10-20  来源:飞象网     背景: 无障碍通道

  “唔哩”,来自于网络流行语“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

  构建触发器:勾选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:如下图

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

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

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

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

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

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

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

  三、实时监控、持续优化

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

  唔哩除了使用zabbix监控CPU、内存、磁盘IO、网络流量IO、进程/端口、TCP连接、日志以及中间件运行状态参数外,还使用了听云的APM监控技术。唔哩运维总监认为:“虽然商业产品需要成本,但是商业产品可以提供完备的服务,总比自已花时间慢慢研究来的直接有效,对于创业公司来说时间成本是巨大的,产品的快速发展需要良好的用户体验,APM的价值对于用户来说促进作用非常大,否则因为产品不稳定导致用户流失损失比成本更大。”

  听云APM使用了大数据技术,可以定位分析到每一次函数调用具体情况。以下示例为唔哩Server端监控图例说明:

  上图中是对一个登陆的过程进行的分析,点击“web应用过程”,可以查看耗时百分比,响应时间,吞吐率,错误率等。选择“响应时间”左边一栏显示的接口调用及平均响应时间,右侧显示为具体的分解图表信息,可以看到userparter/SELECT这个操作图形占比最高,峰值近500ms,在表格中也可以看到是mysql操作,耗时占比96%,调用次数37,平均响应时间为184ms。有了这些数据信息,如果出现异常就可以快速定位到具体原因,而且对于产品的持续优化也有参考依据。

  除了Server端,移动端和网络也使用了听云做了监控。通过听云App对唔哩APP的监控可以很容易查看客户端崩溃、网络请求、劫持分析、错误等。使用听云Network对网络的监控是因为听云能提供用户端的节点探测,比IDC节点监控更接近真实用户的网络环境。

  敏捷运维是一种思想,是让软件开发、测试、运维之间建立起沟通协作关系,加强角色间信息互换和共享,统一流程和规范,最终实现运维自动化,共同保证产品的质量。

特别提醒:本网内容转载自其他媒体,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。


返回网站首页 本文来源:飞象网

本文评论
BCS 2020“安全运营中心建设与发展高峰论坛”成功召开
8月12日,BCS 2020安全运营中心建设与发展高峰论坛成功召开。论坛邀请到中国电子信息产业发展研究院...
日期:08-12
BCS 2020举办区块链安全论坛 多方专家共议区块链在垂直行业的应用
8月11日下午,有着网络安全行业“达沃斯”之称的北京网络安全大会(以下简称BCS 2020),正...
日期:08-12
腾讯Q2财报:小程序交易额环比回升 公众号内容消费重焕活力
8月12日,腾讯发布二季报,数据显示,2020年上半年实现收入1148.83亿元,同比增长29%;Non-IFRS净利润301...
日期:08-12
应对联发科强劲需求,芯片测试商京元电子与矽格准备提高产能
8 月 12 日消息,据国外媒体报道,在此前的报道中,外媒曾提到在 5G 智能手机处理器方面有很大进展...
日期:08-12
摩托罗拉新机XT2081-2获FCC认证:配5000mAh电池
据外媒报道,一款型号为XT2081-2的摩托罗拉手机出现在FCC认证网站上。虽然该网站没有透露手机的营销...
日期:08-12
苏宁易购引领未来零售5G发展趋势,终端裂变重塑零售形态
近日,全场景智慧零售服务商苏宁易购与全球化监测和数据分析公司尼尔森联合发布首份零售行业5G应用发...
日期:08-12
台积电 3 家晶圆厂设备供应商 7 月营收同比大增,最高接近 80%
8 月 12 日消息,据国外媒体报道,为苹果等公司代工芯片的台积电,近几年在芯片制程工艺方面走在行...
日期:08-12
京东全资控股五星电器,成立新公司 “京东五星电器集团”
8 月 12 日消息,京东宣布全资控股五星电器,成立新公司拟定名为京东五星电器集团有限公司。
日期:08-12
BCS2020技术峰会:内生安全框架推动网络安全技术体系升级
8月12日,2020北京网络安全大会(BCS 2020)技术峰会正式召开。来自中、美、以等全球顶级的网络安全技...
日期:08-12
消息称三星与 ARM 和 AMD 合作,目标成为第一大 Android 应用处理器制造商
8 月 12 日消息 据 Business Korea 的最新报道,三星的目标是通过与 ARM 和 AMD 合作,成为第一大 A...
日期:08-12
近80% CEO预测远程办公是趋势 BCS2020举行远程办公与智能终端安全论坛
今年年初,突如其来的新冠“黑天鹅”,加速了远程办公的落地,远程办公系统与智能终端安...
日期:08-12
卢伟冰:Redmi K30 Pro因高刷缺席被喷 这次投入2亿重做K30至尊纪念版
作为Redmi的旗舰产品,Redmi K30 Pro因60Hz AMOLED屏成为不少米粉心中的小遗憾。
日期:08-12
Facebook 面临新指控:Instagram 被诉非法收集用户生物识别数据牟利
Facebook 最近又面临一项新的指控,称该公司非法收集用户的生物识别数据。这次诉讼的对象是 Faceboo...
日期:08-12
一加Nord新配色将于10月初推出 还有更便宜版本出售
据外媒消息,一加将于10月初推出一加Nord新配色——尘灰色(Gray Ash)。
日期:08-12
Realme证实C12/C15入门新机即将登陆印度市场 售价或低于10000卢比
在曝光了各种认证信息后不久,Realme 已证实将向印度市场投放 C12 和 C15 入门新机。早些时候,售价...
日期:08-12
TCL 发布 Mini LED 屏电视:最高支持 120Hz 可变刷新率
TCL 发布了最新一代 5 系列和 6 系列 Roku 电视,其中 6 系列电视最大特点是有 Mini LED 显示背光技...
日期:08-12
Nutanix混合云基础架构现已支持亚马逊云服务(AWS)
携手AWS,Nutanix Clusters支持应用云间无缝迁移及统一操作,助力企业加速云上旅程
日期:08-12
消息称可折叠苹果 iPad 2023 年发布:无铰链 + 屏下摄像头 + 3nm 芯片
关于可折叠 iPad 的讨论已经在进行中,有传言称该平板电脑的显示尺寸与 MacBook 相当。今天,推特爆...
日期:08-12
XSKY星辰天合发布全新下一代分布式文件系统XGFS
非结构化数据正以前所未有的速度增长。IDC的预测表明,到2025年,全球将有80%的数据是非结构化的。...
日期:08-12
买iPhone最值的时候来了!京东热8购物季iPhone 11低至4599元
暑假过半,考研复习进入关键时期。考研是一项全靠主观能动性的学习,调整好复习状态固然重要,但学...
日期:08-12
  专栏介绍
阳光不锈 的专栏
阳光不锈发表的文章
积分:
自我介绍 :