Cloud Engine:大杀器如何炼成

郑昀 创建于2016/6/18 最后更新于2016/6/19

点击查看我的《如何从零搭建一个技术平台》,这是一个系列。转载时请注明“转载自旁观者-博客园”或者给出本文的原始链接。



本文档适用人员:技术人员

提纲:

  1. 蚂蚁金服的研发协作是怎么运转的
  2. 我们向何处去
  3. 我们现阶段如何聚焦
  4. CE 简介


何谓 ACP?阿里协作平台是也。

自动化测试、自动化构建、自动化运维、环境维护、资源申请和释放、虚拟机集群、容器集群……对于一支庞大的技术团队,这些名词术语意味着生产效率,意味着快速迭代,意味着研发、测试、运维 All in,当然也可能意味着混乱,有操不完的心,有维护不完的事,工程越多,并行项目越多,麻烦越大。

去年年底,我们的一支小分队与支付宝一起并肩作战了三个月,近距离观察了他们的研发协作和应用发布过程。回来后,志全、老白、明骏给大家分享了所见所闻,我们试图从中找到云纵研发协作和持续集成的未来之路。不久之后,田志全明确了切入方式,云纵 CloudEngine 开始开发。

我们先来看一眼 CloudEngine 的庐山真面目:

图0,云纵 CloudEngine 首页-管理员身份

下面先介绍一下蚂蚁金服的玩法。

蚂蚁金服的研发协作是怎么运转的

一套精密的体系

如下图1所示,我们可以把庞大的蚂蚁金服研发支撑体系浓缩为这四个平台:

  1. ACP,阿里协作平台
  2. 九州资源管控平台
  3. AQC,蚂蚁质量基础设施平台
  4. Zpass,蚂蚁集团发布部署平台

ACP 是总驱动方。九州,AQC,Zpass 是基础设施。

图1,蚂蚁金服协作平台之间的关系

先说最上层的 ACP。假设我作为一个项目的项目经理,负责某一个迭代版本,那么我在这个系统里这么做:

  1. 新建一个项目
  2. 拉流(创建分支)
  3. 申请服务器资源
  4. 系分 & 评审
  5. 测分 & 评审
  6. 功能测试完成后:
    1. 督促测试人员验证结果
    2. 开发人员填写发布计划
  7. 回归测试完成后:
    1. 督促测试人员及时响应回归结果
  8. 测试风险评估
  9. ARS 系统上填写发布计划评估
  10. 发起会审:检查质量红线,测试风险评估,资损评估,DB和安全评估
  11. 上预发环境,做回归测试,PD验收
  12. 等待发布
  13. 已发布,项目结束
  14. 服务器资源自动回收

ACP 的很多能力来自于下层的基础设施系统。我们来看看下层的 AQC,它在开发自测、交付测试、日常测试、集成测试、环境冒烟、全站回归、线上回归中扮演重要的角色。下图2展示了 AQC 的业务架构,下图3展示了它的核心流程。

图2,AQC 业务架构

图3,AQC 核心流程示意

简而言之,ACP、AQC 等系统将蚂蚁金服项目全生命周期从流程流转到代码分支到资源管控都串起来了。

我们向何处去

生产效率如何提升

蚂蚁金服的体系庞大,经营多年,犹如高速运转的精密仪器,我们该如何下手呢?截至到去年年底,云纵自己的持续集成体系如下图4所示:

图4,云纵持续集成

云纵的 Java 和 PHP 应用,无论线下测试环境,还是线上生产环境,均运行在基于 Mesos+Marathon+Docker 的容器私有云上,由我们自主研发的 TouchStone(点金石)系统部署。当然光有 Docker 是不够的,还是有很多应用需要跑在虚拟机里。

我们最大的痛点是什么?我们要向支付宝学习什么呢?

田志全分析,我们最大的痛点是开发联调环境和测试环境的并行测试

举一个例子。版本 V1.0 中,业务中心 A 并没有代码变更,测试周期一周;版本 V1.1 中,业务中心 A 有代码变更,提测时间肯定晚了一些,小版本的测试周期为三天。常规分支对应的测试环境里,V1.1里 A 的代码变更,可能造成业务中心 A 的不稳定,会影响 V1.0的正常测试,所以二者难以在一个环境里并行测试。

以前我们一般这么解决:

  1. 多整几个测试环境。V1.0 一个环境,V1.1 一个环境。但环境维护艰巨,对工程师来说也不胜其扰。
  2. 代码变更要求向上兼容。但第一,向上兼容没那么容易,第二,总有不能兼容的时候,咋办,只能串行测试。

那么我们向支付宝学习两点:

  • 项目经理/研发经理通过 paas 平台,为应用申请环境资源
    • 一切都通过交互界面完成,无需东奔西走(注:理想而已,有了流程,节点审批还是要打电话催的);
  • 引入 Stable 环境概念
    • 一般一个项目包括两套日常环境,一套开发用,一套测试用;
      • 开发环境:项目或升级包开始由开发申请,用于调试代码、自测以及后续修补缺陷调试使用
      • 测试环境:进入测试之前由测试申请,用于功能测试
    • 两套环境从域名上区别如下:
      • xxx.dxxx.yourcompany.net,开发用
      • xxx.txxx.yourcompany.net,测试用
    • Stable 环境是一套比较完整的系统,服务于日常开发环境和日常测试环境
    • 日常开发和测试环境申请机器时,通常只包含代码有变更的系统,所依赖的其他系统均来自于 Stable 环境

 

我们现阶段如何聚焦

paas 平台和 stable 环境如何发挥价值

明确了学习目标后,我们就要假想出现阶段的各种应用场景,作为系统的愿景。

首先,应用可以发布在虚拟机上,也可以发布在容器上,应该允许工程师选择。毕竟不是每一个应用都适合容器化。

其次,与 ACP 一样,应用发布的过程可视化,这包含两层意思:

  1. 状态变迁可视化,ACP 里的状态变迁如下图5所示:
    • 图5,ACP 应用发布状态
  2. 部署信息可以聚合展示,如果部署失败,我可以看到是哪一步出错,出错信息是什么。

按我的《如何从零搭建一个技术平台》所说,整理了首期应实现的六个主应用场景:

  1. 登记和维护应用,应用的配置管理
  2. 环境查看和监控
  3. 环境的公共配置管理
  4. 服务器资源(虚拟机和容器资源)申请和审核
  5. 服务器资源释放(和续租)
  6. 服务器资源找回帐号密码

CE简介

CloudEngine 像 ACP 一样,架设在我们的 TouchStone、SimpleWay 和 iDB 之上,可以理解为元数据管理和流程调度发起者,同时支持虚拟机和容器资源申请。这几者调用关系如下图6所示:

图6,有了CE之后的调用关系

它们可以粗糙地对应到蚂蚁金服系统上:

  • CloudEngine = ACP 的一小部分,更接近于 AQC 的功能角色
  • TouchStone = AQC 一部分+ Zpaas 一部分
  • SimpleWay = Zpaas

工程师角色进入 CE 后,可以在首页工作台看到自己名下有多少个应用,发出过多少个机器资源申请,已分配多少机器,能看到当前有几个环境,环境里虚拟机和容器的机器配额各是多少,已分配了多少机器(虚拟机或容器),如下图所示:

图7,CE首页工作台-工程师角色

上图中:

[vm]开发环境[2/90]:指开发联调环境的虚拟机(vm)配额为90,当前已分配2个虚拟机;

[docker]开发环境[1/90]:指开发联调环境的容器(docker)配额为90,当前已分配1个容器。

服务器申请,按审核节点分有两种:

  1. 有审核:申请 Stable 环境资源,意味着长期租用,需要审核;
  2. 无审核:否则是有限期的租用,无审核。

其他功能不再赘述。有机会再分享给大家。

小结

希望 CloudEngine 能促进云纵开发联调环境和测试环境的并行测试,减小工程师对环境和应用的维护成本,提高技术团队的项目吞吐率。

-EOF-

点击查看《如何从零搭建一个技术平台》。

欢迎长按二维码订阅我的微信订阅号『老兵笔记』

转载时请注明“转载自旁观者-博客园”或者给出本文的原始链接。

时间: 2024-11-06 15:40:15

Cloud Engine:大杀器如何炼成的相关文章

eBay回到中国做“倒爷”,在俄罗斯能飙50%的跨境电商能成大杀器吗?

eBay在中国已经沉寂了多年,当人们基本快要遗忘它之时,它却在今年1月,宣布与宁波国家跨境电子商务综合试验区达成了战略合作. 看起来似乎是有一个招商引资的成功,而且往往许多人看到各种巨头和国内某地达成某种战略合作之时,总是一笑置之.毕竟,这种大战略经常都是以没有然后而划上省略号的. 文/张书乐 人民网.人民邮电报专栏作家.TMT行业观察者.游戏产业时评人 但请把注意点落在"跨境电商"4个字上,这恰恰是eBay用来撬开当年攻不下的那些地区大门的大杀器. 从俄罗斯传来的大杀器,据说很有用

一文读懂机器学习大杀器XGBoost原理

http://blog.itpub.net/31542119/viewspace-2199549/ XGBoost是boosting算法的其中一种.Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器.因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器.而所用到的树模型则是CART回归树模型.讲解其原理前,先讲解一下CART回归树. 一.CART回归树 CART回归树是假设树为二叉树,通过不断将特征进行分裂.比如当前树结点是基于第j个特征值进

Python中的网络扫描大杀器Scapy初探

Python中的网络扫描大杀器Scapy初探     最近经历了Twisted的打击,这个网络编程实在看不懂,都摸不透它的内在逻辑,看来网络编程不是那么好弄的.还好,看到了scapy,这种网络的大杀器,让我一看就爱不释手,这才是我需要的网络工具啊.Scapy的功能如此之多,以至于...我到现在还是没看懂.在官方网站也介绍的不多,后来搜了一下,有一本书Security Power Tools一书中,第六章介绍了Scapy,虽然简单,但是还是不明白,这两天一直在忙活着看Scapy.看了几个应用,比较

MHA大杀器——mysql主、从双击热备配置安装解析

MHA的主要作用: 在mysql的主从复制中,当master崩溃了,利用mha实现backup顶替崩溃的master自动切换为master继续工作,从而实现高可用. 下面介绍本次实验的环境: MHA分为manager管理节点和node节点,一般来讲最少是三台服务器,两台node节点,一台manager节点,但本次环境限制,只能使用两台,所以把manager也装在一台node节点上. 两台服务器,两个网口: IP: 10.2.16.253     10.0.0.1  node1 10.2.16.2

汉澳sinox运行大杀器virtualbox让winxp回归

汉澳sinox运行大杀器virtualbox让winxp回归 虽然sinox能运行部分windows程序,可是仍然有些windows运行不了,就算你绞尽脑汁也没有办法,因为各种原因导致不支持! 难道就这样等死吗?不用,还有办法,那就是用virtualbox虚拟机安装 winxp,让 winxp复活.在虚拟机下面运行winxp可能比直接在真机器上运行安全.当然数据安全都是一样的.但是有了 winxp我们可以等,一直等到QQforsinox,不用去乞求别人的支持.等到有一天sinox完全普及了,软件

【爬虫】大杀器——phantomJS+selenium

[爬虫]大杀器--phantomJS+selenium 视频地址 江湖上有一个传说,得倚天屠龙者可称霸武林.爬虫中也有两个大杀器,他们结合在一起时,无往不利,不管你静态网站还是动态网站,通吃. phantomJS http://phantomjs.org/ 一种无头浏览器,何为无头浏览器,你可以看做一个无界面的浏览器,电脑能看到,人却看不到(没界面怎么看). 下载安装:http://phantomjs.org/download.html selenium http://selenium-pyth

大屏设计系列之六:有"屏"有据,阿里双11大屏是怎样炼成的

如果您想订阅本博客内容,每天自动发到您的邮箱中,请点这里 [IT168 专稿]本文根据[2016 第七届中国数据库技术大会](微信搜索DTCC2014,关注中国数据库技术大会公众号)现场演讲嘉宾染熙老师分享内容整理而成.录音整理及文字编辑[email protected]田晓旭@老鱼. 染熙,阿里云前端可视化工程师,负责DataV组件的架构.DataV可视化工具产品,以及数据产品的研发和2015年双十一的前端开发.专注于pc端web数据可视化的架构,探索数据可视化自动测试.新型的数据可视化等领域

Linux大杀器命令:查找所有目录下的所有文件的字符串命令

命令为: *find . |xargs grep -ri "bspSetPonTxDisable" -l* 查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式 (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如

异步化,高并发大杀器

聊聊如何让项目异步化的一些事. 1.同步和异步,阻塞和非阻塞 同步和异步,阻塞和非阻塞, 这个几个词已经是老生常谈,当时常常还是有很多同学分不清楚,以为同步肯定就是阻塞,异步肯定就是非阻塞,其他他们不是一回事. 同步和异步关注的是结果消息的通信机制 同步:同步的意思就是调用方需要主动等待结果的返回异步:异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函数等.阻塞和非阻塞主要关注的是等待结果返回调用方的状态 阻塞:是指结果返回之前,当前线程被挂起,不做任何事非阻塞:是指