AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

移除 Staging 环境,加快部署过程

作者:Matt Saunders

  • 2022-05-24
  • 本文字数:1276 字

    阅读完需:约 4 分钟

移除Staging环境,加快部署过程

大多数公司在部署网站或软件时都会使用预生产环境,以便在向用户推出最新的变更之前对它们进行测试。虽然这样做带来了一些好处,比如增加了进一步发现问题和 Bug 的防御线,但也会增加成本和复杂性,并产生相反的效果。随着持续交付技术等技术的发展,团队借助这些技术手段确保软件总是可部署的,于是从复杂的分支结构和测试环境转移到更简单的基础设施的趋势开始形成。Squeaky是一家在不侵犯用户隐私的情况下帮助企业了解用户如何访问他们的网站或 Web 应用程序的公司,它采用了不一样的做法,并解释了为什么他们不使用 Staging 环境。他们相信这有助于他们更快地发布产品,并减少生产环境中的 Bug。

 

来自 Squeaky 的 Lewis Monteith 在一篇介绍公司部署方案的博文中详细描述了他们在 Staging 环境中发现的几个问题:

 

预发布环境永远无法与生产环境等同:生产环境中的云原生应用通常需要更多的资源来处理负载——但在预发布环境中配置与生产环境完全相同的资源,其成本令人难以承受。这将导致预发布环境配置漂移,架构规模缩减,有碍于在预发布环境测试中发现问题。

 

预发布请求不断进入队列,导致版本越来越多,削弱了所有权关系:如果多个开发人员或团队想要同时发布代码,预发布环境可能会成为瓶颈。等待会导致测试延迟,特别是如果测试失败,所有人都必须等待问题被修复。发布队列会导致分支分离,当有大量的变更需要合并时,这会给开发人员造成巨大的痛苦。

 

如果减少发布,将导致版本被捆绑在一起,这意味着每个版本将引入更多的错误,并且很难追踪问题是哪些变更以及是谁导致的,因为开发人员可能没有意识到变更已经进入到生产环境。

 

流程取代了责任:预发布环境通常由运维团队负责维护,因此部署到预发布环境意味着责任将从开发人员转移到了运维团队。

 

Squeaky 的方案旨在解决或避免这些问题——要做到这一点,涉及四个关键原则。

 

只合并准备发布的代码:这需要确保进行了适当的测试,并在开发中验证了所有变更。

 

扁平化的分支策略:所有的分支都是从主分支派生出来,变更只会从分支合并回主分支。开发人员需要在本地进行冒烟测试。

 

高风险变更需要进行特性标记:如果 Squeaky 比较关注高负载下的性能或用户可能对变更做出的反应,它就会使用特性标记来发布重大的变更。他们可以在单个用户的基础上做到这一点。

 

实践性的部署:通过监控、日志和警报来确保部署没有问题,Squeaky 还使用了蓝绿部署先,将向部分用户推出变更,直到确保一切正常。

 

Squeaky 放弃了 Staging 环境,转而遵循持续交付原则,这改变了人们对交付软件的看法。要移除正式发布之前的缓冲阶段,就需要提升变更的可靠性,而这反过来又降低了成本和复杂性,加快了开发速度。

 

作者简介:

Matt Saunders,我帮助团队使用 DevOps 流程和工具快速高效地交付高质量的软件。我有丰富的与复杂企业、小型初创企业以及介于两者之间的中型企业合作的经验,我与软件开发人员密切合作,确保快速、可靠地交付业务价值。我还管理着伦敦 DevOps 讨论小组,这个小组有超过 8000 名成员,每月举办一次非常受欢迎的行业活动。

 

原文链接

How Removing Staging Environments Can Improve Your Deployments

2022-05-24 09:445454

评论

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

C#入门系列(七) -- 循环语句

陈言必行

C# 6月月更

性能优化手记下篇之【计费】

鲸品堂

性能优化 运维

企业竞争利器——知识管理

小炮

最全!即学即会 Serverless Devs 基础入门(上)

Serverless Devs

软件设计本质

GalaxyCreater

架构 设计模式 架构师 系统 软件设计

AssertJ 的异常(Exception )断言

HoneyMoose

GIT 小白的指令合集

甜甜的白桃

git 版本管理 6月月更

知名巧克力全球召回,区块链帮你摆脱“甜蜜陷阱”

旺链科技

区块链 产业区块链 食品安全 食品溯源

Web Service进阶(五)SOAPBinding方式讲解

No Silver Bullet

6月月更 SOAPBinding

SAP 云平台 ABAP 编程环境的前世今生

汪子熙

Cloud 云平台 SAP abap 6月月更

java培训 @Autowired 的实现原理

@零度

JAVA开发

最全!即学即会 Serverless Devs 基础入门(下)

Serverless Devs

WordPress 常规设置

海拥(haiyong.site)

WordPress 6月月更

微软成为规模化敏捷组织的16个关键因素

ShineScrum

敏捷 谷歌 规模化敏捷

【Python技能树共建】字符串方法

梦想橡皮擦

6月月更

fomo3d区块链分红游戏系统开发(案例演示)

开发微hkkf5566

Junit 测试中如何对异常进行断言

HoneyMoose

PHP开发者福音,支持CRUD代码生成且前后分离的tp6+Vue3后台管理系统开源啦!

妙码生花

php typescript Vue3 thinkphp Pinia

Linux驱动开发_视频广告机开发、Linux进程编程介绍

DS小龙哥

6月月更

7 个 Flutter 开源项目,让你成为更好的 Flutter 开发者

坚果

6月月更

浅谈JavaScript原型和原型链

大熊G

JavaScript 前端 6月月更

探究Presto SQL引擎(3)-代码生成

vivo互联网技术

sql presto antlr4

建木持续集成平台v2.4.1发布

Jianmu

DevOps CI/CD 开源项目 gitops 自动化运维

【网络编程知识】什么是Socket?概念及原理分析

呆呆敲代码的小Y

如何使用物联网低代码平台进行模型管理?

AIRIOT

物联网 低代码开发

Fabric.js 精简输出的JSON🎫

德育处主任

FabricJS 6月月更

springboot,vue,es,activiti数字知识库管理系统

金陵老街

Vue springboot ES Activiti 知识库

中兴新支点加入龙蜥社区,共建操作系统开源新生态

OpenAnolis小助手

开源 龙蜥社区 合作 CLA 中兴新支点

spring4.1.8初始化源码学习三部曲之一:AbstractApplicationContext构造方法

程序员欣宸

Java spring 6月月更

重点亦难点?三个案例看数据分类分级如何有效有序进行

美创科技

数据分类 数据安全

移除Staging环境,加快部署过程_软件工程_InfoQ精选文章