首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >优化软件交付:部署和发布明显区别

优化软件交付:部署和发布明显区别

作者头像
DevOps云学堂
发布于 2022-10-04 07:01:47
发布于 2022-10-04 07:01:47
2K0
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

软件交付的谜团需要清晰,这就是部署与发布辩论变得令人兴奋的地方!部署和发布可以互换使用,但它们是否相同,或者您需要知道它们之间的区别?以下是优化软件部署和发布管理所需的所有答案。

目录

  • 部署与发布:概述
  • 软件发布和部署的 ITIL 管理
  • 用于衡量发布和部署可扩展性的 KPI
  • 提高发布和部署效率的主要方法
  • 软件发布和部署示例

部署与发布:优化软件交付的明显区别!

部署和发布是软件工程中经常互换使用的两个术语。然而,它们是不同的!部署是将软件从一个受控环境转移到另一个受控环境。另一方面,发布是供用户体验的更改的集合。

应用程序需要多次更新、安全补丁和代码更改。跨平台和环境部署它们需要对版本进行适当的管理。这就是为什么必须明确部署与发布的原因。

缺乏发布管理会导致发布不规则、手动交付过程、数据库更新问题、协作问题等。发布的频繁集成可以提高您的软件效率。但是,持续集成 (CI) 对发布的影响是有限的,因为它侧重于开发改进。

同时,持续交付 (CD) 流程可以减少错误并自动化软件发布。最佳实践是使用提供频繁集成和交付自动化的CI/CD 管道。但是,在设置 CI/CD 管道之前,您需要了解有关部署与发布的所有信息。

所以,让我们先了解根本区别!

部署与发布:概述

部署过程涉及将构建从一个环境转移到另一个环境。目标环境和当前环境都在部署过程中受到控制。发生部署活动的一些环境是

  • 开发环境是开发人员构建代码的地方。
  • 集成环境是将新代码集成到现有代码中并经过验证的地方
  • 测试环境是代码测试发生的地方,包括功能测试和非功能测试。
  • 暂存环境是对应用程序进行测试的地方,以通过模仿类似生产的环境来确保它们已准备好部署。
  • 生产环境是 4 层架构的最后一步,将最新版本的软件实时推送给目标用户。

部署过程是软件开发生命周期 (SDLC) 的最后阶段。因此,管理部署是软件交付的关键。它涉及服务组件的规划、验证、目标环境验证以及执行和确认部署。

换句话说,软件版本为用户提供了功能升级和新更改。与部署管理一样,管理软件版本对于高效的 SDLC 也是必不可少的。 发布管理包括计划、构建发布、集成测试验收测试、部署准备等多项活动。 一旦软件中的更改被批准,发布管理就开始了。下一步是计划和构建版本并测试它们以供用户接受。最后,版本部署在目标环境中。

部署与发布:主要区别

软件发布和部署可以互换使用,这让人很困惑。因此,以下是部署与发布之间的一些关键区别,

发布

部署

软件版本是要在生产环境中交付的一组更改

部署是将构建的代码从一个受控环境转移到另一个受控环境。

经常发布用于更新生产部署中的更改。

它是 SDLC 的最后阶段,跨域执行

将用户暴露于软件中的错误版本、错误和问题的风险更高。

但是,由于部署发生在受控环境中,因此将用户暴露于容易出错的构建的风险低于发布。

发布代码可能还没有准备好生产,

部署代码可用于生产

软件版本对用户可见。

部署的代码可以在基础设施内的任何目标环境中运行

软件发布和部署的ITIL 管理

信息技术基础设施库 (ITIL) 是一个框架,使组织能够提供高效的 IT 服务。它是一个概括性的术语,包含流程标准化、部署方法和管理发布的方法等活动。 但是,我们将讨论可用于软件发布和部署管理的 ITIL 最佳实践。 软件版本需要适当的管理以避免与未来版本相关的问题。以《教父》之类的电影为例。发布管理最佳实践确保电影的第二部分比以前的版本更好。 同样,软件发布的最终目标是拥有比早期版本更好的版本。发布管理需要在发布计划、包和构建发送进行测试之前进行广泛的规划。 发布计划涉及

  • 发布单元具体业务需求及应用功能升级详情
  • 主要发布的发布数据
  • 预定义的文档流程
  • 广泛的测试计划

详细的文档

记录发布的构建以及在生产环境中部署它们的方法是发布管理的关键——如何? 构建包文档可帮助 DevOps 团队提高每个版本的效率。开发和运营团队可以访问文档以获取更多版本。构建过程文档需要包括

  • 有关如何监控工作流程的详细信息
  • 发布对软件的影响
  • 有关已知错误的信息。

一旦构建包准备就绪,下一步就是测试它们。组织必须在表面测试过程之前准备测试计划。

测试计划和自动化

发布管理的关键方面之一是测试。表面级测试是一个关键过程,它使组织能够在发布部署到生产环境之前验证构建。 冒烟测试是指软件版本的初始测试,它测试核心功能的新版本。如果软件构建未能通过冒烟测试,则该构建被视为损坏。此外,您必须计划回归测试,以便针对所需的每个更改进行深入的软件测试。 发布测试管理的最佳实践是使用自动化。测试构建后,就该检查部署准备情况了。

部署准备

部署构建是发布发布的最后阶段。因此,您需要检查构建是否已准备好部署。测试阶段确保构建中没有错误和漏洞。但是,部署准备情况需要全面检查。 以下是一些需要检查的基本事项,

  • 通过确保构建功能性来专注于价值交付
  • 检查与现场环境的合规性
  • 根据现场环境进行配置管理
  • 监控、微调和管理软件包二进制文件

这些是基于 ITIL 原则的发布和部署管理可以遵循的一些最佳实践。但是,扩展您的发布和部署是软件交付的另一个重要方面。

用于衡量发布和部署可扩展性的 KPI

扩展您的发布和部署成为关键,尤其是当您有多个平台要部署时。那么,如何确保发布的可扩展性保持一致呢? 答案在于了解导致构建问题的注意事项。这就是为什么定义用于衡量软件性能的 KPI 至关重要的原因。以下是您需要衡量的一些 KPI,以更好地扩展软件版本和部署。

每个活跃日的提交

开发团队的每次提交都作为一个检查点。较小的提交意味着检查点的频率更高,从而使过程更有效率。因此,重要的是要强调每个活跃日的提交量较小但较高,以便软件工程师可以分析其代码更改的演变。

提交量

困扰许多组织的问题是——每个版本的承诺量应该是多少!?更高的管理可能令人生畏,而更低的并不能保证更好的性能。 那么,出路是什么? 最好的方法是确保您的提交量基于功能要求而不是按时。如果一个新特性值得提交,你需要调整两次提交之间的时间以获得更好的性能。 尽管可能需要更多时间,但它也会减少错误,最终缩短上市时间。此外,由于错误减少,测试时间减少,您将获得更快但更高效的软件交付。

发布周期时间

软件发布的周期时间与从编码开始到部署完成所需的时间有关。它还涉及测试、QA 批准、分期和最终验证所需的时间。最好的方法是通过 DevOps 方法减少平均周期时间,这有助于运营和开发团队之间的协作。

平均修复时间 (MTTR)

MTTR 衡量解决错误或修复软件版本的故障组件所需的平均时间。其目的是计算您的组织对特定错误的响应时间。最佳实践是减少构建的 MTTR,因为它有助于缩短上市时间。

停机次数

要衡量的最重要的 KPI 之一是发布造成了多少停机时间。如果想扩展发布和部署,减少中断是至关重要的。因此,需要减少中断的次数和持续时间。 几个 KPI 衡量软件版本的有效性以及它如何影响可伸缩性。但是,每天的提交、周期时间、MTTR、中断和提交量有助于了解发布的质量。 现在让我们讨论如何通过一些最佳实践来改进您的 KPI。

提高发布和部署效率的主要方法

DevOps、持续集成和持续交付是一些有助于提高软件发布质量的方法。

利用 DevOps 文化来增强软件版本

当接受 DevOps 文化时,运营和开发团队将协同工作以实现更高的效率。然而,DevOps 并不局限于运维和开发团队。可以采用一种文化方法来提高软件质量和交付。 以软件发布管理为例。您可以利用 DevOps 文化并为软件发布创建有凝聚力的策略。DevOps 的众多好处之一是更快地解决导致快速发布的问题。 例如,德国领先的电信服务提供商Deutsche Telecom AG正面临解决时间增加的问题。他们使用“获得和分享”的 DevOps 模型,自动化了 400 多个流程。他们部署了 3000 个机器人流程自动化机器人,并将客户满意度提高了 20%。

引入 CI/CD 管道以实现无缝发布

持续集成和交付方法使寻求增强软件版本的组织受益。CI/CD 管道有助于持续集成反馈并自动化发布版本,从而加快上市时间。 Tesla将 CI/CD、DevOps 和自动化相结合,提供无缝的软件体验。特斯拉汽车连接到公司的软件,允许开发人员直接在车辆上将版本推送到生产环境中。 Tesla 的开发人员需要同步他们的软件版本和每个季度发生的重大组件更改。因此,他们结合使用 DevOps 和 CI/CD 来创建可靠的交付机制。

将版本容器化以获得更高的灵活性

容器化是一种进程隔离方法,可以降低不同环境中的复杂性。所以,不可否认,容器化是提高发布和部署效率的绝佳方法。 例如,如果您想跨多个平台发布您的软件构建,您可以使用更少的二进制文件将每个版本容器化。最好的部分 - 一旦任务完成,您可以终止每个容器。 现在我们已经讨论了部署与发布之间的根本区别以及发布管理的最佳实践,是时候了解一些现实生活中的示例了!

软件发布和部署示例

在不浪费太多时间的情况下,让我们只讨论一些示例,这些示例显示了每个特定项目的部署和发布管理方面的改进。

美国联合航空的软件发布问题和管理解决方案

2016 年,联合航空为超过 1.43 亿用户提供服务。然而,软件发布管理是一个巨大的挑战。有几个手动流程和电子表格,这增加了发布周期时间。

因此,联合航空公司选择通过转移发布团队的角色来利用在岸/离岸发布模型,以确保完成特定的承诺。他们的发布管理方法最好的部分是使用 DevOps 和集中治理模型。他们设法通过持续交付团队 (CDT) 和开发团队之间的协作来简化发布。

澳大利亚新闻集团对部署自动化的需求

News Corps Australia需要将 Adobe 工具集成到他们的软件中,以增强企业功能。然而,将这些工具集成到现有应用程序中是一项挑战。因此,他们开发了一种自助访问功能,允许员工自动化平台部署。 自助访问服务记录每笔交易,并允许新闻集团监控哪个员工正在访问特定的应用程序。此外,他们使用自动化来减少部署每个构建所需的时间。

Etsy 的瀑布问题和解决它的 DevOps 策略

Etsy拥有由开发人员、数据库管理员和操作人员组成的孤立团队,使得发布成为一项艰巨的任务。他们花了数周时间才准备好构建。除了漫长的构建过程之外,部署、将代码与现有应用程序合并以及测试批准都很痛苦。 因此,他们逐渐接受了 DevOps 文化,并通过引入持续交付管道进一步利用自动化。它允许他们每天为他们的应用程序部署超过 50 次。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《持续交付:发布可靠软件的系统方法》第1章 软件交付的问题
第1章 软件交付的问题 介绍 从“决定做某种修改”到“该修改结果正式上线”的这段时间称为周期时间(cycle time)。对任何项目而言,它都是一个极为重要的度量标准。1Implementing Lean Software Development 第59页 真正缺少的是一本讨论如何把各方面(包括配置管理、自动化测试、持续集成和部署、数据管理、环境管理以及发布管理)融合在一起的书 我们的目标是提供一个整体方案,并给出这个方案涉及的各种原则。我们会告诉你如何在自己的项目中使用这些实践 支持部署流水线的生态系统,
yeedomliu
2019/09/28
7130
DevOps研发模式下的8种CI / CD最佳实践
根据IDC最近的一项研究,全球DevOps软件市场在2017年达到29亿美元,预计到2022年将达到66亿美元。随着去年超过50%的组织采用DevOps,持续集成(CI)和持续交付(CD)已经成为软件开发过程中不可或缺的一部分。
增强现实核心技术产业联盟
2020/09/09
1.6K0
DevOps研发模式下的8种CI / CD最佳实践
详解衡量DevOps成功的 9 个关键指标
恭喜!您已经建立了 DevOps 实践。现在,完成了艰苦的工作并制定了 DevOps 指标和 DevOps KPI,您可以坐下来放松一下,并见证您的 Dev 和 Ops 团队之间的协作,因为他们可以更快地交付质量更好的软件。
DevOps云学堂
2022/04/06
1.4K0
10个您现在需要实施的DevOps Pipeline最佳实践
了解 DevOps Pipeline 十大最佳实践,您需要立即实施以实现最佳效率和简化的软件交付。
云云众生s
2024/03/28
3090
发布、部署,傻傻分不清楚?从概念到实际场景,再到工具应用,一篇文章让你彻底搞清楚
部署和发布是软件工程中经常互换使用的两个术语,甚至感觉是等价的。然而,它们是不同的!
DevOps在路上
2024/02/04
1.1K0
发布、部署,傻傻分不清楚?从概念到实际场景,再到工具应用,一篇文章让你彻底搞清楚
什么是 CI/CD?
CI/CD 的出现改变了开发人员和测试人员发布软件的方式。本文是描述这一变化的系列文章第一篇,
LinuxSuRen
2019/04/18
17.6K0
持续(集成-->交付-->部署)
由上图可知「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery)」和「持续部署(Continuous Deployment)」这三个概念的区别是在软件开发流程中根据实现的持续化,自动化的阶段的不同来划分的。
翎野君
2023/05/12
8540
持续(集成-->交付-->部署)
搭建DevOps实施详细方案
DevOps是一种文化理念、实践和工具的组合,旨在缩短系统开发生命周期,提高交付速度和质量。它强调开发(Dev)和运维(Ops)团队之间的协作与沟通,通过自动化流程实现持续集成、持续交付和持续部署。
紫风
2025/06/17
2560
搭建DevOps实施详细方案
给产品经理讲讲,什么是持续交付和 DevOps
本指南适用于: 你在科技领域就职,是产品经理或者MBA。你的团队玩 A/B 测试,特性切换,你办公室里还有一条狗。 当然,你已经理解啥是功能分支,什么是 CD 以及 DevOps 文化是什么样子。对不?嗯,当然。 你已经走在敏捷的路上,工程团队现在每周都跟你的产品人员会面,讨论故事和迭代。他们协作良好,对构建的东西感觉也越来越好。 可你的客户仍然不能更快的获得这些功能。 你仍然得等着发行列车离开车站。你已经听到过像Esty, Flickr, Google 等这些公司每天能交付100次,他们咋做到的呢? 你
DevOps时代
2018/06/22
1.3K0
什么是CI/CD,你了解它给团队带来的收益和挑战吗?
CI/CD 的出现改变了开发人员和测试人员发布软件的方式。本文是描述这一变化的系列文章第一篇, 这些文章将提供各种工具和流程的讲解,以帮助开发人员更好的使用 CI/CD。
灵雀云
2019/07/30
1.7K0
什么是CI/CD,你了解它给团队带来的收益和挑战吗?
17 个可以衡量成功的 DevOps 指标
软件开发的生产力一直很难衡量。与其他行业不同,编程行为不容易并行化。开发过程的独特之处在于它需要多种技术和沟通技能的组合,这需要一组专门的 DevOps 指标来跟踪团队的体征。
DevOps云学堂
2023/08/22
7970
17 个可以衡量成功的 DevOps 指标
探索DevOps文化
采用DevOps文化需要在企业层面改变思维方式、流程和文化。许多人认为采用DevOps只是在不同的团队之间划分任务,并为团队成员分配特定的角色。然而,恰恰相反,它需要在实施最佳实践的同时,致力于更长远的事业。因此,转向DevOps不是一个瞬间的转变,而是一个组织必须共同迈向的持续旅程。
FunTester
2023/11/30
2670
探索DevOps文化
《持续交付:发布可靠软件的系统方法》第5章 部署流水线
第5章 部署流水线 5.1 引言 持续集成的主要关注对象是开发团队。持续集成系统的输出通常作为手工测试流程和后续发布流程的输入。在软件的发布过程中,很多浪费来自于测试和运维环节。我们常常看到: 构建和运维团队的人员一直在等待说明文档或缺陷修 测试人员等待“好的”版本构建出来 在新功能开发完成几周之后,开发团队才能收到缺陷报告 开发快完成时,才发现当前的软件架构无法满足该系统的一些非功能需求。 解决方案就是采取一种更完整的端到端的方法来交付软件。我们已经解决了配置管理以及自动化大量构建、部署、测试和发布流程的
yeedomliu
2019/09/28
1.3K0
手把手教您构建自己的 DevOps 流水线
持续交付是一组能够帮助软件开发团队极大的提高其软件交付的速度和质量的模式和最佳实践组成。
DevOps时代
2018/08/01
2.7K1
手把手教您构建自己的 DevOps 流水线
3.2.2 持续交付
春节前与同事讨论CD(持续交付)的技术方案,发现主流的技术方案是软件交付最后一公里的“AD”(自动化部署)。站在本系列文章提到四个关键价值的“提升交付速度”这个运维价值看,单纯的自动化部署主要将部署/回切工作从1小时提升到5分钟的效率能力上。而在端到端的IT交付价值链中,部署是其中一个节点,所提升的55分钟只占整个IT交付链路中的一部分,更大的消耗是在节点与节点之间的协同。所以,“持续交付”应该跳出“部署”,站在整个IT交付链路,关注节点的自动化、节点与节点之间的连接线,通过标准化、流水线、自动化、相关工具链打通等工程性工作的落地,提升整个IT效能。
彭华盛
2021/03/19
1.1K0
3.2.2 持续交付
20 个最重要的 DevOps 面试题
DevOps 代表开发和运营。这是一种新的软件开发形式,彻底改变了软件产品的开发和分发方式。DevOps方法论着眼于提供频繁的较小升级,而不是罕见的大型功能集。
民工哥
2021/04/23
2.4K0
Jenkins 创始人:持续交付的 What、Why 及 How
本文主要介绍了持续交付和DevOps的概念、现状、挑战和实践,强调了持续交付和DevOps对于软件开发和运维的重要性,并通过一些实践案例和思考来加强理解。
DevOps时代
2017/07/25
5.4K0
Jenkins 创始人:持续交付的 What、Why 及 How
DevOps & CI/CD Top 30+ 面试问题
希望这些问题和建议的答案能使你快速掌握DevOps和CI/CD的相关知识,帮助你在面试之前对DevOps和CI/CD有系统性的概念和理解。
Peter Shen
2020/06/12
5.9K0
DevOps & CI/CD Top 30+ 面试问题
可扩展 CI/CD 流水线示例:改善开发流程
现代软件开发要求使用 CI/CD 作为 DevOps 的重要组成部分。使用正确的工具进行适当的自动化是高效交付管道的关键。以下是您需要了解的有关可扩展 CI/CD 管道的所有信息。
DevOps云学堂
2022/10/04
1.6K0
可扩展 CI/CD 流水线示例:改善开发流程
持续测试、持续集成、持续交付、持续部署和DevOps
今天的组织应该彻底了解实施有效的测试自动化策略和持续测试策略之间的关键区别。采用持续测试方法当然是一种更好的方法,并且比传统的软件测试自动化更具优势。尽管有时这两个术语是同义词,但每个术语的功能和含义存在显着差异。
FunTester
2021/11/04
2.3K0
推荐阅读
相关推荐
《持续交付:发布可靠软件的系统方法》第1章 软件交付的问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档