写点什么

Docker& 持续交付部署类型

  • 2019-11-28
  • 本文字数:1749 字

    阅读完需:约 6 分钟

Docker&持续交付部署类型

不知道大家在平时部署项目的时候,是采用什么方式来持续部署的呢。在本篇文章中,女主就给大家整理了一下,普遍使用的几种持续交付部署方式。以及各种方式的优缺点,供大家参考使用。


我们发现如果想要使团队更高效,应该使用 Docker 来实现持续交付(CD)。CD 可以使用多种部署方法实现,Docker 只是帮助实现必要的“基于工作流”的集成/构建过程的一个工具。

持续交付部署类型

现在,我们将研究这四种主要的部署类型,并概述它们的优缺点。


它们分别是:


  • 最小服务内部署

  • 滚动应用更新

  • 蓝 / 绿部署

  • A / B 测试


这四种部署类型分为两类:应用程序和基础设施部署。

1 最小服务内部署

通过这种方法,我们指定了在更新剩余百分比的同时保持在服务状态的应用程序中的最小实例数量,因此部署到尽可能多的目标。重复此过程,直到所有服务器都已更新为新版本。


例如:如果我们有 5 个容器,每个容器运行我们当前的应用程序 A,那么我们设置我们的策略以保持最小服务中数为 2。我们使 3 个服务器脱机,以将它们更新到我们的新版本 B。一旦这些完成并返回在线,我们可以更新剩下的 2 个。



缺点:


  • 这个过程发生在多个阶段,所以需要以 Swarm 之外的协调和健康检查的形式进行支持

  • 对于基础设施的变化,效果不好

  • 在正在运行的服务器上进行更改,如果发生故障,需要时间恢复


优点:


  • 运动部件少,意味着测试能力的提高;在过程中进行应用程序和代码更改

  • 没有宕机和额外的基础设施成本

  • 这个过程通常比滚动部署更快(见下文)

2 滚动应用更新

考虑将滚动部署作为最小服务内容的扩展。但是,我们并没有定义应该保持联机状态的容器数量,而是指定最大数量的容器进行更新。


例如:我们有和前面一样的 5 个容器,但是这次我们通过指定可以同时更新的容器的数量来初始化滚动更新。进程一次移动 2 个容器的更新,直到单元中的所有服务器都更新。


Docker Swarm 支持滚动更新。 默认情况下是一次更新一个容器。 要修改这个,使用-update-parallelism 设置



缺点:


  • Docker 滚动更新以两种方式处理失败:

  • 通过暂停,允许干预并回滚修复

  • 或继续不管,这意味着可能不会在容器运行时发现问题

  • 比最小服务内部署更复杂

  • 在部署时间方面可能是效率最低的; 基于每个阶段更新的时间

  • 我们再次推荐 Swarm 之外的协调和健康检查


优点:


  • 不需要停机

  • 可能会暂停,允许有限的多版本测试

  • 允许进行自动化测试——在继续之前评估部署目标

3 蓝 / 绿部署

当遵循蓝/绿(又名红/黑)方法时,我们短时间复制我们的“整个”基础平台。复制的基础平台托管新的应用程序,而旧的基础平台继续运行,直到测试完成并采用新的堆栈。 实现这一目标的能力已经存在了很长一段时间,但在云之前,这是一个非常昂贵的部署方法。现在,我们可以将堆栈部署到一个全新的环境中,从而实现独立的评估,并以最低的成本感谢 Cloud。一旦测试完成,我们将应用程序切换到新版本并关闭旧版堆栈。



如图所示,蓝色表示您当前的环境版本,而您要部署的新变体是绿色。通常,这发生在 DNS 更改的形式,尽管您也可以通过修改 Auto Scaling 组来部署 Blue / Green。


缺点:


  • 需要高级编排工具

  • 一些数据库是必要的风险

  • 产生了一些额外的成本,虽然仅在短时间内

  • 非自然的用户流量会使您的服务器泛滥,这不是一切破坏的要点


优点:


  • 由于基础设施变得不可变,所以降低了风险

  • 提供接近零停机时间

  • 使用 DNS 更改时,切换是干净可控的

  • 过程是完全自动化的,并提供一个更大的验证窗口

  • 在切换之前测试整个环境的健康和性能是可能的

4 A / B 测试

A / B 部署与 Blue / Green 几乎完全相同,但是在这种方法中,我们只将少部分流量发送到我们的新绿色环境。这种方法能够切换环境和改变基础平台,但比 Blue / Green 部署更精确。



缺点:


  • 与前述的部署方法相比,有很多移动部件

  • 更加复杂

  • 需要一切完全自动化

  • 非自然的用户流量会使您的服务器泛滥,这不是一切破坏的要点


优点:


蓝/绿部署的所有好处,以及:


  • 我们可以预测规模能力和预热作业

  • 用于测试新功能并逐步评估性能,稳定性和健康状况

  • 我们获得客户验证,同时减轻爆炸影响和广泛的错误

总结

对于以上的部署方式的选择,归结为最适合你的业务和技术需求的方法才是最好的。如果这对您的应用程序和用户群体是有意义的,我们强烈建议尽可能利用 A / B 测试。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/1vXS_PgKFbNo8C346qSY3w


2019-11-28 13:221273

评论

发布
暂无评论
发现更多内容

纳斯达克上市公司Pinnacle Food宣布新战略计划,旨在扩展其智慧农业创新平台

财见

沙特阿拉伯将于11月主办第11届最不发达国家问题部长级会议

财见

TÜV莱茵为开立威尔逊多款消化内科手术器械颁发MDR公告机构证书

财见

软硬协同!RISC-V 生态分论坛精彩议程公布 | 2025 龙蜥大会

OpenAnolis小助手

龙蜥操作系统大会

转转客服IM聊天系统背后的技术挑战和实践分享

JackJiang

websocket 即时通讯 im开发 Web端即时通讯

干货推荐:分钟级定位 IO 瓶颈,多租户云环境下的智能诊断

OpenAnolis小助手

阿里云操作系统控制台

记第一次鸿蒙应用上架之旅:一场略带遗憾的旅途

万少

HarmonyOS

无万卡,不VLA:元戎启行与阿里云的“想法”和“解法”

科技汇

大数据-150 Apache Druid 单机部署实战:架构速览、启动清单与故障速修

武子康

Java nosql 分布式 Apache Druid 大数据f

干货推荐:OOM 杀进程 or 应用卡顿?该如何抉择

OpenAnolis小助手

操作系统 阿里云操作系统控制台

分钟级定位 IO 瓶颈:多租户云环境下的智能诊断

阿里云基础软件

阿里云 操作系统控制台 IO异常

从同步耦合到异步解耦:消息中间件如何重塑系统间的通信范式?

poemyang

消息中间件 高并发架构

第五届 RTE 年度 Demo Day 三强公布!看到对话式 AI 的 N 种未来

RTE开发者社区

零刻发起NAS用户共创活动,征集创新理念共塑未来产品形态

财见

干货推荐:看阿里云操作系统控制台如何一招擒拿网络丢包

OpenAnolis小助手

技术干货 阿里云操作系统控制台

别再把DevOps当工具!90%企业都在做假DevOps,文化才是根本,很多团队都搞反了!

六边形架构

DevOps CI/CD 团队文化 自动化运维

Meta AI 推出全语种语音识别系统,支持 1600+语言;谢赛宁、李飞飞、LeCun 联手发布「空间超感知」AI 框架丨日报

RTE开发者社区

Weblate审计日志IP泄露漏洞分析

qife122

网络安全 Weblate

赋能华中企业数智转型破局前行:「AI共创 三生万物」司马阅2025企业AI落地应用峰会武汉站圆满落幕

司马阅

战术领域驱动设计:将战略融入代码实践

qife122

领域驱动设计 java编程

宝尊将于2025年11月25日发布2025年三季度未经审计财务业绩

财见

收藏!2025 龙蜥操作系统大会闯关攻略来啦

OpenAnolis小助手

龙蜥操作系统大会

进入职场第四课—产出

老李说技术

职场 职场发展

工业设计 自控设计经验总结(18)

万里无云万里天

设计师 工业 工厂运维

工业管理 项目管理经验总结(30)

万里无云万里天

项目管理 工业 工厂运维

Intigriti Bug Bytes

qife122

网络安全 漏洞挖掘

RedisTemplate和StringRedisTemplate的区别及个人见解

刘大猫

人工智能 云计算 算法 物联网 大模型

DotNetGuide突破了 9.5K + Star,一份全面的C#/.NET/.NET Core学习、工作、面试指南知识库!

追逐时光者

C# .net 微软

一场论坛捕捉 26 年语音 AI 关键词:思考机制、专有模型、低功耗、超低帧率、多语种、语音增强……丨RTE2025 回顾

RTE开发者社区

2025低代码开发平台综合排名及选型指南(最新版)

科技经济

Docker&持续交付部署类型_文化 & 方法_PlatformDev_InfoQ精选文章