我在阿里云做云开发平台

简介: 你体验过云上的研发模式了没?

 


各大云厂商今年在开发者阵地侧逐渐开始向“云”化开发发展,最为显著的产品就是Cloud IDE,催生出来的趋势就是云端开发。云开发现阶段尽管在各大公司内部无法作为日常开发工具普遍推广,但是在某些特定场景下Cloud IDE云开发是非常让人着迷的:

  1. 即开即用,用完即走的场景,如编写函数(天猫精灵功能开发)、demo编写预览、code review以及代码仓库集成等
  2. 深度定制的统一的团队业务环境,团队成员无需配置复杂环境即可上手
  3. 天然架构在云之上,在开发态集成云产品的诸多服务
  4. 集成CI/CD,快速迭代
  5. Serverless架构应用测试(Cloud IDE也属于云上环境,可实时调试函数)

国内外很多厂商在争夺利益:

  • 微软是第一个绕不开的公司。微软在开发者工具以及IDE领域积累颇深,产出了众多明星产品:visual studio、vscode等,特别是vscode直接影响了Cloud IDE的发展进程。而且去年微软收购的另一个明星产品Github推出了codespace将Cloud IDE与Github开源社区结合在一起,实现“一云多端”的代码侧生态贡献。尽管codespace并未提供类似阿里云云开发平台的Serverless架构、行业案例支持、DevOps一体化等诸多功能,但未来微软极有可能将其配合Azure一起组件完成链路实现整个生态的闭环。
  • 谷歌的Firebase是主打BAAS的一款产品,它为后端服务提供Realtime database、Auth、Cloud Function、Message Push、Analytics以及Cloud storage等服务,无需服务器即可快速开发并使用以上诸多服务,特别适合个人应用和创业项目等。不过由于国内网络的特殊性,一些服务无法在国内正常使用,且网络RT较大。Firebase并未提供Cloud IDE而是推荐 “本地开发+Firebase SDK+CLI”的形式在本地进行开发调试与部署。

 

那么在云开发以及弹性计算领域,阿里云也有许多产品,比如阿里云云开发平台、FC控制台的CloudIDE以及Serverless Devs。云开发平台若要在遵循丛林法则的生态竞争中生存就必须有它独有的核心价值与手段来解决ISV的关键诉求,那么相比其他产品有哪些不同呢?

什么是阿里云云开发平台

阿里云云开发平台(Cloud Workbench:
https://workbench.aliyun.com/),是阿里云面向广大开发者及企业提供的云上研发工作平台,助力研发团队实现工作的在线化(团队在线、环境在线、代码在线、协同在线)以及研发模式Serverless化,帮助研发团队实现对行业架构经验及架构服务的高效分享与传播,极致提升研发效率,极致降低研发成本。

使用云开发平台架构的应用,天然是云原生的,天然是Serverless架构的,天然是支持在线开发、调试、协同、CI/CD的;由于云开发平台是架构在阿里云底层基建之上,因此开发者天然可以享受阿里云提供的基础设施红利(编排、代码仓库、devops工具监控与报警、异地多机房以及VPC网络隔离、多版本与灰度),这些基础设施对于大多数中小公司自建难度非常大且边际成本很高,而通过云开发平台使用这些服务大多是免费或者按量计费,提效降费自不必说;云开发平台针对不同业务场景不同技术栈的应用抽象了3种技术架构,并搭配了云底座与产品实现技术侧保障,省去架构的烦恼。

云原生 Serverless 架构

关于云原生以及Serverless有很多解释,那么朴素意义上的云原生指的是因云而生的软硬件以及架构,它包括为云或者弹性而设计的CPU或GPU,以及为云或弹性设计的中间件与使用这些中间件的应用。云原生不仅是实践,更是一种理念。开发人员的开发环境也要生在云上、长在云上,让产品设计、开发调试环境、部署、测试与灰度、POC验证、资源消费等等,全部基于云来进行,云开发平台就是贯彻云原生理念的一款产品,力图在云端覆盖产品的全生命周期。

 


Serverless字面意思为无服务器,实际上可理解为无运维架构。开发者无需关心底层硬件的采购与运维(机器、网络、流量)聚焦于业务逻辑开发,由云进行弹性扩缩容,并按量计费(这对峰值流量差异大特别是移动端应用尤为明显)。

 


云开发平台针对不同类型特点的业务分析和生成一个基于云产品矩阵构成的云原生 Serverless 架构(FAAS+BAAS),满足业务规模的不断扩大与快速迭代。

 


针对无状态的应用提供了最为轻量的FC架构,通过APIGW + FC + NAS等通用组合可实现自动弹性扩缩容、多版本共存、灰度与a/btest、文件持久化以及局部状态保存,满足大多数简单业务场景,当前线上应用大多为此种架构,以Web服务、云函数(天猫精灵)的形式运行。基于FC的架构向开发者屏蔽了底层PAAS部分,仅需在Cloud IDE中开发、调试代码,测试通过后在Cloud IDE部署到对应环境即可。

无状态的应用是指应用(函数)是运行在第三方提供的无状态计算容器中,并且在不复用容器的情况下应用(函数)可能会存在冷启动并且可以正常对外服务,这个时候应用(函数)可以认为是无状态,因此如果应用依赖本机的crontab、内存数据库亦或是本地文件存储等,都是有状态的应用,是需要做一些改造才可以使用基于FC的架构。

 


针对有状态或者微服务应用云开发平台提供了服务型SAE架构,可解决应用启动有状态的问题(通过SLB与docker镜像),并可兼容Spring Cloud、Dubbo、HSF等主流的微服务开发框架,完成服务注册、发现、调用与统计。

 


服务型ASK架构则是为更为专业的企业团队进行企业级Kubernetes容器化应用的生命周期管理而设计的,这里不做重点陈述。

云开发平台力图透过常见业务场景的表象抽象出几种普适的云端Serverless架构,在众多云产品的选择困难和搭配与架构的痛苦抉择中给予开发者或企业些许帮助或启发。基于云开发平台“生长出来”的产品是Serverless架构的,释放了架构师与运维人员的生产力,一切架构由“云开发平台”来完成,开发者负责端侧与服务端通用业务,一切有偿资源均按量付费。

搬站

搬站就是存量项目迁移到云开发平台上,直接升级为Serverless架构。理想中的搬站是不需要开发者修改任何代码就可以直接升级,但现实往往是残酷的:由于不同语言有不同的特性及特点,因此针对常见的语言云开发平台在性价比的权衡下提供了不同的搬站策略:

  • 基于Serverless框架的零代码搬站:Nodejs(全框架支持)与Python(同步与异步WSGI均支持)
  • 基于容器的低(零)代码搬站:Python、Java与PHP

Serverless 框架

 

Serverless框架是云开发平台抽象的一层抹平不同语言框架、语言运行时底层API(非FC运行时)的腻子,摆脱了FC只能运行简单函数的限制,将复杂用户层代码(非简单函数)通过代理的形式与FC运行时打通,实现业务侧代码零改动迁移。

基于Serverless框架的项目迁移其实对用户的业务进程模型有一定要求:

  • 单机对应单个业务进程
  • 无长连接需求
  • 应用无状态
  • 仅支持七层转发

采用Serverless框架迁移的项目,仅提供对HTTP与HTTPS协议的支持,对TCP或UDP服务暂不支持。

基于容器的低代码搬站

容器是云时代重要标志之一,基于容器统一的交付标准,云开发平台支持存量应用部署到三种Serverless(FC、SAE、ASK)中的任一计算服务当中。云开发平台提供基于各种语言基础镜像,让存量应用以尽少的修改来完成部署,成为云原生Serverless应用。

只需要提供一个镜像就可以运行在三套不同的架构下,在使用云开发平台提供不同语言的镜像前提下仅需修改相关前置配置文件即可实现迁移。

实时调试

针对Serverless应用无法即时调试的问题,云开发平台提供了另一种解决方案:Cloud IDE调试环境预置,在开发态即可模拟线上运行时。这样开发者便可以做到实时开发应用、实时预览、实时查阅日志。

 


若要针对不同技术栈提供不同的运行时容器,这需要依赖抽象的通用适配层来解决不同类型request及path处理机制、模拟“冷启动”环境初始化、测试域名安全性保证和私密性与超时策略、APIGW返回兼容处理;需要依赖存储层实现运行时容器的热更新与拉取策略灵活定制;而这一切则是通过操作IDE的workbench扩展无感知运行的,让开发者体验云端测试的便利,争取更长时间的云端留存。

 

云端断点调试是云开发平台的另一个优势。通过attach功能,Cloud IDE可以调试任意端口的服务,这也正好为调试运行时所用。通过与调试运行时打通,可实时查看运行时输出日志与context,获得与传统开发相同的体验。

DevOps 私有化

 

Serverless的优势在于低运维、无运维,开发者使用云开发平台可以从业务迭代出发,在多套环境(测试、预发布)验证(压力、性能、稳定性测试)后上线进行灰度(百分比),观测相关监控指标与功能性验证后进行线上全量部署,而这一切均可以在Cloud IDE中操作完成。当业务流量有峰值时底层的FAAS会进行相应的扩缩容实现弹性。此后根据用户反馈或业务迭代进行进一步开发。

轻量级的DevOps带来了几个好处:

  • 更短的业务迭代周期:覆盖应用全生命周期的工作流与自动化能力将带来应用持续交付能力以及跨团队协同效率的大幅提升,进而缩短业务的交付周期。
  • 更合理的人力资源分配
  • 更稳固的应用交付质量

轻量级DevOps自然有它的可取之处,可对企业而言却存在一个致命的问题,那就是如何兼容已存在的CI/CD流程。企业不可能立马摒弃现有的运维系统去采用云开发平台提供的部署流。大多数公司都有自己的开发工作流程,这包括内部代码托管、团队协作、权限控制与风控、公司独特的CI/CD,如何低成本的兼容这套原有体系是Serverless应用能否“本地化、私有化”,让企业和开发者接受与认同的最关键的一点。

 

云开发平台通过提供一个本地部署套件以插件的形式嵌入企业原有的发布流程中,以低侵入性、高扩展性、灵活的兼容性实现项目快速迭代,在不影响原有开发流程的前提下做到开发者无感知。本地部署套件可以让企业可以大胆尝试Serverless架构而无需考虑运维兼容性的问题,同时也可根据云开发平台的OpenAPI自定义工具实现DevOps的工具化与智能化,南北双向满足需求。

云开发平台对开发者的形态进行总结,把他们划分为三个层级:

  1. 对于小白、无历史包袱开发者,云开发平台提供了一个从创建、实现、测试、构建、部署全部环节的集成研发环境,支持一站式在云开发平台上实现Serverless应用。
  2. 对于有研发体系的ISV,研发、测试在本地完成。云开发平台和ISV的分工界面在代码仓库Codeup上,云开发平台提供全套CICD功能,开发者提交代码到Codeup上后,CICD功能、资源编排都交给云开发平台。
  3. 对于有研发体系并且有CI体系的ISV,提供基础设施的编排以及CD功能。

对于二、三层级,云开发平台通过提供OpenAPI接口,支持ISV进行集成,和ISV现有研发体系无缝融合。

通用行业解决方案

云开发平台通过行业场景与解决方案将技术与商业进行链接,通过将各行业最成功的技术实践案例抽象封装成一个个的行业场景解决方案,开发者可以基于云开发平台之上呈现出来的行业场景解决方案去创建一个应用,极大地加速商业化效率以及降低前期技术架构领域研究及准备的综合成本。

 


通过常见案例的切入并抽象为通用的场景需求,如天猫精灵应用、微信与支付宝小程序营销、前后端分离应用、博客、微服务等,对其进行解析。云开发平台从两个方向进行预处理:

  1. 分析和生成一个基于阿里云产品矩阵构成的云原生 Serverless 架构
  2. 将依赖的资源做打包上传

随后生成任务,通过 ROS,逐一进行生产、创建、安装,直至一个行业应用被初始化完成,最后发布到官方解决方案市场。

通过解决方案的自动实例化处理,我们实现了云开发平台最为核心的能力:

  • 帮助行业开发生态格式化、规范化地沉淀经验;
  • 帮助行业开发生态快速分发、复制行业应用开发经验;
  • 帮助行业开发生态无缝升级至先进的云原生Serverless架构;
  • 帮助阿里云无缝被集成至用户业务之中;

Nodejs解决方案示例:

 

云上协同

 


我们在实践中发现,在线化是一个新的趋势。云时代我们在探索一切资源上云,当然也就包括了代码上云、云上协同与开发。将实际团队映射到云端,在云上开发可以实现地域、时间与设备无关的全球协同,而且云上开发更重要的是可以在云端实现整个开发生命周期的闭环链路,更方便的集成开发侧的云产品。云上开发并不意味着放弃了传统的本地开发,两者是可以互补的。在本地+云开发的协同增强下,既可以在本地灵活自定义开发环境快速迭代,也可在云端实时调试部署与共创,这也得益于部署运维轻量化。

云开发平台对团队成员提供四种角色,团队拥有者、团队管理员、应用管理员和应用开发者,分别对应不同管理、运维和开发权限。目前有诸多活动场景使用了云上协同功能以及衍生出的“授课-开发-提交作业”模型,如阿里云开发者成长计划、部分高校的合作授课、阿里巴巴前端练习生计划等,极大减轻了协同成本。

最后

从传统线下研发模式过渡到云原生时代,解决云原生集成研发使用的"最后一公里"问题正是云开发平台的使命。云开发平台将继续在系统稳定性、云产品架构灵活性、代码易迁移性等方向不断深耕满足开发者诉求,从而聚焦于核心业务目标无需考虑运维与架构的繁琐事务,拥抱“云 + 端”开发模式。

作者:欲休

原文链接

本文为阿里云原创内容,未经允许不得转载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 事务日志备份_事务日志备份与恢复 5

14.5 用Bak文件恢复到故障点的奥秘如果数据库被损坏,我们就只能利用备份集文件(通常扩展名为BAK)来恢复数据库,如果备份集中包含了尾日志备份,我们同样能将数据库恢复到故障点。前面我们已经介绍了使用restore headeronly命令可以查看备份集文…

从no-code到low-code:企业级hpaPaaS的未来

简介: 本文将简单谈一谈基于 no-code > low-code > pro-code 渐进式思路的研发体系。 引子 宜搭负责人骁勇给我举过一个例子,我们小时候逢年过节穿的衣服,都是去裁缝店选一下材料、量一下尺寸,等个半个来月,讨回…

“解救”外卖骑手,美团首次公开算法规则!

整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)相信大家点外卖的时候都会注意到“预估到达时间”这一栏,那你是否好奇过这个时间是怎么得出来的呢?简单用距离除以速度?还是结合送餐距离、出餐时间和天气情况等更多…

Serverless 极致弹性解构在线游戏行业痛点

简介: 本文将通过剖析一个个具体的场景案例,以期望给相关的游戏开发同学带来共鸣,同时也希望能给非游戏行业的同学带来一些启发。 一、前言 1. 游戏客户上云关注点 游戏行业是一个富有创意又竞争激烈的市场,被称为第九艺术。游戏…

ACK正式支持对基于Alibaba Cloud Linux操作系统的集群进行等保加固

简介: 我们对基于Alibaba Cloud linux操作系统的ACK集群进行等保加固,意味着阿里云在云产品开发和交付的过程中将安全作为重要组成部分,将合规融入到产品的“血液”中,把安全植入产品的“骨髓”里,能够帮助有等保诉求的…

华为一口气发布十余款新品,HarmonyOS用户过亿

9月13日19:30,华为在线上举办了智慧办公新品发布会。本次发布会带来了华为MateBook 13s笔记本电脑、华为MateBook 14s笔记本电脑、华为MateStation X一体机、华为PixLab X1打印机、华为MateView GT 27英寸曲面屏显示器以及华为MatePad Pro 12.6英寸套装版等十余款新…

labelme实例分割_MaskRCNN在多个实例数据集上实践

刚刚开通付费功能,好奇心驱使我试试效果,这不,前两天试了一下,感觉也没啥新奇的。我的公众号使命是记录和分享个人学习经历,不会使用付费功能的。在此也非常感谢之前给我付费的小伙伴哈,哈哈,话…

技术干货 | 阿里云数据库PostgreSQL 13大版本揭秘

简介: 阿里云RDS PostgreSQL是一款兼容开源PostgreSQL的全托管云数据库产品,自2015年首次发布以来,根据用户需求不断升级迭代,已支持9.4、10、11、12等多个版本,覆盖了高可用版、基础版、只读实例等多种形态&#xff0…

国家能源集团携手华为首次部署矿鸿操作系统,开创工控新纪元

9月14日,由国家能源集团携手华为公司共同举办的“矿鸿操作系统”发布会在北京圆满举行。矿监局、工信部、科技部、能源局、煤炭工业协会、国家能源集团、华为等政府机构与企业代表出席,共同见证了“矿鸿操作系统”的正式发布。面对煤矿数字化、智能化的快…

MaxCompute在电商场景中如何进行漏斗模型分析

简介: 本文以某电商案例为例,通过案例为您介绍如何使用离线计算并制作漏斗图。 背景 漏斗模型其实是通过产品各项数据的转化率来判断产品运营情况的工具。转化漏斗则是通过各阶段数据的转化,来判断产品在哪一个环节出了问题,然后…

ado.net mysql 事务_ADO.NET事务

在发布System.Transaction命名空间之前,可以直接用ADO.NET创建事务,也可以通过组件、特性和COM运行库(位于System.EnterpriseServices命名空间中)进行事务处理。本文如题所示,介绍在这些传统事务处理方式中较为简单的“ASP.NET事务”。在传统…

这可能是大型复杂项目下数据流的最佳实践

简介: 实际项目中沉淀的数据流最佳实践。 数据流是前端一直以来都存在的一个问题,我们项目沉淀了一套最佳实践,如有问题,欢迎探讨 在旧的 Done 项目中,代码复杂度高,已经到了“牵一发而动全身”&#xff0c…

淘宝推荐、视频搜索背后的检索技术竟是它!深度揭秘达摩院向量检索引擎Proxima

简介: 淘宝搜索推荐、视频搜索的背后使用了什么样的检索技术?非结构化数据检索,向量检索,以及多模态检索,它们到底解决了什么问题?今天由阿里巴巴达摩院的科学家从业务问题出发,抽丝剥茧&#x…

ipython和jupyter哪个好_对Python开发者而言,IPython仍然是Jupyter Notebook的核心

如果你不明白 Jupyter 是什么,这么说吧,它拥有和 IPython 同样的代码,并且是由同一批人开发的,只不过取了一个新名字、安了一个新家。下面这个注脚进一步说明了这一点:我从声明中解读出来的信息是,“Jupyte…

这个高薪行业正在大量招人,你会考虑吗?

作者 | 侯淼淼 出品 | 《新程序员》当人们提及“程序员”这一职业的时候,大多数人的第一想法往往是高薪。然而近年来,随着造车势力的兴起,新一轮的高薪岗位抢人大战正式打响。2021年以来,一汽、东风等传统车厂招聘岗位数量持…

AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…

简介: 本文是#春招专栏#系列的第1篇,根据高德机器学习研发部负责人damon在AT技术讲坛所分享的《AI在出行领域的应用实践》的内容整理而成。 前言:又到春招季!作为国民级出行服务平台,高德业务快速发展,大量…

lsof查看进程占用文件_Linux 利用lsof命令查找已经删除的文件来释放磁盘空间

测试环境一台服务器/ 根目录空间使用率达到94%,但是通过du -sh * 发现实际空间没没用用到那么多,初步怀疑,之前删除的文件,有运行中的进程一直占用,导致空间没有释放,如图通过du -sh * 发现共实际使用不到1…

AcWing 1238. 日志统计(双指针,滑动窗口)

题目&#xff1a; 1238. 日志统计 - AcWing题库 数据范围 输入样例&#xff1a; 7 10 2 0 1 0 10 10 10 10 1 9 1 100 3 100 3输出样例&#xff1a; 1 3 思路&#xff1a;双指针 代码&#xff1a; #include<iostream> #include<cstdio> #include<cmath>…

基于 Wasm 和 ORAS 简化扩展服务网格功能

简介&#xff1a; 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库&#xff08;一个 OCI 兼容的注册库&#xff09;中&#xff0c;然后通过 ASM 控制器将 Wasm Filter 部署到指定工作负载对应的 Pod 中。Wasm Filter 部署中的所有步骤都使用…

漫话:如何给女朋友解释什么是元宇宙?

作者 | 漫话编程来源 | 漫话编程Metaverse元宇宙这个词&#xff0c;第一次出现是在1992 年&#xff0c;美国著名科幻作家尼尔・斯蒂芬森&#xff08;Neal Stephenson&#xff09;的小说《雪崩&#xff08;Snow Crash&#xff09;》中。在书中&#xff0c;尼尔・斯蒂芬森描述了一…