单页应用程序中智能DevOps的五种策略

开发 前端
DevOps在开发生命周期中起着不可或缺。本文关注5种能在单页应用程序中使用DevOps的策略。

本文转载自公众号“读芯术”(ID:AI_Discovery)。

DevOps在开发生命周期中起着不可或缺。大多数前端框架都配有如Webpack一般的模块捆绑器,以负责繁重的工作。但是,我们仍然需要规划如何连接捆绑持续集成(CI)和持续交付(CD)环境的前端工具。

本文关注5种能在单页应用程序中使用DevOps的策略。

[[348753]]

1. 减少环境配置

当使用React、Angular和Vue创建单个页面应用的结构时,常规操作是每个环境使用单独的配置文件。通常,开发、生产等使用一个环境配置。若每个环境彼此不同,便有多个配置文件。

但是,在本应使用不同捆绑配置情况下,若开发和生产只使用两个配置,而其他应用程序特定的变量,如API路径和主机名等在生成后修改,又会怎么样呢?通过保留这两个配置,你可以分开本地开发配置与其余配置(生产、暂存和质量保证)。

如果将Build和Release划分为两个管道,可以先放完整的占位符,然后反复使用Build管道来创建构件。之后,根据部署环境,可以在Release管道中动态替换这些变量。这种方法主要有两个优点: 

  • 可将相同捆绑器推入多个环境(使用基础的字符串替换),节省宝贵构建时间。
  • 掌握对捆绑器所做的确切更改,特别是在特定环境中。

2. 设置质量门

在Pull Request合并到开发分支之前,先构建前端的做法很常见。

质量门的概念连接着Pull Request构建,你可以在其中设置其他步骤(或门)以确保质量。例如,可以用一个构建步骤来用linter执行操作,以确保修改或添加的任何代码与已经遵循的代码样式没有任何偏差。做完这步后,可以用SonarCloud等高级代码质量工具来进行质量检查,通过详细的见解向Pull Request本身提供反馈。

你或许会问,为什么在签入代码之前就不进行IDE级别的这些代码质量评估?是的,在IDE级别进行这些评估(如果有可用的IDE插件)很重要,这能避免花时间在反馈周期上。但是,保证质量以进行整体代码质量管理同样重要。

[[348754]]

图源:unsplash

3. 缓存程序包安装

NPM软件包安装占很大一部分端构建的执行时间。重复构建时,由于很少更改外部依赖项,很难改善这个情况。

改进后,你可以设置一个缓存步骤来缓存这些依赖项。在特定的DevOps平台(例如AzureDevOps)中,预定义的步骤可以执行此操作。但是,如果无法在DevOps平台中找到它,可以基于package.json内容创建一个哈希函数,并将其用作缓存键来执行相同的操作。

4. 寻找并行性

在某些情况下,当在DevOps管道上构建Web应用程序时,需要同时构建前端和后端。由于大多数DevOps平台都使用代理支持并行性,因此,可以将前端构建和后端划分为不同的代理。借此,完成构建所需的时间便减少了。

如果将DevOps步骤划为Build和Release管道,甚至可以在Release管道上组合前端和后端构建构件(前提是两者都部署到同一服务器上)。

此外,即使在构建管道中,还可以用其他步骤来执行并行操作。重要的是,尝试使用并行性进行各种优化,并评估其对整体DevOps的影响,以根据经验教训进行改进。

5. 自动化测试的有效执行

最后,我想采取一个关键步骤,需要在DevOps管道中进行设置。尽管最好是在Pull Request级别执行这些步骤(在开发人员的设备上更佳),但需要根据测试执行时间来确定正确的执行位置。

例如,作为质量门的一部分,在Pull Request构建时执行单元测试是一种常见的做法。但是,如果执行要花几分钟时间(常事),则在此级别上运行E2E测试可能会成为一笔开销。因此,评估情况并决定在不同级别运行E2E测试用例至关重要。

图源:unsplash

如你所见,我们可以对DevOps进行不同的改进,以提高效率并提升应用程序的整体质量。此外,其中的一些技术同样适用于后端。

虽然本文只讨论了五种策略,但是这些策略的方向可能会有助于进一步改进管道,以提高其性能(如根据构建步骤在各个级别进行缓存的技术)。

但还需要注意的是,每项改进都需要付出一定的代价。如果使用相同的缓存示例则应该知道,即使你指定NPM依赖项的自动更新小补丁,也有可能不使用库的最新更新。最后,希望这些步骤将有助于你更好地使用DevOps并改善现有管道。

责任编辑:赵宁宁 来源: 读芯术
相关推荐

2020-03-27 09:20:00

单页应用程序网页设计SPAs

2018-02-24 11:59:11

安全策略应用程序安全策略

2009-01-16 09:22:40

Web应用程序Web程序管理Web服务

2023-04-09 14:58:05

DevOps开发

2014-02-19 11:12:04

WAN优化WAN

2022-07-04 17:32:12

DevOpsAIOps

2020-08-03 09:26:55

存储内存技术

2014-12-16 09:35:13

DevOps

2014-02-24 10:50:32

DevOps云应用

2018-08-26 22:39:08

单页应用HATEOAS

2009-04-01 14:33:33

2023-11-30 07:48:13

网络韧性应用程序

2021-02-20 09:57:02

人工智能移动应用

2010-03-02 13:06:22

SilverLight

2022-05-05 09:31:34

Go语言漏洞

2022-08-16 20:04:08

移动应用测试

2018-06-12 17:11:30

应用程序云计算云端

2019-02-14 09:30:40

Ubuntu应用程序UI

2022-09-27 15:16:42

开发Android应用程序

2009-07-28 19:14:24

桌面虚拟化服务器IT
点赞
收藏

51CTO技术栈公众号