全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

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

发布时间:2022-08-11 09:47:54
发布人:wjy

  阅读指南

  开发环境的追求

  部署方案的要求

  大厂环境因素

  整合环境因素,导出方案

  展望未来

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

相关文章

oracle存储过程怎么写?

oracle存储过程怎么写?

2023-10-14
IT通常说的平台是什么意思?

IT通常说的平台是什么意思?

2023-10-14
结构化数据的相似度怎么计算?

结构化数据的相似度怎么计算?

2023-10-14
codeforces是什么?

codeforces是什么?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取