什么是滚动发布
滚动发布是一种软件开发模型,通过频繁地向应用程序推送小更新,而不是使用具有离散版本的标准或点发布模型。这种模型最常见于某些操作系统发行版。在滚动发布模型中,软件更新通常通过访问远程软件存储库的包管理器交付给用户,而不是替换以前的版本。这允许更持续和迭代的开发过程,而不是标准发布模型中的离散版本。滚动发布不应与分阶段或"交错"推出混淆,后者是指更新逐步向越来越多的用户提供,用于测试或带宽原因。关键区别在于,滚动发布涉及单个不断更新的代码库,而不是不同的版本。在 Kubernetes 中,滚动部署是一种部署策略,允许逐步推出应用程序的新版本。新的 Pod 逐步添加到部署中,而旧的 Pod 逐步被删除,从而在更新过程中保持应用程序持续运行,无需停机。滚动部署对于扩大和缩小 Kubernetes 中的应用程序以及确保服务的连续性至关重要,可让您在不停机的情况下更新应用程序。
滚动发布的工作原理是什么
滚动发布是一种软件发布生命周期模型,与标准或点发布模型不同,它频繁地向应用程序交付更新,而不是替换之前的版本。

开发环境测试
在滚动发布模型中,开发人员在开发环境中通过单元测试接受新代码和配置后,这些内容将被移动到一个或多个测试环境中。如果测试失败,测试环境可以从测试平台中删除有故障的代码,联系负责的开发人员,并提供详细的测试和结果日志。

测试环境验证
测试环境的目的是允许人工测试人员在代码被提升到下一个部署阶段之前,通过自动化检查或非自动化技术来测试新的和已更改的代码。不同类型的测试可能需要不同类型的测试环境,其中一些或全部可能是虚拟化的,以允许快速并行测试。

持续集成部署
如果所有测试都通过了,测试环境或持续集成框架可以自动将代码提升到下一个部署环境。这种方式与分阶段或"交错"部署形成对比,在分阶段部署中,更新会逐步提供给越来越多的用户进行测试或出于带宽原因。
滚动发布有哪些优势
滚动发布能够为应用程序带来频繁的更新,与标准或固定版本发布模式形成鲜明对比。这使得新功能和错误修复能够更快地交付给用户。

加快新功能和修复上线
通过滚动发布,新的代码和配置可以在不同的测试环境中进行并行测试,一旦所有测试通过,就可以自动推进到下一个部署环境。这有助于在发布之前彻底测试软件,确保质量和稳定性。

快速回滚和修复
如果发生了错误的发布,测试环境可以移除有问题的代码,并通知相关开发人员,从而实现快速回滚或修复问题。这种机制大大降低了发布风险。

持续集成和交付
滚动发布使得持续集成和持续交付成为可能。新代码可以频繁地集成和测试,一旦通过所有测试,就可以立即部署到生产环境,从而实现快速迭代。

并行测试和部署
滚动发布允许在多个环境中并行测试和部署新代码,这有助于发现和隔离问题,同时也提高了部署的灵活性和可靠性。
如何实现滚动发布
滚动发布是一种软件部署策略,旨在最小化服务中断并降低风险。以下是实现滚动发布的关键步骤:

测试环境
测试是部署过程中的重要环节,新代码和变更代码需要在测试环境中进行测试,以识别任何问题。不同类型的测试可能需要不同的测试环境,其中一些可以虚拟化以实现快速并行测试。如果测试失败,测试环境可以移除有故障的代码,联系负责的开发人员,并提供详细的日志。如果所有测试通过,代码可以自动升级到下一个部署环境。

生产环境部署
生产环境部署是最敏感的步骤,因为任何问题都会立即影响用户。因此,生产部署通常会采取不同的处理方式,例如更加谨慎的监控,分阶段推出或快速回滚的能力。紧急或小的更改可能会在正常发布流程之外进行部署,例如通过单个补丁或热修复程序。

环境规模
环境的规模可能会有很大差异,从单个开发人员的工作站到许多地理分布的生产机器。
滚动发布有哪些应用场景
滚动发布是一种软件发布模式,通常应用于Linux发行版和现代分布式SQL数据库等场景。它采用小而频繁的更新方式,通过软件包管理器从远程软件仓库为用户计算机持续交付软件更新,与传统的一次性全量发布新版本不同。滚动发布模式可确保系统始终保持最新状态,同时避免了大规模的中断和兼容性问题,因此被广泛应用于需要高可用性和持续更新的场景中。
滚动发布与蓝绿部署的区别是什么

部署方式的差异
滚动发布是逐步将新版本软件部署到生产环境中的一部分服务器上,而蓝绿部署则是维护两个完全相同的生产环境,新版本部署在"绿色"环境中,经过测试后将流量切换到"绿色"环境,原"蓝色"环境作为备份。

测试能力的差异
蓝绿部署允许在两个并行的生产环境中进行版本对比和A/B测试,而滚动发布则无法提供这种测试能力。

资源利用的差异
蓝绿部署需要维护两套完整的生产环境,资源开销较大。而滚动发布只需要逐步替换服务器,资源利用率更高。

回滚策略的差异
滚动发布过程中,如果发现新版本存在问题,可以很容易地回滚到旧版本。而蓝绿部署则可以通过将流量切换回"蓝色"环境来快速回滚。

风险控制的差异
滚动发布可以控制新版本的部署范围和速度,从而控制风险。而蓝绿部署则需要在切换前完成全量测试,一旦切换,风险就是全部或全无。
滚动发布面临的挑战有哪些

系统依赖性挑战
现有系统中可能存在相互依赖的应用程序,单独迁移一个应用可能会中断整体运营。旧系统也可能与云环境不兼容,需要大量重构或重新开发。

技能缺口挑战
新技术对于习惯传统IT环境的内部团队来说可能陌生。员工可能抗拒采用新技术,组织必须培训现有员工或招聘具备相关技能的新人才。

扩展性挑战
将大量数据迁移到云端时,受限于带宽可能需要很长时间。如果迁移后出现问题,回滚到之前状态可能很复杂耗时。某些相互依赖的迁移可能需要暂时离线,影响业务运营。

滚动发布挑战
逐步将应用程序和基础架构迁移到云端的过程中,需要妥善规划和管理各个阶段,以确保无缝过渡并最大限度减少停机时间。
如何监控滚动发布过程
滚动发布是一种软件部署策略,通过分批逐步替换旧版本实例来实现无停机更新。为确保滚动发布过程顺利,需要进行全程监控。

生产环境监控
对于最终的生产环境部署,需要格外谨慎监控,因为任何问题都可能直接影响用户体验。常见做法包括分阶段推进部署,或在出现问题时快速回滚到上一版本。通过这种方式,可以最大程度降低风险。

自动化测试
在将新代码或变更代码推送到下一个部署阶段之前,需要在测试环境中运行自动化测试,验证其功能正常。如果任何测试失败,可以从测试平台移除有缺陷的代码,并及时通知相关开发人员,提供详细的测试日志。

持续集成与持续部署
持续集成与持续部署(CI/CD)实践有助于弥合开发与运维之间的鸿沟,通过自动化构建、测试和部署软件,实现早期缺陷发现、提高生产效率和加快发布周期,相比传统的批量部署方式有明显优势。
滚动发布的类型有哪些

连续交付式滚动发布
新版本持续不断地推送到生产环境,用户可以立即获得新功能。

基于时间窗口的滚动发布
在预先设定的时间窗口内,将新版本逐步推送到生产环境。

蓝绿部署式滚动发布
同时运行新旧两个版本,流量逐步从旧版本切换到新版本。

金丝雀发布
先将新版本推送给一小部分用户,验证稳定性后再全量推送。

基于百分比的滚动发布
按照预设的百分比比例,逐步将新版本推送到生产环境。

基于服务器池的滚动发布
将服务器分为多个池,依次在每个池中部署新版本。
滚动发布的最佳实践是什么

持续集成和持续交付
持续集成(CI)和持续交付(CD)是滚动发布的基础。CI/CD服务能够自动编译、测试和打包软件更新,然后将其交付给最终用户。与传统的批量部署相比,这种方式能够提高早期缺陷发现、生产力和发布速度。

实验性或恢复性发布
实验性或恢复性发布应与主CI/CD流水线分开处理,以便在必要时可以轻松回滚。

基础设施即代码
基础设施即代码(IaC)可减少部署环境中的错误,并简化错误检查。如果由于IaC代码更新而导致错误,您可以快速将代码库回滚到最后一个已知的稳定配置文件。您还可以使用以前版本的IaC配置文件回滚环境,例如部署旧版本的应用程序。

生产环境监控
对于生产环境的部署,需要更加谨慎地进行监控,因为任何问题都会立即影响用户。一些最佳实践包括分阶段推出或"功能切换",以便在需要时快速回滚。

小规模频繁更新
与大规模批量部署相比,更小、更频繁的更新更可取,因为它们降低了任何单个更改的风险和影响。

源代码控制
源代码控制允许软件开发人员轻松构建和分支环境。例如,开发人员可以分支应用程序的IaC,以根据应用程序部署的区域启动、使用和停止高性能Amazon EC2实例。
滚动发布的组成部分有哪些

单一代码分支
滚动发布模式下,开发人员在同一个代码分支上工作,而不是基于不同的版本分支。

软件仓库
滚动发布模式下的软件更新通常通过软件包管理器从远程软件仓库获取并分发给用户。

自动化测试
频繁的小更新需要自动化的测试流程来确保质量。

小而频繁的更新
滚动发布通常以小的增量形式频繁发布软件更新,而不是以大版本的形式发布。

持续集成
为了支持频繁的小更新,滚动发布需要采用持续集成的开发实践。
滚动发布的自动化工具有哪些

持续集成(CI)和持续部署(CD)服务
编译增量代码更改,将其链接和打包为软件交付物,然后自动部署到最终用户。这些CI/CD服务还可以运行自动化测试,以在部署前验证软件功能。

自动化部署工具
可以自动化应用程序的部署过程,包括构建、测试、配置和发布应用程序。

自动化测试环境
如果所有测试通过,可以自动将代码推送到下一个部署环境,无需人工干预。
滚动发布的先决条件是什么
滚动发布是一种软件部署策略,通过逐步替换旧版本实例来实现无停机更新。要实现滚动发布,需要满足以下几个先决条件:

测试环境准备
测试环境是滚动发布的关键先决条件。测试环境允许人工测试人员通过自动化或非自动化技术来验证新代码和配置变更。开发人员在开发环境中通过单元测试接受新代码和配置后,将其移至一个或多个测试环境。如果测试失败,测试环境可以从测试平台中移除有故障的代码,联系相关开发人员,并提供详细的测试和结果日志。如果所有测试都通过,测试环境或控制测试的持续集成框架可以自动将代码推送到下一个部署环境。

多种测试环境
不同类型的测试需要不同类型的测试环境,其中一些或全部可能是虚拟化的,以允许快速并行测试。在代码可以推送到下一个部署环境之前,必须先在测试环境中进行测试。

自动化测试
为了实现无缝滚动发布,需要建立自动化的测试流程,包括单元测试、集成测试、功能测试等,以确保新版本的质量,并最大程度减少人工干预。自动化测试有助于快速发现问题,从而避免将有缺陷的版本推送到生产环境。
欢迎加入亚马逊云科技培训中心
欢迎加入亚马逊云科技培训中心
-
快速上手训练营
-
账单设置与查看
-
动手实操
-
快速上手训练营
-
第一课:亚马逊云科技简介
本课程帮助您初步了解云平台与本地环境的差异,以及亚马逊云科技平台的基础设施和部分核心服务,包括亚马逊云科技平台上的弹性高可用架构,架构设计准则和本地架构迁移上云的基本知识。
亚马逊云科技技术讲师:李锦鸿第二课:存储与数据库服务
您将在本课程中学习到亚马逊云科技上的三个存储服务分别是什么。我们也将在这个模块中为您介绍亚马逊云科技上的关系型数据库服务 Amazon Relational Database Service (RDS)。
亚马逊云科技资深技术讲师:周一川第三课:安全、身份和访问管理
在这个模块,您将学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 。同时,通过讲师演示,您将学会如何授权给 EC2 实例,允许其访问 S3 上的资源。
亚马逊云科技技术讲师:马仲凯 -
账单设置与查看
-
-
动手实操
-