千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 大厂如何考虑开发环境与部署方案

大厂如何考虑开发环境与部署方案

来源:千锋教育
发布人:wjy
时间: 2022-08-11 09:47:54 1660182474

  阅读指南

  开发环境的追求

  部署方案的要求

  大厂环境因素

  整合环境因素,导出方案

  展望未来

  QA

  首先我们强调一点,任何公司的技术基建都是随时间推移去不断改进和建设的,任何纯技术输出都必然存在它的边界。而业务拓展、组织架构变迁、新兴技术迭代等都是不断发生的,这意味着技术基建必然也是不断改进的。

  拿整个互联网来说,也是由“石器时代”不断演变而来。

  而一切解决方案都是为了针对某类需求。

  开发环境的追求

  作为团队中的开发者一员,无疑要追求美好的开发体验,具体可以列举为:

  高效的编译速度

  屏蔽环境搭建与配置,专注内容开发

  团队编码规范的显式约束

  编码质量的保障

  各种运行环境的快速切换

  与对应需求的绑定与关联

  部署方案的要求

  部署成果的质量与稳定性保障

  部署流程的快捷

  高时效性的容灾处理

  整合环境因素,导出方案

  除开以上普遍意义的需求,大厂本身的环境更是决定了解决方案的重要因素。 如阿里:

  人员方面: 项目组众多(开发者数量多)、分内勤和外包(开发成员之间代码力差距相对较大);

  技术方面:技术栈相对统一(主要是业务方面: JAVA-SpringCloud,JS-react,veex… ), 技术输出明确划分内网和开源。

  资源方面:有钱任性,相对宽松。

  结合以上,我们将需求映射成需要解决的问题:

  在云IDE之前的年代里(包括现在大多项目组还是使用本地编译器), 如何统一开发者的开发环境和规范?如何统一生产变量?(即如何确保本地打包环境统一,不会出现不同版本依赖或者丢包等打出预期之外的包)

  说白了,这个问题可以简化为: 如何抹平不同开发、生产环境的差异。

  做部署流程的整合,提效。

  来自阿里的答案

  拿阿里的DEF工具举例:

  1、“研发套件”集成式脚手架

  无论哪个项目组的业务开发,他们对于环境本身的配置其实大都是无感知的,以下图为例

大厂如何考虑开发环境与部署方案786

  阿里的DEF工具,是通过对本地研发过程中进行总结收敛,抽象出初始化、编译预览、构建、测试、发布 这五个本地工具的通用功能节点。将原有的插件能力根据项目研发类型进行分类后,总结沉淀出每一类研发类型的标准本地工具 --研发套件。

  借助套件概念的封装,用户在不同项目之间研发的时候直接通过统一的命令,就能完成项目研发对应工具服务的启动使用。

  门神

  在DEF中集成门神(相当于提交代码前后的钩子,可类比git-hooks的功能),负责团队开发规范的约束(lint,cr,其他插件任务等)。

  云端IDE

  而在这两年里,云IDE开始崭露头角,整个开发环境迁移至云端,更是直接从根本上解决了开发环境差异的问题。

大厂如何考虑开发环境与部署方案1088

大厂如何考虑开发环境与部署方案1089

  2、统一的研发部署平台

大厂如何考虑开发环境与部署方案1104

  说白了就是对于不同的项目,基于它们的技术选型进行宏观的分类,枚举出每一种类型的最佳部署体验,集成到一个平台。

  让用户可以体验“一键发布”的功能,而不用关心具体的部署细节配置。

  3、DEVOPS平台

大厂如何考虑开发环境与部署方案1206

  比如上图云效平台,打通自产品需求-设计-开发-测试-发布-运维一条链路的流程管理平台,高效提升效率。 关于DEVOPS的介绍这里就不再做其他赘述,不太了解的同学可以自行搜索一下。

  4、展望未来

  近年来,上云成了一种潮流,以云服务为核心扩展出的解决方案比比皆是。目前来看,云依然面向未来。 而随着对AI领域的不断探索,各大厂也大多有相关建树。

  但无论如何,基建方案与规模的决定因素,永远在于业务与环境。

  5、QA

  Q: 大厂开发时和部署时类库的引用和存放是一致还是不同?

  A: 一般而言,我们要保障开发和生产环境的统一,以确保产出与预期一致。当然也有其他情况,这个要看项目本身有没有不同的需求。 一句话,不要脱离业务讲技术,更不要盖棺定论。

  Q: 模块是放在项目中还是放在CDN之类的服务器?

  A: 这个问题中“模块”这个概念可能不太清晰。这里指的是前端吧,前后端分离的模式下,前端生产出的包都是静态资源包,一般都是扔到CDN里嘛。

  Q: 渲染网页用的是nginx还是其他动态web服务器?

  A: 还是那句话,不要脱离业务讲技术,更不要盖棺定论。举个例子,某项目纯node服务+SSR输出网页,本身就是一个web服务的项目何必再需要web服务器?

  Q: 会选择自己写模块还是在社区里找模块?

  A: 理论上来讲,要尽可能的避免重复造轮子。在已有可信任的满足当前需求的轮子的条件下,尽量不要自己造嘛,因为大家的工时都是很珍贵的。在保障不耽误生产并且保障产品质量的情况下,为了能优化项目本身,也可以自己做嘛。

  提倡做有意义的事,而不是多做事。

  PASS: 对于以上所有问题哈————无论什么技术方案,其本身都不是绝对的,技术是为了服务业务的。

  更多关于html5培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT