什么是软件部署?
根据维基百科 (Wikipedia) 的说法,“软件部署”由所有使软件系统可供使用的活动组成。常规部署过程由多个相互关联的活动组成,它们之间可能存在转换。 每个软件系统都是唯一的;因此,“部署”应解释为必须根据特定要求或特性定制的常规过程。
有些人将“部署”和“安装”这两个术语互换使用,但是软件安装仅是软件部署过程的一部分。 部署涉及的内容更多。 部署活动可以包括:
- “堆架”一台服务器。
- 将一个更新的软件部署在该服务器上。
- 使用脚本和基础结构之类的代码。
- 甚至在办公室中来回行走,使用 U 盘在计算机上手动安装软件。
手动部署软件会占用大量人力,并且扩展性不佳。 在整个组织中推送新软件或更新现有软件时,自动化可以更轻松地、更经济高效地确保一致性。
作为本学习路径的一部分,我们的重点是如何以最佳方式部署软件以提高可靠性。 本模块不仅将解决软件部署,还将解决云基础结构的部署。 部署服务或解决方案的参考可能意味着部署软件、云基础结构和配置,以及可靠地使软件系统可供使用的所有功能。
场景:史诗式部署
“史诗”一词的意思是“宏伟、不朽或浩瀚”。但在本文的上下文中,这不是一件好事。 术语“史诗”是由 Jez Humble 在其《持续交付:通过生成、测试和部署自动化实现软件可靠发布》(Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation) 一书中首次提出,因为它代表大规模(和大规模颠覆性)任务。 以下示例演示了它通常如何发生:
- 组织开发与销售相关的应用程序。 该应用程序每年正好更新两次。
- 在这些更新期间,将部署所有新功能、bug 修复(重要和次要)以及依赖项更新。
- 该年度的第一次部署计划在劳动节周末进行,第二次部署在感恩节之后的周末进行。
- 每次更新都是“全员参与”的情形。 应用程序团队、支持团队、基础结构团队、管理人员;每个人都参与了部署。
- 部署正在进行时,各服务暂时处于脱机状态。
- 历史记录显示,部署始终充满问题、手动工程、故障排除和配置管理更改。
- 它很少能顺利进行,并且完成后,它常常被认为是以不可重现方式拼凑起来的。
这种部署状况并不好。 史诗式部署方法是一项繁重的手动任务,它带来了许多问题:
- 复杂。
- 压力大。
- 有风险。
- 速度慢。
- 由于所有步骤复杂,此方法不可重现。
- 它通常需要多个专家才能完成部署。
由于此过程漫长而艰巨,因此必须将其安排在对用户生产力造成最小干扰的时间进行,这意味着部署团队可能在不方便的时间(例如周末和节假日)进行工作。
团队成员可能会急于在此时限内完成庞大的操作,从而导致出现错误配置。 同样,两次部署之间的长时间间隔可能会让你无法准确记起工作细节。
部署困境
软件部署是一项复杂的任务,当你“保存”多个重大更改、修复和新增功能以便一次性部署所有功能时,你会增加复杂性,从而提高出错的几率。 此外,当出错时,这种复杂性使得更难以准确地找出导致问题的原因。
复杂性还可能会给最终用户带来问题,因为他们可能不得不同时学习许多新功能和更改,更不用说史诗式部署的复杂性所引入的任何 bug 了。
应该有一种更好的方法,也确实有。 好消息是,传统的史诗式部署策略并不是唯一的选择。 在下一单元中,我们将介绍一个更好的方法来处理此过程。