软件开发和部署,蓝绿环境、灰度环境

news2024/12/25 9:34:35

发布策略

目前常见的发布策略有蓝绿发布红黑发布金丝雀(灰度)发布滚动发布

在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。

蓝绿发布

蓝绿环境是一种有效的软件部署策略,可以帮助企业实现快速、安全、可靠的软件发布和更新。

蓝绿部署是指有两个完全相同的、互相独立的生产环境,一个叫做“蓝环境”,一个叫做“绿环境”。蓝绿环境是逻辑概念,其中处理客户流量的环境是绿环境。蓝环境用来做发布前测试,测试过程中发现任何问题,可以直接在蓝色系统上修改,不干扰用户正在使用的系统。

这种部署模式允许在升级或发布新版本时,先在蓝环境中进行版本升级和测试,待测试确认一切正常后,再将用户流量切换到蓝环境。在逻辑上,蓝环境变成了新的绿环境,而原来的绿环境则成为新的蓝环境,用于下一轮的版本升级和测试。这种模式通过运行两个相同的环境来减少风险和故障时间,从而确保应用的稳定性和可靠性。

绿环境是用户正在使用的生产环境。当要部署一个新版本的时候,先把这个新版本部署到蓝环境中,然后在蓝环境中运行冒烟测试,以检查新版本是否正常工作。如果测试通过,发布系统更新路由配置,将用户流量从绿环境导向蓝环境,蓝环境就变成了生产环境。这种切换可以在几乎零停机时间的情况下完成。

如果出了问题,把路由切回到绿环境上,再在蓝环境中调试,找到问题的原因。因此,蓝绿部署可以做到仅仅一次切换,立刻就向所有用户推出新版本,新功能对所有用户立刻生效可见。

优势:

  1. 实现了新旧版本的无缝切换,减少了停机时间和对用户的影响;
  2. 蓝绿部署提供了一个备份环境,如果新版本出现问题,可以快速切换回稳定的蓝色环境,保证业务的连续性和稳定性;
  3. 通过在绿色环境中进行测试和验证,可以在将新版本推送给真实用户之前发现和解决潜在问题,降低了部署和发布过程中的风险。

不足:

  1. 一次性的****全量切换,如果发布出现问题, 会对用户产生比较大的影响****
  2. *需要两倍的机器资源*
  3. 需要中间件和应用自身支持热备集群的流量切换

适用场景:

  1. 对用户体验有一定容忍度的场景。
  2. 机器资源有富余或者可以按需分配(AWS 云,或自建容器云)
img

灰度发布

**定义:**灰度发布属于增量发布,新老版本同时为用户提供服务。灰度发布的主要目的是保证系统的可用性。逐步将新版本推送给一部分用户,而不是一次性对所有用户发布的策略。这允许团队收集反馈并确保新版本的稳定性,从而降低发布新版本的风险。而金丝雀发布是灰度发布的一种实现。

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB Test 就是一种灰度发布方式,让一部分用户继续用 A,一部分用户开始用 B,如果用户对 B 没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到 B 上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

**发布流程:**在现有环境中部署少量服务的新版本(金丝雀),部署完成后,对线上流量进行监测,如果没有问题就对老版本服务进行全量升级。

img

优点:

  • 降低风险:问题版本影响的用户数量有限。
  • 真实反馈:可以从真实用户环境中收集数据和反馈。

缺点:

  • 复杂的流量控制:需要复杂的路由逻辑来控制哪些用户接收到新版本。
  • 长时间部署:整个过程可能需要较长时间,特别是对于大型用户基础。

适用场景

  • 蓝绿部署适合那些对停机时间极度敏感,以及能够承担额外成本以快速回滚的场景;
  • 灰度发布适合希望逐步推出新功能,收集用户反馈,并愿意投入时间逐步解决可能出现的问题的场景

滚动发布

按批次增量滚动发布,提供更平滑的用户体验。 滚动发布通常指取出一个或多个服务,将其停止服务、升级到新版本;周而复始地重复这一过程,直到所有实例都升级到新版本。使用滚动发布,可以最大程度地避免因发布导致的流量丢失和服务不可用问题

优点

  • 按批次增量滚动发布,提供更平滑的用户体验。;

  • 不需要停机更新,无感知平滑更新;

  • 版本更新成本小,不需要新旧版本共存;

缺点

  • 更新时间长:每次只更新一个/多个镜像,需要频繁连续等待服务启动缓冲
  • 旧版本环境无法得到备份:始终只有一个环境存在
  • 回滚困难:如果滚动发布到一半出了问题,回滚时需要使用同样的滚动策略回滚旧版本

A/B测试

A/B测试是效果测试,同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分(它们[上线时可能采用了蓝绿部署的方式)。

A/B测试关注的是不同版本的服务的实际效果,譬如说转化率、订单情况等。

A/B测试时,线上同时运行多个版本的服务,这些服务通常会有一些体验上的差异,譬如说页面样式、颜色、操作流程不同。相关人员通过分析各个版本服务的实际效果,选出效果最好的版本。

环境介绍:

pro环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。

  • 需要高度稳定和安全,通常关闭错误报告并开启错误日志记录功能。
  • 配置经过严格审查和优化,以满足业务需求和高性能要求。
  • 部署的软件版本经过充分测试,并符合业务需求和质量标准。

pre环境:灰度环境,外部用户可以访问,在配置、网络设置、安全策略等方面保持一致的测试环境,它允许对一部分用户或流量展示新功能或更新,以便在全面推广到生产环境之前进行测试和验证。

test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定,测试人员对开发完成的代码进行集成测试、系统测试、验收测试等的环境。

  • 配置应尽可能与生产环境相似,以模拟真实运行条件。
  • 包含测试所需的测试数据、测试工具和测试人员。
  • 用于验证软件是否满足需求规格说明书的要求,并检查软件在不同配置和场景下的稳定性和性能。

dev环境:开发环境,外部用户无法访问,开发人员用于编写、调试和测试代码的环境。

  • 配置可能较为灵活,以满足开发过程中的各种需求。
  • 通常包含完整的开发工具链,如IDE、版本控制系统等。
  • 代码可能未经过严格的测试或优化。

灰度环境:

  1. 定义:
    • 灰度环境是一个中间环境,介于开发和生产环境之间。它允许开发团队将新版本的软件或服务先部署给一小部分用户或流量,以收集实际使用中的反馈和测试其稳定性和性能。
  2. 目的:
    • 降低风险:通过在小范围内测试新版本,可以避免直接面向全体用户发布可能带来的风险和问题。
    • 收集反馈:通过用户在实际使用中的反馈,可以及时发现和修复潜在的问题,优化产品体验。
    • 逐步推广:根据灰度测试的结果,可以逐步增加新版本的用户范围,实现平稳过渡。
  3. 工作流程:
    • 初期:仅允许一小部分用户(如白名单用户)进入灰度环境,使用新版本的功能或服务。
    • 中期:根据用户反馈和测试数据,调整或修复发现的问题,并可能扩大用户范围进行进一步测试。
    • 后期:如果新版本在灰度环境中表现良好,且没有发现重大问题,可以逐步将其推广到全体用户。
  4. 应用场景:
    • 新功能发布:在新功能上线前,先对一小部分用户进行灰度测试,以确保新功能的稳定性和用户体验。
    • 系统升级:在系统升级前,先对一小部分用户进行灰度测试,以确保系统升级后不会出现严重的问题。
    • A/B测试:将用户分为两组,对其中一组用户进行新功能的灰度测试,以比较新旧功能的差异,从而决定新功能是否正式上线。
  5. 优势:
    • 早期发现问题:通过灰度环境,可以在正式发布前尽早发现和修复问题。
    • 逐步推广:灰度环境允许开发团队逐步扩大新版本的用户范围,实现平稳过渡。
    • 反馈收集:通过用户在实际使用中的反馈,可以持续优化产品体验。

总结来说,灰度环境是一个重要的中间环境,用于在软件开发和部署过程中进行初步测试与部署,以降低风险、收集反馈和逐步推广新版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1846579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

竞赛选题 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

uni-app中的css3选择器使用

2.给 view 添加样式 .box view{ font-size: 40upx; color: #8A6DE9; } 3.想改变某一个view 样式 .box>view:nth-child(1){ background: #09BB07; } .box>view:nth-child(2){ background: red; } .box>view:nth-child(3){ background: yellow; } 注意&am…

MMDetection 目标检测 —— 环境搭建和基础使用

参考文档 开始你的第一步 — MMDetection 3.3.0 文档 依赖 步骤 0. 下载并安装 Anaconda。 步骤 1. 创建并激活一个 conda 环境。(我选择的是python3.10) conda create --name openmmlab python3.8 -y conda activate openmmlab 步骤 2. 基于 PyTo…

【算法基础】Newton求根法

文章目录 Newton求根法算法求解平方根 Newton求根法 1664年Newton提出了一种迭代求根的方法。这种方法有时也被叫做Raphson方法。虽然Newton更早发现了这种方法,但Raphson首先在自己的文章中介绍了这种方法。 该方法解决的问题如下。 给定一个方程: …

AXI学习笔记

文章目录 AXI口诀:AXI三种总线,三种接口,一个协议背景知识一、 AMBA:二、AXI2.1 通信协议与握手机制2.2 AXI协议特点2.3 三种AXI总线类型(AXI4、AXI4-lite、AXI4-stream)2.3.1 AXI通道(5通道&am…

CleanMyMac中文版2024官方正式版下载!你的电脑清洁专家!

CleanMyMac中文版,你的电脑清洁专家!✨🧵 你是否曾为电脑的卡顿和垃圾文件而烦恼?别担心,CleanMyMac中文版来帮你解决这些问题!这款神奇的软件不仅可以帮助你清理垃圾文件,还能优化系统性能&…

循环的三种写法

一、for(i): for (int i0;i< arrayList.size();i){System.out.println(arrayList.get(i));} 最基本的循环方法。 二、for-each: 又称加强for &#xff0c;更简单的遍历集合。 三、迭代器: 迭代器是调用Java中的Iterator接口&#xff0c;该接口定义了三个方法分别是hasNex…

AI助手,办公提效好工具!

随着人工智能AI技术的发展&#xff0c;AI工具已经成为我们提高工作效率的重要工具。无论是日常办公、学习还是生活娱乐&#xff0c;AI工具都能为我们提供支持和帮助。下面小编就来和大家分享几款AI助手&#xff0c;方便大家了解和使用AI工具。 1. Kimi智能助手 Kimi智能助手是…

fastadmin配合定时任务

一个系统单纯到linux本身的定时任务&#xff0c;是很不方便的&#xff0c;需要结合起来使用定时任务 - 便捷的后台定时任务管理 – 基于ThinkPHP和Bootstrap的极速后台开发框架 1.安装插件 2.配置宝塔定时任务 3.自己用工具生成规则即可:Cron - 在线Cron表达式生成器

Vue3.4新增的defineModel的使用

define-model的作用 在3.3及之前的版本&#xff0c;父子组件之间的通讯&#xff0c;一直都是靠props&#xff08;父传子&#xff09;和emit&#xff08;子传父&#xff09;来实现。而define-model整合了这两种方法&#xff0c;只需要在父组件中定义define-model的方法&#xf…

肇庆具有资质等保机构有几家?在哪里?

在近期揭晓的“中国百强城市排行榜”中&#xff0c;广东省共有12个城市入选&#xff0c;其中包括肇庆。肇庆-山水之城&#xff0c;文化之韵&#xff0c;端砚之乡&#xff0c;岭南瑰宝&#xff0c;是一个非常有发展的城市&#xff0c;企业多多。这不不少肇庆企业在问&#xff0c…

MySQL——触发器(trigger)基本结构

1、修改分隔符符号 delimiter $$ $$可以修改 2、创建触发器函数名称 create trigger 函数名 3、什么样在操作触发&#xff0c;操作哪个表 after &#xff1a;……之后触发 before &#xff1a;……之后触发 insert &#xff1a;……之后触发 update &#xff1a;……之后触…

Flutter【组件】点击类型表单项

简介 flutter 点击表单项组件&#xff0c;适合用户输入表单的场景。 点击表单项组件是一个用户界面元素&#xff0c;通常用于表单或设置界面中&#xff0c;以便用户可以点击它们来选择或更改某些设置或输入内容。这类组件通常由一个标签和一个可点击区域组成&#xff0c;并且…

轻松ChatGPT的使用技巧,让你的生活更智能

ChatGPT&#xff0c;由OpenAI的GPT-3.5架构支持&#xff0c;已经彻底改变了我们与人工智能互动的方式。这个先进的语言模型被证明是一种多功能的工具&#xff0c;能够处理各种对话任务。不过&#xff0c;用户可以通过一些技巧和窍门&#xff0c;进一步提升使用ChatGPT的体验&am…

世界是软件定义的 - 正如硬件公司所证明的那样

很难相信&#xff0c;马克安德森&#xff08;Marc Andressen&#xff09;在13年前写下了他著名的博客&#xff0c;题为“软件正在吞噬世界”。在这篇文章中&#xff0c;他谈到了现代软件组织对传统企业造成的破坏。 十三年后&#xff0c;即使面对英伟达的平流层估值&#xff0…

echarts隔行背景色

看了下使用说明&#xff0c;试了半天终于搞对了 参考文档&#xff1a;Documentation - Apache ECharts option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [120, 200, 150, 80, 70, 110, 130],type: bar,mar…

代码随想录第30天|贪心算法

122.买卖股票的最佳时机II 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得…

装备制造业CRM解决方案

01、数字化转型驱动企业&#xff0c;向“以客户需求驱动创新生产”的智能制造业转变 我国装备制造业经过多年的发展&#xff0c;取得了令人瞩目的成就&#xff0c;形成了门类齐全、具有相当规模和一定水平的产业体系&#xff1b;主要包含通用设备、专用设备、电气机械、交通运…

Adobe Illustrator 矢量绘图软件下载,Ai 2024最新版获取!

Adobe Illustrator&#xff0c;无论是艺术品、图标还是海报等设计作品&#xff0c;Adobe Illustrator都能以超凡的表现力展现出设计师们的创意与才华。 近年来&#xff0c;随着人工智能技术的迅猛发展&#xff0c;各行各业都纷纷将这一技术引入自身领域&#xff0c;以提升工作效…

白驹过隙,沧海桑田

01. 机缘 今天是我加入CSDN的第2620天&#xff0c;是我成为创作者的第1024天。2021 年 08 月 25 日我在这里分享了人生中第一篇技术文章 springboot 签名验证。 现在在回看这篇文章还能感觉到当时的青涩和技术的薄弱&#xff0c;后面每一篇文章的输出可能都是在不断的学习和进…