什么是软件部署?

已完成

根据维基百科 (Wikipedia) 的说法,“软件部署”由所有使软件系统可供使用的活动组成。常规部署过程由多个相互关联的活动组成,它们之间可能存在转换。 每个软件系统都是唯一的;因此,“部署”应解释为必须根据特定要求或特性定制的常规过程。

有些人将“部署”和“安装”这两个术语互换使用,但是软件安装仅是软件部署过程的一部分。 部署涉及的内容更多。 部署活动可以包括:

  • “堆架”一台服务器。
  • 将一个更新的软件部署在该服务器上。
  • 使用脚本和基础结构之类的代码。
  • 甚至在办公室中来回行走,使用 U 盘在计算机上手动安装软件。

手动部署软件会占用大量人力,并且扩展性不佳。 在整个组织中推送新软件或更新现有软件时,自动化可以更轻松地、更经济高效地确保一致性。

作为本学习路径的一部分,我们的重点是如何以最佳方式部署软件以提高可靠性。 本模块不仅将解决软件部署,还将解决云基础结构的部署。 部署服务或解决方案的参考可能意味着部署软件、云基础结构和配置,以及可靠地使软件系统可供使用的所有功能。

场景:史诗式部署

“史诗”一词的意思是“宏伟、不朽或浩瀚”。但在本文的上下文中,这不是一件好事。 术语“史诗”是由 Jez Humble 在其《持续交付:通过生成、测试和部署自动化实现软件可靠发布》(Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation) 一书中首次提出,因为它代表大规模(和大规模颠覆性)任务。 以下示例演示了它通常如何发生:

  • 组织开发与销售相关的应用程序。 该应用程序每年正好更新两次。
  • 在这些更新期间,将部署所有新功能、bug 修复(重要和次要)以及依赖项更新。
  • 该年度的第一次部署计划在劳动节周末进行,第二次部署在感恩节之后的周末进行。
  • 每次更新都是“全员参与”的情形。 应用程序团队、支持团队、基础结构团队、管理人员;每个人都参与了部署。
  • 部署正在进行时,各服务暂时处于脱机状态。
  • 历史记录显示,部署始终充满问题、手动工程、故障排除和配置管理更改。
  • 它很少能顺利进行,并且完成后,它常常被认为是以不可重现方式拼凑起来的。

这种部署状况并不好。 史诗式部署方法是一项繁重的手动任务,它带来了许多问题:

  • 复杂。
  • 压力大。
  • 有风险。
  • 速度慢。
  • 由于所有步骤复杂,此方法不可重现。
  • 它通常需要多个专家才能完成部署。

由于此过程漫长而艰巨,因此必须将其安排在对用户生产力造成最小干扰的时间进行,这意味着部署团队可能在不方便的时间(例如周末和节假日)进行工作。

团队成员可能会急于在此时限内完成庞大的操作,从而导致出现错误配置。 同样,两次部署之间的长时间间隔可能会让你无法准确记起工作细节。

部署困境

软件部署是一项复杂的任务,当你“保存”多个重大更改、修复和新增功能以便一次性部署所有功能时,你会增加复杂性,从而提高出错的几率。 此外,当出错时,这种复杂性使得更难以准确地找出导致问题的原因。

复杂性还可能会给最终用户带来问题,因为他们可能不得不同时学习许多新功能和更改,更不用说史诗式部署的复杂性所引入的任何 bug 了。

应该有一种更好的方法,也确实有。 好消息是,传统的史诗式部署策略并不是唯一的选择。 在下一单元中,我们将介绍一个更好的方法来处理此过程。