《研发在云端淘系云研发体系实践-包续兵.pdf》由会员分享,可在线阅读,更多相关《研发在云端淘系云研发体系实践-包续兵.pdf(28页珍藏版)》请在三个皮匠报告上搜索。
1、开发在云端淘系云研发体系实践/包续兵(柳千)我介绍阿巴巴-CTO 线-技术险与效能-前端程团队 O2 Code 云研发 OpenSumi 核开发 前 CODING Cloud Studio包续兵(柳千)录 内部云端研发体系简介 问题与挑战&实践经验 纯浏览器端 IDE 探索 One More Thing内部云端研发体系简介O2 Code OnlineAnt CodespacesDev Studio(Aone IDE)云开发平台OpeSumi 把开发环境搬到云端分步??创建云开发环境作空间 New Workspace+Node.js(8C 16G)React.js(4C 8G)Vue.js(4C
2、 8G)Angular(4C 8G)克隆代到码作空间clone连接到作空间开发但并没有这么简单问题与挑战开发体验 不同框架、项的些特定环境需求 需求到研发交付的链路顺畅性 开发体验法满,更习惯使主流 IDE/编辑器 对冷/热启动性能有定要求,不能本地克隆打开更慢问题与挑战理解、学习成本 操作复杂,需要有更便的预览、调试体验 本地使习惯与云开发环境差异,需要定学习成本怎么打开 3000 端?怎么切换 Node.js 版本?怎么同步我的配置?标准化研发环境开源社区实践 定义环境镜像 默认打开端配置 项运所需命令 内置安装的插件列表VS Code devContainer.jsonGitPod .g
3、itpod.yml研发环境开箱即,需配置业务场景模块IceRax程序FaaS业务模板基础镜像 根据业务特点定制研发环境及相关配置 与平台及具链整合,提供站式研发体验 容器使缓存池设计,提热启动速度业务定制镜像内置插件资源规格命周期键启动云研发环境业务模板业务定制镜像内置插件资源规格命周期研发平台业务解决案关联项脚架部署式简单点,最好可以傻式操作 监听端变动,提示户打开预览地址 对于 IDE 内打开的本地地址,动转换为代理后的地址 针对不同业务需求,提供多个 bu 域名代理http:/127.0.0.1:3000https:/-.alibaba- 基于业务模板对项启动链路标准化适,户需复杂操作,
4、键启动服务 标准化项编译错误监听,提供常错误解决式建议键运O2 Code 产品体系O2 Code DesktopO2 Code OnlineVS Code 远程开发VS CodeCloud IDE 云环境OpenSumi Server ExtensionsLSP,Linting,FormatterSource CodeLanguage SDKNode.s,Python,JavaOpenSumiRemote ModeBrowserWebSocketVS CodeRemote Development多端持纯浏览器端的探索为什么要做纯浏览器(容器版)基于容器 需要定启动时间 对轻量级场景来说过重 资
5、源成本纯浏览器 纯浏览器应,随时可 轻量级修改、提交便捷 接近 0 资源消耗纯浏览器的探索StackBlitz WebContainers基于 WebAssembly 的 Node.js 运环境VS Codegithub.devvscode.devVS CodeWebAssembly Support基于 WebAssembly 的多语运环境Code Sandbox Sandpack模拟 Node.js 部分 API 实现的浏览器端打包具开源社区的些实践纯浏览器的探索件系统插件系统语服务持容器端Native FSNode.js Child Process所有主流语纯浏览器端Browser FSM
6、emory FSWeb WorkerJavaScript/TypeScript 有限持One More Thing研 Web Container浏览器端 Node.js 运时 兼容 Node.js 16 持原运 wasm 包 npm、yarn、tnpm 持社区类似案V86WebAssembly.shBrowserixStackBlitz持环境兼容主流 x86 应Wasi/PosixNode.jsOSLinuxWindowsBSDShell&Core Utilities 基于Wasm运时的Syscall 虚拟件系统Shell&Core Utilities Node.js 虚拟件系统 HTTP络模
7、拟研案BrowserWeb WorkerService WorkerIndexedDBSharedArrayBufferAtomicCoresyscallThreadProcessFSTTYFileSystemInMemoryIndexedDBFS Access NetWeb Node进程管理UtilsBuint-InModuleInternalBindingsBashGitCoreUtilities(GNU)InternalBindingInternalModuleBuiltinModuleV8UVJSC+案1案2案3替换InternalBinding替换BuiltinModule替换V8Node.js Like,类browserify保留Node.js源码中的JS部分,替换C+部分基于浏览器的JS环境实现V8部分,其他部分编译成wasmWebNode业务项运演示参考链接 https:/ https:/ https:/ https:/webassembly.sh https:/