[关闭]
@gaoxiaoyunwei2017 2019-06-14T20:52:30.000000Z 字数 5027 阅读 587

云端研发

北哥


讲师简介

林栗

  • 蚂蚁金服架构师

image.png-256.7kB

我来自于蚂蚁金服,属于CPU的子属部门。我们的解决方案和产品是服务于蚂蚁内部七千多名开发工程师的工具平台和蚂蚁金服生态圈的合作伙伴以及在金融领域的一些外部的客户。从该工具平台我们的使命有两个:

研发小嫩无外乎是质量、成本和效率上的追求。本文跟大家分享的主题主要是集中于效率这两个字。我们对研发效能的追求和要求是什么呢?

站在今夕,我们未来研发效能上会有什么突破呢?我们在这个方向上的新思考是什么?本文将按照下面三个方面进行阐述。

image.png-133.9kB


01. 为什么选择云端研发

image.png-295.8kB

通常来讲,业务特征决定架构特征。蚂蚁的业务有什么样的特点呢?

image.png-227.3kB

我们有相关的业务特征,回到技术的架构发展。这些架构基本上跟阿里巴巴集团架构发展历程相类似。

从IDC到虚拟化再到云架构对资源的利用效率得到提升。对于软件开发来说有什么变化吗?其实变化并不大。以前写好的程序搬到虚拟机上,中间的变化是没有那么大的。云时代有几个技术特征:容器、微服务、服务网格、不可变的基础设施和KPI。这些特征已经改变了软件编程。

在2009年,伯克利发布了一篇云计算论文。阿里看到这篇论文,于是去做阿里云。今天阿里云的市场份额和技术积累非常令人赞叹,已经做到世界前列了。

在2019年3月份,伯克利又发表了另外一重量级的论文,可以比肩云计算。论文总结的是过去云集散的一些成就,然后展望了一下将来云计算的发展,其中点出Serverless的概念。论文非常推荐大家看一下,而且这两年非常火热。这里我想说的问题是Serverless,可能很多人会想到FaaS。在伯克利的论文里面,Serverless并不只是FaaS,比如说计划的方式。其实FaaS可以使用的场景,目前还是比较少的。我们希望Serverless有更多的场景在服务端也就是BaaS。

image.png-229.5kB

基于这两个架构上的演进,对研发模式有什么样的改变呢?比如说开发是完全基于云产品来开发应用架构,很多的功能是存在于云上的,用的也是云。有了Serverless框架架构,很多细节都隐藏起来了,极大降低了学习成本和认知的心智。这是对提升研发效能最本质性的突破。

在此之上,我们的工具层面,就是给到开发同学,直接用到端的工具,同时依赖数据AI的技术。使AI更加贴合研发的场景,真正为它写代码,为它做测试和调试,真正直接提升生产力。


02. 云端研发场景体验

image.png-1149.2kB

上一节比较抽象,我们举例来看看云端研发到底是什么样的体验。程序员小蚂的一天,他是背着双肩包,戴个眼睛开始了一天忙碌的工作。

image.png-282.9kB

9:30收到来自项目管理系统的钉钉通知,关于开工的信息。于是9:40登陆云端研发工作台,选择技术栈与框架新建应用。同时应用在云端代码服务器上已经初始化了,然后变成框架代码,紧接着一键launch云端开发个人空间。传统的模式是在笔记本上搭建环境,现在云端开发空间已经准备好了。

image.png-195.2kB

9:50可以进行编码了。打开Cloud IDE开始行云流水的编码,开箱即用的标准云端工作空间,SDK封装中间件与高可用实现简化代码量。以前我们要做一些消息、数据和服务的实现,包括分表等设计,可能都会在业务系统的代码里写,现在通过这个会把应用代码层变得很薄,大量的代码下沉到服务网格里面。基于云的IDE IntelliSense,会变成更加智能化,更加精准,以及个人使用习惯补全推荐的能力。然后实时代码分析并给出修复建议。会告诉你哪里有代码的安全漏洞,会在写代码时帮你分析出来,而不是等你提交CICD时才有相关的检查,并且有代码修复的建议代码片段,让你选择接受或不接受这个代码意见,这是IDE端智能化的加持,这样代码就写得很快。

image.png-233.8kB

到下午2点代码就写得差不多了,以前可能就会说联调一下。那么在云端怎么做呢?小乙把服务A拉起来,小马把服务B拉起来,IDE唤起云端构建服务、IDE唤起云端部署服务、与同伴的工作空间进行联调、将自己的工作空间分享给同伴、智能化的辅助工具、日志分析、链路诊断、变更分析,经过一番折腾可能差不多了。接下来进行联调,这个速度几乎是量级般的提升,会变得很快。云端部署服务更大是统一和标准的问题,本地环境与服务端不一致的,会带来一些麻烦。用云端构建服务和部署服务,所有都是统一和标准的,更重要的是不用学习和掌握这些知识。构建服务结束了,接下来就是变更分析。变更分析就是根据代码的变更,可以分析到影响哪些依赖,因为小马写到比较完整的测试用率,覆盖率也不错,然后给到的回复是低风险。

image.png-210.2kB

到下午4点,就用IDE提交代码,发起Code Review,然后触发代码门禁检查,同伴使用IDE进行Review,IDE中进行全局代码搜索和符号搜索。代码门禁检查通过后,于是他打开IDE进行Review请求。


image.png-187.9kB

到下午17:00,合并代码触发持续交付流水线,线下环境进行精准测试仿真流量回放,细粒灰度的精心策略,精准流量控制,自动化扩容到一定规模。

image.png-137.8kB

云端研发模式的特征有两个方面:


03. 云端研发平台建设思路

image.png-128.7kB

接下来看看怎么达到上述有点匪夷所思的效果。我们通过做什么来达到这个效果的。

以上三大板块来助力研发效能的提升。

image.png-154.6kB

首先是底座云原生Serverless化,第一个是提升资源利用率和并发能力,蚂蚁金服每日执行任务数有几万次,如果我们不做升级,那么资源的消耗是蛮大的。第二个是希望统一标准,用社区语言说,可以做多站点平滑迁移。以前是金融支付这一类的业务,后来发展出很多人工智能、AI、区块链等新的技术,以及收购了一些外部的公司和国外国际站点的公司,我们在中国部署的东西,如何能够平滑地到海外的站点,需要一个统一的行业标准的技术来使我们内部进行打通和对齐。

业务变得更复杂,上面业务端的形态特征也会变得各式各样,我们研发者的工作可能不止一个,一些核心的能力,如何部署、如何构建、如何做测试等,这些都抽象出支撑上层拼装工作台的能力。基于云技术和智能技术,并把它们赋能到用户端的产品让它智能化。

image.png-225.3kB

从上往下看,我们业务场景有哪些呢?最上面一层,有各种各样的技术栈、应用场景和使用习惯各具特色,前端做服务端,做小程序,尤其是数据AI,情况就更特殊了,这些同学可能有各种不一样的工作台,以及知识服务。这上面有个不一样的东西是云端IDE,这跟传统的有所区别。端的部分有可能是外部的IDE或者是命令行的,不一样的地方在服务端,我的工作空间可以在服务端,通过相关协议,还可以凭多种技术的差异,五大语言支撑它。同时后端服务端,除了IDE本身工作空间的管理管控之外,还可以把中台的服务集成调用起来,变成一个非常强大的IDE端,甚至有提法说将来IDE会取代左边所有传统意义的工作台,所有的工作入口都是IDE,所有的事情都可以这样做。

第二层是研发效能中台服务,代码服务、构建、测试、部署几大件是最传统的。基于此之上,我们有代码分析、变更分析、日志诊断和链路诊断,助力于研发效率的服务。流水线服务我们采用比较先进的模型,完全基于API设计的。

第三层是我们跟效能中台相关的技术新服务,如制品仓库、元数据中心、研发数据中心和研发算法模型。马云老师说阿里巴巴本质上不是电商公司,而是数据公司。其实蚂蚁金服也是非常注重数据的公司。我们会把跟研发相关的数据全部收集到统一的数仓,有了数仓就可以做很多事情,比如基于数据的挖掘和建模。我们用这些数据训练算法和模型,有了这些基础能力就可以向上赋能,比如智能的分析、智能答疑等。甚至是个人行为的画像、用户ID热点等等。

最下一层,虚线以下,就是蚂蚁公共的基础架构。首先是高可用的技术下沉,更多的是与运维同学相关,运维是存到这个云上的,而不是剥离到外面,独立的一个系统。中间件,以前在应用系统中是以客户端的存在,现在这部分抽出来了。大家可以关注数据Mesh和安全的Mesh,这是十几年来金融领域沉淀的一些特别的技术。再往下是基础设施、资源调度,再往下就是安全容器。蚂蚁金服具有金融属性,特别强调安全。大家知道容器是隔离技术,并不是虚拟技术,这会带来安全性和隔离性的问题。这条脉路走的是虚拟化的技术,还有一个方向是用户态的消息到到达内核态之间加一个隔离,发过来的消息先被我这层所接受,然后再往下传。基于这一套机制,我们会做蚂蚁金服的安全特色。甚至在硬件和网卡上做相关的架构,主要是由于业务特征特别的技术需要突破的点。

本文所分享的内容基本上是虚线以上的,我所在部门主要是从事的一些业务。比较泛其实每个点拆开来有很多内容,比如说研发和洞察那一块,基于数据和AI做一些数据分析和研发辅助的能力。总的来说,我们现在正深处非常关键时刻,阿里和蚂蚁正在经历非常重大的架构升级,在一些大事件当中去学去看去贡献自己的力量,我觉得是一种幸运。欢迎加入我们一起创造这个历史。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注