不可变构建及如何提升构建效率(二)|学习笔记

简介: 快速学习不可变构建及如何提升构建效率(二)

开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计不可变构建及如何提升构建效率(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/82/detail/1269


不可变构建及如何提升构建效率(二)

 

内容介绍:

一、可预期的系统,始于可预期的制品产物

二、几个常见的构建问题

三、不可变构建

四、构建效率问题:积少成多

五、提升构建效率的实践建议

四、构件的效率问题:积少成多

这是简单的一个概念,当然也需要去检视自己身边,观察是否存在不对的地方。这里其实所有的东西的准确性,构建准确性,永远比速度更重要。因为如果一旦做的不准确,不一致,经常发生变化,或者说版本不可控,那所有东西就是无用的,这就是浪费。如果在做好准确性的前提下,另一个单纯从构建的角度去考虑构建的效率问题。这里来看一个简单计算公式:100个工程师,也就是从公司选择一个团队出来,数量是平均每人每天构建10次。

不管是本地,还是 CIA 基础上构建十次,每次假设1分钟时间。那每天需要耗费16个小时,构建时间要达到16个小时,这是非常大的数据,也是非常大的一个损耗,很多时候影响工程效率的大因素,就是构建速度太慢了。这个问题普遍存在,因为最近群里关注大家的一些问题,发现了大家提到的构建慢等各种各样的问题。确实很现实,因为构建影影响地方很多,从老师的角度讲,可以提供给大家关于构建效率方面的一些建议。

 

五、提升构件效率的实践建议

基本原则:无论使用什么提升构建效率的手段,一定要保证准确性,也就是构建的准确性永远大于构建效率。

1、实践建议:

(1)应用瘦身,减少应用的依赖项,例如应用是否过大,是否依赖数量过多,是否不需要某些依赖,基础镜像是否可以缩小。

(2)分层构建,复用底层的构建结果,例如假设拥有很大的系统,其依赖了10个组件,如果每次都要将全部组件拉下来,那可能会导致每次时间很长,效率变低。例如之前在电信公司时,使用 INC 的系统,拉代码要整个下午的时间,那导致构建可能一晚上不一定可以完成,然后如果整个组流程走一遍的情况,一整天时间就浪费了,这肯定不行。所以系统可能存在多个层次。那应该把底层的东西,先构建出来,能够被上层所复用,使构建效率能提升,可以进行增量式的构建。

(3)构建缓存,避免重复拉取依赖和重复构建,例如像 model 这样的东西,有时候一个代码才几十 K,但是 model 是可以达到2个 G 这样的情况。避免重复拉取依赖和重复构建,这在很多工具里都有,包括云效里有这样的能力。

(4)网络优化,保证代码、构建机器和制品库之间的低网络延时,很多构建问题都是网络问题。自己本机代码构建机器,比如依赖的制品库,就是 NPM 的源,或者 python 的源,这跟自己本机之间的网络延迟太大,是很典型的,NPM 与python可能都要使用镜像也是个原因。

首先要保证其低网络延时,另一点就是代码和构建机器是否在同一个网络域。比如代码可能在 get home,但是构建机器在云效,那就会发现它们之间的延时肯定不会太短,因为它们整个机器的网络路由就比较长。

(5)仓库镜像,减少拉取依赖项的时间,自己可以在公司内部做镜像。

比如简单 maven 仓库,然后像 python 仓库,很多的工具都可以完成,一旦存在计量仓库时,可以极大的减少拉取依赖项的时间。此投资非常划算,国内其实也有较多这种计量仓库,因为有时涉及到网络的影响,有防火墙。这会导致时间特别久,所以这里团队云效,其实也搭建仓库,然后相对减少垃圾的时间。

这里提到了一些提升构建效率的建议。这里每个建议里,不是针对某个语言,而是所有语言其实都需要考虑这些。另一点刚才提到需要构建。那构建应该从哪里来?

最终需要找到相应的源头,刚才也提到了,要最终保证制品和产物的一致性,必须保证代码版本的一致性,依赖的一致性,还有环境的一致性,以及构建脚本的一致性。这些都是在日常生活中,由源代码去管理的。

相关文章
|
30天前
|
缓存 Java Android开发
构建高效的Android应用:内存优化策略解析
【5月更文挑战第25天】在移动开发领域,性能优化一直是一个不断探讨和精进的课题。特别是对于资源受限的Android设备来说,合理的内存管理直接关系到应用的流畅度和用户体验。本文深入分析了Android内存管理的机制,并提出了几种实用的内存优化技巧。通过代码示例和实践案例,我们旨在帮助开发者识别和解决内存瓶颈,从而提升应用性能。
|
27天前
|
缓存 监控 Android开发
构建高效Android应用:从优化布局到提升性能
【5月更文挑战第28天】 随着移动设备的普及,用户对Android应用的性能和响应速度有着越来越高的期待。本文旨在探讨一系列实用的技术和策略,帮助开发者在设计阶段就将性能考量纳入其中,以实现流畅和高效的用户体验。我们将深入分析布局优化、内存管理和多线程处理等关键领域,并提出具体的解决方案和最佳实践,以便开发过程中能够有效地避免常见的性能瓶颈。
|
1月前
|
缓存 测试技术 Android开发
构建高效的Android应用:从设计到实现
【5月更文挑战第2天】 在移动设备日益普及的今天,打造一个既快速又流畅的Android应用对于开发者而言至关重要。本文将深入探讨如何优化Android应用的性能,涵盖UI设计的最佳实践、代码层面的性能提升技巧以及利用最新的Android框架和工具进行应用开发的策略。我们将通过实例分析,揭示那些影响应用响应速度和稳定性的关键因素,并提出切实可行的解决方案,帮助开发者构建出色的用户体验。
|
1月前
|
存储 缓存 数据库
构建高效Android应用:内存优化策略深度剖析
【4月更文挑战第29天】 在移动开发领域,性能一直是衡量应用质量的关键指标之一。特别是对于Android平台,由于设备硬件配置的多样性,内存管理成为开发者面临的一大挑战。本文将深入探讨Android应用内存优化的有效策略,旨在帮助开发者提升应用性能,减少内存消耗,避免常见的内存泄漏问题。通过对Android内存管理机制的分析与实际案例的结合,我们将提供一系列实用的优化技巧,助力应用在竞争激烈的市场中脱颖而出。
|
1月前
|
前端开发 JavaScript 小程序
系统刷JavaScripit 构建前端体系(语法篇)
系统刷JavaScripit 构建前端体系(语法篇)
22 1
|
1月前
|
存储 缓存 安全
【C/C++ 项目优化实战】 分享几种基础且高效的策略优化和提升代码性能
【C/C++ 项目优化实战】 分享几种基础且高效的策略优化和提升代码性能
120 0
|
10月前
|
Web App开发 缓存 JavaScript
简洁、巧妙、高效的长列表,无限下拉方案
简洁、巧妙、高效的长列表,无限下拉方案
91 0
|
SQL 监控 NoSQL
技术组件优化分析:原理、方法与实战分享
对一个固定的技术组件的分析优化思路,即组件不是我们开发的,但又要分析优化它,怎么办? 当数据库的CPU并没有全部用完,而是只用了几颗的时候,如何具体定向?将用到查看数据库本身线程栈的方法,这和前面直接看trx表有所不同。
99 0
|
运维 Cloud Native 安全
不可变构建及如何提升构建效率(一)|学习笔记
快速学习不可变构建及如何提升构建效率(一)
85 0
不可变构建及如何提升构建效率(一)|学习笔记
|
SQL 消息中间件 运维
环境管理的应用场景(一)|学习笔记
快速学习环境管理的应用场景(一)
227 0
环境管理的应用场景(一)|学习笔记