云端开发在阿里的典型应用场景 | 阿里巴巴DevOps实践指南

BytePulse
• 阅读 1009

云端开发在阿里的典型应用场景 | 阿里巴巴DevOps实践指南

本文作者:弗止,阿里云云效技术专家;辰颜,阿里云云效高级开发工程师

本文源自:阿里云云效团队出品的《阿里巴巴DevOps实践指南》,前往:https://developer.aliyun.com/...,下载完整版电子书,了解阿里十年DevOps实践经验。

云端开发指开发者可基于云平台完成编码、测试、发布等研发流程。一个完整的云端开发平台不仅是提供了一个云端的编码环境,还提供了一整套研发工具和配套设施,让开发者做到在云端即可完成应用程序的需求、编码、测试和运维的全生命周期管理。

传统的本地开发的问题

如下图所示,在传统的开发模式中,企业研发人员通常在本地完成代码的编写和测试,然后把代码推送到远端服务器,通过一系列的构建和集成,最终发布到生产环境,并持续利用线上的运维体系完成线上系统的监控和运维;同时,企业也会采集部分研发过程中的关键数据,用来度量团队及个人的效能。

云端开发在阿里的典型应用场景 | 阿里巴巴DevOps实践指南

随着各种软硬件技术逐渐更替,公司规模也越来越大,为了适应这种变化:

  • 公司需要不断为企业研发人员配备合适的本地研发工具(如:多核高内存的计算机设备、Mac 笔记本电脑),这些设备可能价值不菲,而且需要定期的更新换代;
  • 新加入的员工,在正式开始开发前,需要配置复杂的本地开发环境,安装特定的软件及插件,并熟悉项目的研发流程及各个线上系统;部分项目因为网络配置等问题,可能第一时间还无法在本地启动,还会耽误不少额外的配置及调试时间;
  • 公司需要投入较多的资源,才能构建起匹配管理者需求的效能度量系统和安全管控系统,并且因为云端体系天生对开发者本地环境的弱管控性,效果只能差强人意;

阿里巴巴也不例外,随着近些年各项业务的飞速发展,人员的快速扩充,如何解决发展过程中带来的类似问题变得迫在眉睫。而云端研发作为一种新兴的技术形式,其独特的优势恰好可以用来解决上述问题。

云端开发的典型应用案例

案例 1:前端组件的开发

在阿里内部,存在大量的基于 Node.js 构建的前端工程,这些前端工程普遍采用模块化的组织方式,在开发过程中会随着需求迭代产生众多的模块(或组件)。同时,有些前端工程会邀请业务方参与共建,即由提出功能需求的团队在大的标准下自行开发组件,并发布上线,在平台中集成自己的场景。

在这样的背景下,组件的开发会被高度的抽象,大部分的步骤都可以由工具辅助完成(如下图中,业务开发人员只需要关注自己的业务逻辑即可),这样既提升了研发效率,又提升了组件的开发质量。

前端组件开发过程:

云端开发在阿里的典型应用场景 | 阿里巴巴DevOps实践指南

云端开发的开箱即用,恰好可以解决类似的问题。开发者打开浏览器就是一个配置好的环境,实现零配置上手;而环境配置可以由项目组的资深同事维护,配置好针对某个项目的系统版本、程序运行时、SDK 和 IDE 插件集合。相比使用本地的研发工具,云端开发可以实现:

  • 研发流程的产品化,从组件的新建到最终的发布一气呵成,不用再在多个平台工具上来回跳转;
  • 屏蔽用户操作系统的差异,提供统一的研发环境,不用再解决 Windows/Mac 的差异,不用担心本地Node.js 的版本问题;
  • 所有环境都会预装好必要的开发提效工具,如:规约扫描和修复工具、预览调试工具、各环境发布工具等;
  • 充分释放本地磁盘空间,不用担心磁盘被 node_modules 占满;

案例 2. 代码安全管控与研发过程数字化度量

在政务、金融以及部分高科技企业的研发场景中,对代码的安全管控要求极其严格。但近几年,公司内部源代码泄露的事件时有发生,有的被明码标价进行出售,标价数十万甚至上百万美元;有的直接被公开在网络上,任何人都可以访问下载。一旦发生类似事件,将会直接或间接造成商业信息泄露及公司声誉受损。

当使用本地开发时,源码的传输环境、本地的持久化介质不可控,对于员工有意泄露源码的行为似乎无可奈何。当使用云端开发时,一切都迎刃而解:开发者可以从代码库或需求直接打开网页开始云端开发,研发过程中代码不落本地磁盘,既能减少传输风险,又避免了员工本地环境被植入木马、从而在不知情的情况下泄露源码的可能;同时,在云端开发环境中可以对用户的浏览、拷贝行为做不同程度的管控,结合告警和系统自动拦截,可有效降低源码泄露的风险。

在阿里内部,当涉及到对保密性要求极高的项目,或者当企业外部成员参与对代码保密性有要求的项目时,我们会推荐项目团队使用云端进行研发,从而有效防止源码的泄露。

此外,随着越来越多的企业进入到数字化转型阶段,管理者期望能更加全面的看到企业员工的投入与产出,并且针对项目人员分布与研发过程效率做出更加及时的调整与改进。在过去,所有的数字化信息都依赖人工的反馈和统计,反馈的是否准确、统计过程中是否有纰漏都会直接影响管理层的判断。但如果把研发过程搬到云上,所有的研发过程数据就能生在云上、用在云上,想要借助数字化提升研发效率变得更加容易。

在阿里内部,团队中经常会出现一名正式员工带领多名企业外部成员完成项目的情况。在需要对企业外部成员的工作进行绩效评定时,传统的评定方式通常是参考需求完成数量、代码缺陷率等指标,但实际工作中需求有大有小、有难有易,完全基于结果指标进行评定很难做到公平公正,让优秀的员工脱颖而出。借助云端开发,可以让所有研发过程中的数据也透明出来,如各需求的编码时长、临时版本发布次数、过程代码与最终有效代码的比例、单位时间代码产出量等。通过结合研发过程数据,也可以让绩效评定更加透明公正。

总结

云端开发具备灵活定制、开箱即用的特点,借助好这两个特性,就可以创新性的解决掉传统本地开发过程中的顽疾。除了上述两个案例外,我们认为,当前适合云端开发落地的场景还可以是:

1、云原生场景中的轻量代码开发,如 Serverless 场景,这类场景中研发人员只需要集中式的编写业务逻辑,大量的框架类代码已被默认隐藏,并且调试、部署方式有别于传统研发过程,更适合云端开发的落地。

2、各类垂直化的场景,这类场景通常需要有针对性的定制,与特定的线上系统进行打通,只要能利用好云端开发灵活定制的特性,就有望实现开发阶段 10 倍效能的提升。

目前,阿里巴巴内部的云端开发平台目前已通过阿里云云效对外输出,前往ide.aliyun.com,秒级体验云端编码、代码智能补全等黑科技。

云端开发在阿里的典型应用场景 | 阿里巴巴DevOps实践指南

【云效云端开发】

云效云端开发平台 DevStudio 是面向云原生的 WebIDE 产品,只需一个浏览器即可获得与本地 IDE 一致的开发体验。通过预置开发环境,使用智能编码能力,即可快速地编辑、调试、运行、部署云端代码。

立即体验

云端开发在阿里的典型应用场景 | 阿里巴巴DevOps实践指南

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
BytePulse
BytePulse
Lv1
你可知?爱沵莪不怕输,只怕沵不快乐!
文章
4
粉丝
0
获赞
0