#研发解决方案#研发协作平台CloudEngine
Cloud Engine:大杀器如何炼成
郑昀(微博:http://weibo.com/yunzheng) 创建于2016/6/18 最后更新于2016/6/19
点击查看我的《如何从零搭建一个技术平台》,这是一个系列。转载时请注明“转载自旁观者-博客园”或者给出本文的原始链接。
本文档适用人员:技术人员
提纲:
蚂蚁金服的研发协作是怎么运转的
我们向何处去
我们现阶段如何聚焦
CE 简介
何谓 ACP?阿里协作平台是也。
自动化测试、自动化构建、自动化运维、环境维护、资源申请和释放、虚拟机集群、容器集群……对于一支庞大的技术团队,这些名词术语意味着生产效率,意味着快速迭代,意味着研发、测试、运维 All in,当然也可能意味着混乱,有操不完的心,有维护不完的事,工程越多,并行项目越多,麻烦越大。
去年年底,我们的一支小分队与支付宝一起并肩作战了三个月,近距离观察了他们的研发协作和应用发布过程。回来后,志全、老白、明骏给大家分享了所见所闻,我们试图从中找到云纵研发协作和持续集成的未来之路。不久之后,田志全明确了切入方式,云纵 CloudEngine 开始开发。
我们先来看一眼 CloudEngine 的庐山真面目:
图0,云纵 CloudEngine 首页-管理员身份
下面先介绍一下蚂蚁金服的玩法。
蚂蚁金服的研发协作是怎么运转的
一套精密的体系
如下图1所示,我们可以把庞大的蚂蚁金服研发支撑体系浓缩为这四个平台:
ACP,阿里协作平台
九州资源管控平台
AQC,蚂蚁质量基础设施平台
Zpass,蚂蚁集团发布部署平台
ACP 是总驱动方。九州,AQC,Zpass 是基础设施。
图1,蚂蚁金服协作平台之间的关系
先说最上层的 ACP。假设我作为一个项目的项目经理,负责某一个迭代版本,那么我在这个系统里这么做:
新建一个项目
拉流(创建分支)
申请服务器资源
系分 & 评审
测分 & 评审
功能测试完成后:
督促测试人员验证结果
开发人员填写发布计划
回归测试完成后:
督促测试人员及时响应回归结果
测试风险评估
ARS 系统上填写发布计划评估
发起会审:检查质量红线,测试风险评估,资损评估,DB和安全评估
上预发环境,做回归测试,PD验收
等待发布
已发布,项目结束
服务器资源自动回收
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的正常测试,所以二者难以在一个环境里并行测试。
以前我们一般这么解决:
多整几个测试环境。V1.0 一个环境,V1.1 一个环境。但环境维护艰巨,对工程师来说也不胜其扰。
代码变更要求向上兼容。但第一,向上兼容没那么容易,第二,总有不能兼容的时候,咋办,只能串行测试。
那么我们向支付宝学习两点:
项目经理/研发经理通过 paas 平台,为应用申请环境资源:
一切都通过交互界面完成,无需东奔西走(注:理想而已,有了流程,节点审批还是要打电话催的);
引入 Stable 环境概念:
一般一个项目包括两套日常环境,一套开发用,一套测试用;
开发环境:项目或升级包开始由开发申请,用于调试代码、自测以及后续修补缺陷调试使用
测试环境:进入测试之前由测试申请,用于功能测试
两套环境从域名上区别如下:
xxx.dxxx.yourcompany.net,开发用
xxx.txxx.yourcompany.net,测试用
Stable 环境是一套比较完整的系统,服务于日常开发环境和日常测试环境
日常开发和测试环境申请机器时,通常只包含代码有变更的系统,所依赖的其他系统均来自于 Stable 环境
我们现阶段如何聚焦
paas 平台和 stable 环境如何发挥价值
明确了学习目标后,我们就要假想出现阶段的各种应用场景,作为系统的愿景。
首先,应用可以发布在虚拟机上,也可以发布在容器上,应该允许工程师选择。毕竟不是每一个应用都适合容器化。
其次,与 ACP 一样,应用发布的过程可视化,这包含两层意思:
状态变迁可视化,ACP 里的状态变迁如下图5所示:
图5,ACP 应用发布状态
部署信息可以聚合展示,如果部署失败,我可以看到是哪一步出错,出错信息是什么。
按我的《如何从零搭建一个技术平台》所说,整理了首期应实现的六个主应用场景:
登记和维护应用,应用的配置管理
环境查看和监控
环境的公共配置管理
服务器资源(虚拟机和容器资源)申请和审核
服务器资源释放(和续租)
服务器资源找回帐号密码
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个容器。
服务器申请,按审核节点分有两种:
有审核:申请 Stable 环境资源,意味着长期租用,需要审核;
无审核:否则是有限期的租用,无审核。
其他功能不再赘述。有机会再分享给大家。
小结
希望 CloudEngine 能促进云纵开发联调环境和测试环境的并行测试,减小工程师对环境和应用的维护成本,提高技术团队的项目吞吐率。
-EOF-
点击查看《如何从零搭建一个技术平台》。
欢迎长按二维码订阅我的微信订阅号『老兵笔记』
转载时请注明“转载自旁观者-博客园”或者给出本文的原始链接。
#研发解决方案#研发协作平台CloudEngine的更多相关文章
- [持续交付实践] 研发协作平台:DevOps背景下的组织结构
前言 今年以来做的事情越来越杂,负责的技术方向越来越广,精力越来越分散(创业公司的典型特点),编码的时间越来越少,有时候也会觉得很疲惫没办法专注一个事情. 除了技术方向上的实践,组织上如何组建一个最优 ...
- #研发解决方案#分布式并行计算调度和管理系统Summoner
郑昀 创建于2015/11/10 最后更新于2015/11/12 关键词:佣金计算.定时任务.数据抽取.数据清洗.数据计算.Java.Redis.MySQL.Zookeeper.azkaban2.oo ...
- #研发解决方案介绍#Tracing(鹰眼)
郑昀 最后更新于2014/11/12 关键词:GoogleDapper.分布式跟踪.鹰眼.Tracing.HBase.HDFS. 本文档适用人员:研发 分布式系统为什么需要 Tracing? ...
- #研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案
郑昀 基于李丹和刘奎的文档 创建于2014/12/5 关键词:监控.dashboard.PHP.graphite.statsd.whisper.carbon.grafana.influxdb.Pyth ...
- #研发解决方案介绍#IdCenter(内部统一认证系统)
郑昀 基于朱传志的设计文档 最后更新于2014/11/13 关键词:LDAP.认证.权限分配.IdCenter. 本文档适用人员:研发 曾经一个IT内部系统配一套帐号体系和授权 线上生产环境里 ...
- #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案
郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...
- #研发解决方案介绍#Recsys-Evaluate(推荐评测)
郑昀 基于刘金鑫文档 最后更新于2014/12/1 关键词:recsys.推荐评测.Evaluation of Recommender System.piwik.flume.kafka.storm.r ...
- 现代汽车加入Linux 基金会和 AGL协作平台
1月4日,现代汽车宣布已加入 Linux 基金会和其旗下的非营利协作平台 Automotive Grade Linux(AGL),现代汽车公司副总裁兼信息娱乐技术中心负责人 Paul Choo 表示: ...
- 国内外开源与 SaaS ,团队协作平台、项目管理工具整理
整理一些开源与 SaaS ,团队协作平台.项目管理工具.还有哪些比较好的工具,可以推荐下? 名称 地址 备注 asana https://asana.com/ 国外 basecamp https:// ...
随机推荐
- table td中的内容过长,显示为固定长度,多余部分用省略号显示
简单描述:table数据过长,结果顶到下一格,影响了数据的查看 解决办法: 给table 加上style属性 另外 给td加上style标签修饰 <table class="tab ...
- iOS UIView Class Translation
类 UIView 一个管理屏幕上矩形区域内容的对象. 概述 Views 是你应用的用户界面最基础的组成部分.UIView类定义了对于所有 views 的共有的行为.一个 view 对象在它的边界矩 ...
- 两条命令,实现ssh免密登陆
ssh-keygenssh-copy-id -i 目标服务器ip
- C++中的const总结
CONST 一.符号常量 声明: const 类型说明符 常量名 = 常量值: const float PI = 3.1415927; //可以交换const与float的位置 符号常量在声明时一定要 ...
- RabbitMQ 消息确认机制以及lazy queue+ disk消息持久化
一:Basic的一些属性,一些方法 1. 消费端的确认 自动确认: message出队列的时候就自动确认[broke] basicget... 手工确认: message出队列之后,要应用程序自己去确 ...
- IIS处理并发请求设置
一个ASP.NET项目在部署到生产环境时,当用户并发量达到200左右时,IIS出现了明显的请求排队现象,发送的请求都进入等待,无法及时响应,系统基本处于不可用状态. 当发现请求明显延迟,没有被即时 ...
- 机器学习之--kmeans聚类简单算法实例
import numpy as np import sklearn.datasets #加载原数据 import matplotlib.pyplot as plt import random #点到各 ...
- 【转】Mac 删除文件夹里所有的.svn文件
转自: mac 删除文件夹里所有的.svn文件 想要把SVN專案作轉移或複製時 舊的「.svn」真的是很煩人的東西 最快的方式是用終端機輸入 sudo find /Users/justfly/Do ...
- 我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装
高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大 ...
- AngularJS多个ng-app只解析第一个的问题
<div id="1" ng-app="myApp" ng-controller="ctrl"> <table> & ...