《配置管理最佳实践》——2.7 把构建做得更好

简介: 构建工程师不仅要随时关注构建的过程,还要关注开发人员调试构建、解决构建问题的方法,甚至是每一步的操作。有这样一个实例,我观察到每当构建失败,开发人员就会查看某个特定的 JAR 文件是否被创建,是否包含在了 WAR 文件当中。

本节书摘来自异步社区《配置管理最佳实践》一书中的第2章,第2.7节,作者: 【美】Bob Aiello , Leslie Sachs著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.7 把构建做得更好

在很多公司,已经建立了良好的构建流程,我的角色就是帮助改善现有流程,以支持更多的环境(比如QA环境和生产环境)。有段时间,我发现有的构建过程只有技术背景很强的专业技术人员才能理解和使用好,且在使用中极易出错,结果也不可靠。构建工程的目的是提供一个可靠、快速、清晰的构建过程来支持产品的构建和部署。

2.7.1 鲍勃的构建秘方
这一小节将介绍建立可靠的、可重复的构建过程的秘诀。在很多环境中,我的方法都可以帮助开发团队成功地完成构建,并且部署到QA环境(生产环境)中去。通常情况下,我都是在项目或者公司濒临失败时才加入其中。如果采用我的方法,通常可以在3个构建之内解决他们的构建问题。我的很多技术都是基于在纽约大学工业组织心理学研究生课程中学到的方法。在其他学科学到的知识帮助我建立了一套独特的方法。团队失败的原因有很多,只要是构建工程的问题都可以通过改进构建来解决。

2.7.2 测试驱动的构建
构建工程师不仅要随时关注构建的过程,还要关注开发人员调试构建、解决构建问题的方法,甚至是每一步的操作。有这样一个实例,我观察到每当构建失败,开发人员就会查看某个特定的 JAR 文件是否被创建,是否包含在了 WAR 文件当中。我并不完全了解为什么有的时候这个 JAR 文件没有被创建成功。之后在构建脚本中,我也加入了这一步骤,在以后的每次构建中,构建脚本都会检查这个JAR文件是否存在。如果某步检查到这个 JAR 文件没有成功生成,那么构建脚本就会提前通知我们,JAR文件缺失将会导致构建失败。虽然这样做可能有点小题大做,但是主动测试构建将会帮助你生成可靠的构建,并且一旦出现错误你也会很早就得到提示。开发人员一般都坚信自己的构建是完全没问题的,因此并不会主动地去测试自己的构建。

2.7.3 信任,但仍要核查
作为构建工程师,我的做法是“信任,但仍要核查”。也就是说我们信任生成的每个构建,但仍然需要对它们进行测试。当你的构建结果事关他人的健康和安全时,这就尤其重要。也许一个构建的错误可能就会导致飞机相撞或者其他更严重的事件。他人的健康和安全都是至关重要的事情。例如,航空工程师花费了大量时间制造准确、易理解的控制器,以避免出现问题。

2.7.4 飞机的驾驶舱
在某些领域,经常需要付出大量的努力去避免可能出现的错误。之所以这样关注整体质量,是因为任何一个错误都可能导致有人丧生。就像本节前面讨论的一样,采用这样的思路设计驾驶员座舱就是为了减少错误的发生。上面的控制器都容易理解,接口也很清晰。我觉得软件工程师需要向飞机驾驶舱设计师学习,把它应用到应用程序构建、部署过程和自动化的设计上。曾经尝试创建可以避免错误,且可以主动检测构建问题的构建系统。构建和部署的自动化需要想办法避免可能的错误发生。我做过多次构建工程改进的项目,每次都是把团队从不稳定、不可靠的构建状态中解救出来,成功地实现一个完全可重复的可靠的流程。下面列出来一些重要的关注点,供设计或改进构建系统时参考:

  • 构建过程的每一步都要易读且易执行
  • 自动检查构建过程中可能的出错点,核实构建是否成功
  • 结构化组织自动构建过程,避免一个错误破坏整个构建
  • 通过状态公告板和构建报告展示构建状态
相关文章
|
13天前
|
NoSQL Java API
构建高效的微服务架构:策略与实践
【4月更文挑战第6天】在当今软件开发的世界中,微服务架构已经成为实现系统灵活性、可扩展性及快速迭代的关键。本文将深入探讨如何构建一个高效的微服务系统,包括关键的设计原则、技术选型以及实践中的挑战和解决方案。我们将从微服务的基本概念出发,逐步深入到具体的实施步骤,最后讨论持续集成、监控和故障恢复等运维策略。
|
29天前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
6天前
|
运维 Prometheus 监控
构建高效自动化运维流程的策略与实践
【4月更文挑战第13天】 在现代IT基础设施管理中,自动化运维已成为提升效率、确保稳定性和快速响应变化的关键因素。本文将详细探讨构建一个高效自动化运维流程的战略规划、关键技术选型以及实际执行过程中的最佳实践。我们将通过具体案例分析,展示如何整合配置管理工具、持续集成/持续部署(CI/CD)管道、监控告警系统以及日志分析平台,来形成一个协同工作的整体解决方案。文章的目标是帮助运维团队构建出能够适应不断变化需求的自动化框架,实现运维工作的标准化、系统化和智能化。
|
11天前
|
存储 运维 监控
构建高效自动化运维体系的关键步骤
【4月更文挑战第8天】 在快速发展的IT环境中,自动化已成为提升运维效率和可靠性的核心驱动力。本文将详细探讨构建一个高效自动化运维体系的必经之路,从基础设施的自动化部署到监控、故障响应与修复,再到持续的性能优化。通过分析具体的技术实现和最佳实践案例,揭示如何利用现代技术栈打造能够支撑复杂服务架构的自动化运维平台。
|
18天前
|
消息中间件 安全 API
构建高效微服务架构:策略与实践
【4月更文挑战第1天】在数字化转型的浪潮中,微服务架构已成为企业追求敏捷、可扩展和灵活部署的重要技术手段。本文将深入探讨如何通过合理的设计原则和先进的技术栈,构建一个高效的微服务系统。我们将剖析微服务设计的核心要点,包括服务的划分、通信机制、数据一致性以及安全性问题,并结合案例分析,展示如何在现实世界中应用这些策略以提升系统的可靠性和性能。
|
4月前
|
存储 人工智能 安全
构建安全可靠的软件定制开发环境:关键步骤与最佳实践
随着信息技术的飞速发展,软件开发已经成为各行各业不可或缺的一部分。然而,随着软件应用的普及,安全问题也日益凸显。从个人隐私泄露到企业数据泄露,从网络攻击到恶意软件感染,这些安全问题不仅给用户带来损失,也给企业带来巨大的风险。因此,构建安全可靠的开发软件成为了保障用户数据安全
|
Kubernetes Cloud Native JavaScript
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
313 0
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
|
运维 数据可视化 关系型数据库
工具应用最佳实践系列之——逻辑编排
本篇文章将为大家介绍如何使用阿里云逻辑编排,轻松实现阿里云账单定时自动化导入自己的数据库,便于后续分析。
工具应用最佳实践系列之——逻辑编排
|
前端开发 JavaScript 缓存
进阶:构建具备版本管理能力的项目
webpack是时下十分流行的编译和打包工具,它提供一种可扩展的loader的方式,简单的配置,便可以编译打包各类型的文件,包括js、css、image、font、html,以及各种预编译语言都不在话下。
2822 0
|
数据可视化 API 数据库
一个更好的可视化微服务架构的方式
本文讲的是一个更好的可视化微服务架构的方式【编者的话】如何快速地可视化一个微服务架构,本文作者有一个很酷的办法,赶紧来看看吧!
1473 0