赵成的运维体系管理课
赵成
《进化: 运维技术变革与实践探索》作者
37829 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
开篇词 (1讲)
效率和稳定性最佳实践 (20讲)
赵成的运维体系管理课
15
15
1.0x
00:00/00:00
登录|注册

16 | 线上环境建设,要扛得住真刀真枪的考验

相当于一个小号的生产环境
稳定性要求相当于生产环境
用于员工提前体验新版本软件的功能
不能满足真实用户访问的要求和体验
用于问题定位和优化改进
基于线上真实环境进行功能和业务流程的最终验证
无法解决数据规模、分布特点、多样性等方面的差异
控制影响范围,但仍会影响部分真实用户
从生产环境的集群中再建立一个独立集群,用于发布模式
线下和线上用户场景存在差异,导致验证不到的严重问题
随着业务量增大和复杂度升高,需要严肃应对生产环境的变更
软件代码开发完成后发布到生产环境
办公网生产环境
预发环境
Beta环境
生产环境
线上环境建设

该思维导图由 AI 生成,仅供参考

前面几期我们分享了一些线下环境建设方面的内容,我们可以感受到,整个线下环境的建设是比较复杂的,那经过线下环境的验证,是不是就可以直接发布到线上生产环境了呢?答案同样是否定的,由线下正式交付到线上之前,我们仍然会做很多的验证和稳定性保障工作。
今天我们就一起来看一下线上环境是如何建设的。
下面,我们就生产环境、Beta 环境、预发环境、办公网生产环境这四种线上环境分别展开讨论。

生产环境

我们还是进入到现实场景中。最初我们的软件代码开发完成后,就可以发布到生产环境,也就是可以正式接入用户流量,承载真实的业务场景。
在最早期,我们业务复杂度不高,用户量不大,集群规模小,软件架构也相对简单。在这种情况下,其实这一个环境就足够了,真有问题,也可以快速回退掉。退一步讲,即使有问题也回退不了的话,影响范围也有限。
所以,这个时候,线上环境 = 生产环境。
我们知道,随着业务量增大和业务复杂度升高,我们的软件架构、部署模式、集群规模等等也相应变得复杂和庞大起来。同时,业务产品在用户和业界的影响力也在变得越来越大。
这个时候,任何一个小的变更或一个不起眼的小问题,都有可能导致非常严重的故障,从而造成公司资损甚至是恶劣的产品口碑影响。
比如,我们假想一下,如果国内某个大型电商平台不可用,或者某即时通讯软件不可用,会造成何等严重的后果,就不难想象了。
所以,这时就需要我们非常严肃而谨慎地应对生产环境的变更。
我想你可能跟我一样,会想到一个问题:就是我们不是已经在线下环境经过了很多轮不同形式的验证测试环节,为什么到了生产环境还会有验证不到的严重问题?
这里涉及一个用户和业务场景的概念,就是线下和线上的用户场景是完全不同的:线下是我们模拟出来的,线上却是真实的用户场景,这两者之间会存在巨大的差异,有差异,系统的表现状况就会不一样。
所以线下我们只能尽可能地确保业务功能和业务流程是正常的,但是没法百分之百模拟线上场景,特别是一些异常特殊场景方面。这一点后面的文章我们还会再分享,这篇文章我们只要知道存在差异即可。
这个时候,我们的第一个思路就是:即使有影响,也要把它控制在小范围内,或者是在萌芽状态时就发现。这样就可以提前处理,而不是全量发布到生产环境后才发现问题,影响全局。
所以,线上的第二个环境,Beta 环境就产生了。这个环境也可以叫作灰度环境,包括我们常提到的金丝雀发布,也是基于这个环境的发布模式。

Beta 环境

这个环境的建设,我们简单理解,就是从生产环境的集群中,再建立一个独立集群。看过我们之前介绍 CMDB 应用和服务分组的文章的读者应该不难理解,针对应用,就是再建立一个分组,独立出一个集群出来,但是这个集群中服务器数量 1-2 台即可,主要还是针对小规模真实业务流量。如何做到小规模呢?这就要在负载均衡策略上做工作了,主要两种方式:
调用 RPC,在服务化框架的复杂均衡策略中,将其权重或者流量配比降低;
调用 HTTP,在四层 VIP 或者七层权重上,将权重降低。
这个环境同样不会全量建设,通常只针对核心应用,比如交易链路上的各个应用。同时,除了承担的流量比重不同外,其他与生产环境的应用没有任何差别。
后面的部署发布环节,我们会看到,针对核心应用,必须要经过 Beta 发布环节,才允许正式发布到生产环境。
有了 Beta 环境之后,上面说到的影响范围的问题从一定程度上就可控了。但是在 Beta 环境上我们仍然会有两个问题无法很好的解决:
影响范围再可控,其实也已经影响到了部分真实用户,特别是当访问量特别大的时候,即使是千分之一、万分之一,也是不小的数量。
之前经历的线下环境毕竟是一个模拟环境,一方面,在数据规模、分布特点、多样性以及真实性方面,跟生产环境的数据场景还是会有很大的区别,所以有很多跟业务逻辑相关性不大,但是跟数据相关性特别强的场景功能,在线下环境就很难验证出来;另一方面,对于一些第三方的系统,特别是商家、支付和物流这样的体系,在线下环境极有可能是 Mock 出来的,所以验证的时候并不能代表真实场景,但是等到了线上再去发现问题,就可能就会造成真实的业务影响。业务访问失败可以重试,但是造成商家真实的销售数据错误,或者用户真实的支付资金错误,这样就会非常麻烦了。所以,从线下直接进入 Beta 环境,还是会给生产环境,特别是数据层面造成影响。
当业务复杂度和系统规模发展到一定程度后,上面两个问题就会非常突出,所以单纯的 Beta 环境是无法满足要求的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了软件开发中线上环境建设的重要性和复杂性。文章首先指出线下环境验证无法完全模拟真实线上场景,因此强调了严格的线上环境建设和验证工作的必要性。针对生产环境、Beta环境和预发环境,文章提出了各自的特点和建设要求。预发环境作为生产环境的前置验证环境,需要保证稳定性并且不允许频繁变更部署,同时在问题定位和用户体验方面发挥重要作用。而办公网生产环境则针对公司内部员工提供了真实用户体验,要求稳定性和规模与生产环境相当。文章还强调了环境建设的复杂性和管理成本,并提出了精简环境的重要性。总之,本文通过对线上环境建设和验证工作的深入剖析,为技术人员提供了宝贵的经验和建议。读者可以从中了解到线上环境建设的重要性、各种环境的特点和要求,以及环境管理的复杂性和精简性的重要性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《赵成的运维体系管理课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 怀刚
    预发和办公室线上环境使用的都是生产数据,会不会存在干扰?预发的用户限定为内部测试吗,与预发数据层和生产分开有什么利弊?

    作者回复: 测试目的不一样,预发环境主要给开发和测试做最终的联调,接口和核心功能验证,办公网线上环境就正式开放给用户通过app或电脑使用,只不过用户是公司员工而已。 用线上数据就是为了保证真实数据环境下确保没有问题,对于会造成数据污染的操作是禁止的,这一点在研发内部是要专门培训和强调的,出现问题也是要承担责任的。

    2018-02-02
    7
  • 祺超
    这三套生产环境公用一套数据库,意味着所有对数据库的升级要考虑平滑了

    作者回复: 兼容性是接口设计时必须考虑的环节,这个是前提

    2018-03-01
    4
  • 牧野静风
    预发布环境如果有数据写入到数据库,如何建立清除机制,因为可能流到生产环境,对生产的数据产生影响,这块怎么处理

    作者回复: 要有测试数据,比如测试账号、测试商品、测试优惠券,测试的时候都要用这些数据来测,同时要针对测试账号做限制,不能随意操作线上数据。

    2019-07-26
    2
  • 换位思考
    预发 办公室 第三方回调的问题 有无遇到 怎么解决

    作者回复: 通常mock模拟,依赖外部的环节又是无法完全具体条件

    2018-03-07
    2
  • 龍捲風
    不适合金融行业,银行券商的数据有着极大的私密性

    作者回复: 传统强监管行业是要做DO分离的,情况确实不一样

    2021-07-22
  • mj4ever
    老师,您好,关于这句话,没太理解『业务调用必须本环境内闭环,预发不允许跨环境进行应用服务调用,如预发应用调用生产环境应用,反之亦然』。 我们这边的实际情况是,有多个子应用互相依赖,比如,a、b、c三个应用,如果a发版时,给a搭建一个预发环境,叫a1好了,a1依赖b和c,按照您说的网络隔离原则,a1是不能访问b和c的了,但是预发就是希望能测试下b和c提供的接口
    2022-05-24
  • 符亮
    这两章多环境的管理真的启发甚多,太感谢了
    2020-07-22
  • 17
    看完有如下问题: 预发环境如何使用,还是没太懂,文章也没明确说清楚? 预发环境用于验证问题,如果验证?预发环境的流量如何控制
    2020-01-12
  • 王鹏
    那对于会造成数据污染的操作(比如下单)如何在预发环境验证呢?
    2018-12-07
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部