【译】蓝绿部署 -- Martin Fowler

【原文】: BlueGreenDeployment
【作者】:Martin Fowler
【译者】:随安居士
【时间】:2018.07.01

我和我同事的主要目标是敦促客户采用全自动化部署流程, 自动化部署有助于减少软件“完成”到上线之间的延迟。 Dave Farley和Jez Humble正在完成一本关于本话题的书籍 - 《持续交付-发布可靠软件的系统方法》。它的很多想法来自于持续集成,更关注构建软件快速交付能力。和其他未被有效利用的技术一样,蓝绿部署一节吸引了我的注意,因此我想在此对其进行简要阐述。

蓝绿部署

自动部署的一大挑战在于自我切换(cut-over itself),将软件从最终测试阶段切换为在线产品。这一动作要快,尽可能减少系统的停机时间。蓝绿部署通过部署两套的生产环境达到该目的,这两套环境要尽可能保持一致。当准备发布新的软件(版本)时,先在绿环境完成最终测试。如果绿环境工作正常,切换Router使所有的请求路由到绿环境,蓝环境终止。

同样,蓝绿部署可以实现快速回滚:如果绿环境运行异常,切换Router重新启用蓝环境。绿环境运行阶段产生的事务丢失,这仍是一个棘手的问题。当然,这依赖于具体的设计方案,如果绿环境运行过程中,将蓝环境的数据库做为绿环境的同步备,可解决上述问题。或者,在切换前先进入只读模式,运行一段时间后再进入读写模式。这可能足以发现很多潜在的问题。

两套环境需要保持差异,但应尽可能相同。在某些情况下,可能是不同的硬件,可能是运行在相同(或不同)硬件上的不同虚拟机,也可能是同一个操作环境,通过IP地址分为两个单独的区域。

一旦绿环境上线且运行稳定,你就可以把蓝环境做为测试环境并完成最终测试。如果下一个版本准备就绪,将生产环境由绿色切换为蓝色,就之前从蓝色切换到绿色一样。 这样,绿色环境和蓝色环境将在生产版本、前一版本(用于回滚)、下一版本之间定期循环。

这种方式的一个优势在于:其原理和热备份基本相同。因此,每次版本发布相当于做了一次容灾恢复测试(发布频率应比容灾发生频率更高)。

蓝绿部署的基本想法是保持两套可以相互切换的环境,实现上可以有各种细节差异。如切换可以通过跳转Web服务器,而不是在Router上完成。另外一种变化是使用相同的数据库,蓝绿切换只在Web和领域层进行,数据库不切换。

使用该项技术的另外一项挑战来自数据库,尤其是当新版本需要更改Schema时。诀窍是将Schema更改的部署与应用程序升级分开。 因此,首先使用《数据库重构》修改Schema,使数据库同时支持新旧版本应用,部署并检查是否一切正常,此时你拥有了一个回滚点,然后再部署新版本的应用程序(当升级已经结束时,移除数据库对旧版本的支持)。

这项技术已经存在很多年了,但并没未得到应得的使用。Dan North和Jez Humble重新唤醒了它。

更多阅读

您可以在Jez Humble和Dave Farley的《持续交付-发布可靠软件的系统方法》中找到有关此技术和相关技术的更多详细信息。 我的交付指南指出了更多的资料。

致谢

Ketan Padegaonkar插图


Updates

2015-06-05: Hacker News报道后,该页面获得了更多页面流量。 所以我添加了一个关于数据库更改和更多阅读部分的段落。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342