惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
O
OpenAI News
B
Blog
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
Martin Fowler
Martin Fowler
博客园 - 司徒正美
美团技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Vercel News
Vercel News
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
D
Docker
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Hackread – Cybersecurity News, Data Breaches, AI and More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
博客园 - 【当耐特】
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
V
V2EX
博客园 - Franky
宝玉的分享
宝玉的分享
C
CERT Recently Published Vulnerability Notes
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Simon Willison's Weblog
Simon Willison's Weblog
Recorded Future
Recorded Future
T
The Blog of Author Tim Ferriss
T
Tor Project blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
Intezer
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
T
Threatpost
Cisco Talos Blog
Cisco Talos Blog
L
LINUX DO - 热门话题
SecWiki News
SecWiki News
I
InfoQ
T
The Exploit Database - CXSecurity.com
Hacker News - Newest:
Hacker News - Newest: "LLM"
P
Privacy & Cybersecurity Law Blog
T
Troy Hunt's Blog
Latest news
Latest news
MongoDB | Blog
MongoDB | Blog
T
Tenable Blog
博客园 - 叶小钗
Attack and Defense Labs
Attack and Defense Labs

顾宇的博客

用 AI 重启生活 初始化 MacOS 关于我 再次见面,期待相遇 演讲和分享 如何通过政策红利获利?——海南发展(SZ.002163)交易复盘 2025年的总结 2024年的总结 2023年的总结 2022年的总结 《敏捷测试价值观、方法与实践》序 【翻译】函数式编程中的领域驱动设计 【翻译】通过跟踪技术债来改进你的开发实践 【翻译】不要把测试用例自动化 【翻译】测试替身 【翻译】做多少测试才足够 【翻译】蓝绿部署的起源 【翻译】持续部署 【翻译】作为演进式架构的微服务架构 【翻译】gRPC 的动机和设计原则 【翻译】分布式计算谬误 【翻译】微服务和分布式对象第一法则 采用 Multipass 管理本机虚拟 K8S 集群 博客主题升级到 Congo 2.0 【翻译】Terraform 最佳实践:模块组合 【翻译】Kubernetes 部署语言(Kubernetes Deployment Language) 通过 Vagrant 一键初始化 K8S 集群 2021年的总结 通过 Github Actions 部署 Mkdocs 文档 博客迁移到了新的 Hugo 主题 2020年的总结 2019年的总结 千人规模组织级 DevOps 演进的 9 个实践技巧 从技术雷达看 DevOps 的十年——容器技术与微服务 DevOps 模式 - 引入 DevOps 顾问 DevOps 模式 - 索引 DevOps 模式 - 定义你的DevOps 从技术雷达看 DevOps 的十年——基础设施即代码与云计算 DevOps 模式 - 采用模式语言讨论 DevOps 从星巴克店面运营学习 DevOps 从技术雷达看 DevOps 的十年——DevOps与持续交付 【翻译】微服务安全:所有应该被问到的问题 云原生下的 DevSecOps 实践 【翻译】软件定义交付宣言 微服务演进中的经验和反思 迟到的 2018 年终总结 成功微服务实施的组织演进 从第19期技术雷达看 DevOps 的发展趋势 成功微服务实施的技术演进 我们如何衡量微服务的成功? 关于四周四 AWS 架构工作坊的设计和实践 讨论微服务之前,你知道微服务的 4 个定义吗? 公有云(AWS)上的生产环境架构优化案例和迁移套路总结 公有云(AWS)上的生产环境性能分析案例 一怒之下,我又写了一个开源流量测试工具 采用 DevOps 故事落地 DevOps 测试驱动开发 Nginx 配置 云原生 DevOps 翻译-混沌工程的原则 Serverless 风格的微服务的持续交付 从最新一期技术雷达看 DevOps 的发展 关于 DevOps ,咱们聊的可能不是一回事 Serverless 风格的微服务的架构案例 提升微服务实施效率的 7 个步骤 微服务实施常被忽视的 5 个难点 你的 CI 在挖矿吗? DevOps前世今生 - 4. DevOps 的文化 DevOps发展的九个趋势 不要让你的持续集成服务器成为安全隐患 DevOps 前世今生 - 3. DevOps 的目标和核心 DevOps 前世今生 - 2. DevOps 矛盾从何而来 DevOps 前世今生 - 1. DevOps 编年史
【翻译】持续部署 vs 持续交付
顾宇 · 2022-04-22 · via 顾宇的博客
  1. 顾宇的博客/
  2. Blogs/
  3. 【翻译】持续部署 vs 持续交付/

原文: https://continuousdelivery.com/2010/08/continuous-delivery-vs-continuous-deployment/

Timothy Fitz 关于持续部署的博客文章(中文版)在我和 Dave 出版《持续交付》一书之前一年多就发表了。 为什么我们选择了不同的名字呢? 是实际上有区别还是我们心血来潮?

我们决定把这本书叫做《持续交付》有几个原因。首先,有一个有点学究的事实是:部署并不意味着发布。就像我们在书中说的那样,你可以持续部署到 UAT 环境——这不是什么太大的问题。持续部署特别之处在于每次变更都要通过自动化测试(或者通过可选的 QA 门禁)到生产环境。持续部署是一个发布每个良好构建给用户的实践——更精确的名称可能是“持续发布”。

尽管持续部署意味着持续交付,但反之并不成立。持续交付是把发布计划的决策权交给业务,而不是 IT。实施持续交付意味着确保您的软件在其整个生命周期中始终处于生产就绪状态 - 任何一次构建都可能在几秒钟或几分钟内使用完全自动化的过程发布给用户。

这又依赖于构建、测试和部署过程的全面自动化,以及参与交付的每个人(开发人员、测试人员、DBA、系统管理员、用户和业务)之间的出色协作。

在持续交付的世界中,当开发人员把特性交给测试人员测试时,或者当功能“QA 测试通过”时,他们并没有真正“完成”这个特性。直到特性在生产环境中真正工作时才算“完成”。这意味着不再有测试或部署阶段,即使在一个 sprint 中(如果您使用 Scrum)。 如果你正在使用看板并且想要进行持续交付,直到故事发布给用户之前,这个故事都没有发挥作用。

然而,向用户发布每次成功的构建并不总是有意义的。特别是当软件变更和硬件变更之间存在耦合时,这对于嵌入式产品通常是不可能的。 在 COTS 的世界中,有充分的营销和售后支持理由说明为什么你不想随时时间使用多个“已发布”版本的软件(尽管你仍然可以做常规的“开发人员”或“早期访问”的版本,如 Eclipse 和 Omni Group 所做的那样)。可能还有其他好的动因——但重要的是它们必须是业务驱动。

那么你什么时候可以说你在做持续交付呢? 我想说的是,如果你认为这是为客户提供价值的最佳方式,那么你可以切换到持续部署。特别是,如果你无法保证向用户每次发布一个成功的构建。那么“完成”一个故事意味着什么? 我认为至少必须满足以下条件:

  • 你已经针对包含故事的构建运行了整个测试套件。 这些测试套件验证了故事预期交付的业务价值,并且在开发过程中没有引入任何回归。为了提高效率,这意味着在单元、组件和验收级别进行全面的自动化测试。

  • 该故事已在类生产环境中向客户展示。类生产环境意味着在合理的范围内与生产环境相同。 即使你要部署到一个庞大的集群,你也可以使用蓝绿部署之类的技术在生产环境中并行运行不同版本的应用程序,而不会影响用户。

  • 部署到生产环境没有障碍。 换句话说,如果你决定,只需按一下按钮,你就可以使用完全自动化的流程将构建部署给用户。 尤其是你还测试了它是否满足其非功能特性,例如容量、可用性和安全性。 如果您正在使用 SOA,或者你的应用程序和其他系统之间存在依赖关系,要确保其中没有集成问题。

(完)