专栏首页性能与架构Twitter是如何部署公共JS组件的?

Twitter是如何部署公共JS组件的?

Twitter有一个对外开放的JS组件,widgets.js,其他站长可以把这个js嵌入到自己的网页中,就可以有Twitter的一些功能(类似新浪微博开放的JS组件)

为了让站长简单方便的集成,所有功能都在这一个js文件中,引用时也不需要版本号

widgets.js 的访问量巨大,每秒30万次

所以,这个js的更新部署是个比较麻烦的任务,如何安全的部署新版,出现问题时把影响范围尽量降低?Twitter特别对这个js的部署流程进行了优化

部署流程的要求

1. 可回退

‘回退第一,改错第二’是Twitter的重要理念,回退必须快速、简单

2. 渐进式发布

任何代码都可能有bug,所以要分阶段逐渐发布,尽早发现问题,尽快回退

3. 可视性

需要实时看到部署过程的状态,例如浏览器类型、国家地区、新旧版本的当前比例

部署流程

部署过程使用 DNS 来控制,通过规则的配置,决定当前这个请求使用新版本还是旧版本

共有3个部分:

1. DNS 管理服务

每当有请求来到 platform.twitter.com 时,会根据这个请求的地理位置区域来决定解析到哪个IP(IP1 是旧版,IP2 是新版)

例如以地区A作为试点儿,具体规则如下:

第1阶段:来自地区A的 5% 流量会被解析到 IP2,其他的所有流量都进入 IP1

第2阶段:所有来自地区A的流量都解析到 IP2,其他进入 IP1

第3阶段:所有流量都解析到 IP2

2. CDN

IP1 的请求会从源1获取 widgets.js,IP2 的请求会从源2获取

3. Origin 源

是上传 widgets.js 的地方,CDN 会从 Origin 获取最新的 widgets.js

Origin 1 上是旧版,Origin 2 上是新版,流量被逐渐转移到 Origin 2,当部署完全成功后,widgets.js 会被拷贝到 Origin 1,然后把所有流量都转到 Origin 1

部署过程中发现问题的话,立即把所有流量转到 Origin 1,实现快速回退

widgets.js 在客户端执行时会返回日志信息,服务端就可以实时构建出统计图表

一个成功的部署过程如下图

白色线是使用新版的数量,灰色线是旧版数量,整个过程是新版部署比例逐渐提高,旧版反比例变化

这个部署流程已经运行了1年,非常高效,新版有bug时可以把影响降到最低,也可以看出影响的范围

小结

这套思路很值得学习,高效可靠的部署流程会直接影响产品的发展速度,好的部署流程会使产品升级更加放心,也就更加敢于进行创新尝试

本文分享自微信公众号 - 性能与架构(yogoup),作者:杜亦舒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Web前端开发技术栈

    前端领域的发展非常迅猛,大前端的时代到来了,据说每隔12-24个月,前端的难度将增加一倍,从下面的技术栈就可以看出前端领域的丰富度和复杂度 核心概念 HTML ...

    dys
  • 前端模块化工具 Browserify

    Browserify 是什么 Browserify 是一个浏览器端代码模块化的工具 为什么要使用 Browserify 浏览器端的代码模块化有2个明显的...

    dys
  • 微服务与Node.js为什么会广受喜爱?

    大多数项目开始时都是为了解决某一问题,比较简单,后来逐渐发展,就变得越来越大,形成一个很大的单体结构,所有的新功能都会向这个单体中添加,就像滚雪球,越来越大 ...

    dys
  • 腾讯全球数字生态大会倒计时, 原生技术专场开放云报名(文末有TPNS新用户福利!)

    9月9日~11日,腾讯全球数字生态大会将在线上举行。作为由腾讯主办的产业互联网年度盛会,大会预测洞察数字经济发展趋势,分享云计算、大数据、人工智能等技术创新成果...

    腾讯移动推送 TPNS
  • 腾讯全球数字生态大会进入倒计时,原生技术专场开放云报名

    ? 9月9日~11日,腾讯全球数字生态大会将在线上举行。作为由腾讯主办的产业互联网年度盛会,大会预测洞察数字经济发展趋势,分享云计算、大数据、人工智能等技术创...

    腾讯技术工程官方号
  • 为 Debian 安装最新版本的 Node.js

    Ubuntu 或 Debian 的软件仓库中的 Node.js 更新较慢,甚至只能等到新版本发布才能有最新的 Node.js 用。下面我们说一下从 NodeSo...

    Debian中国
  • 定了!首届腾讯全球数字生态大会5月落地昆明

    ? 3月29日,腾讯与云南省在北京钓鱼台国宾馆召开联合发布会,共同宣布2019年腾讯全球数字生态大会将于5月21日至23日在昆明滇池国际会展中心举办。 ? ▲...

    腾讯文旅
  • 清华硕士在家造了一辆车,从设计到加工一个人完成,轻松穿沙漠爬岩石,还人人可拆装

    最近,在「清华大学美术学院线上毕业展」上,出现了这样一个作品,一辆可驾驶、可拆装的全地形车。

    量子位
  • 本地源码恶意代码扫描脚本开发

    针对外包小团队开发或者百度下载的源码存在一句话后门或者命令执行等漏洞,有时候是经过加密的源码无法发觉,或者有的一句话太过隐藏,亦或者源码篇幅太长无法进行手工寻找...

    字节脉搏实验室
  • 《产业互联网安全十大趋势(2021)》发布,洞悉产业安全新变化

    2020年,产业互联网迎来全面爆发,网络安全也同样面临前所未有的新挑战。面对即将到来的2021年,企业将如何把握安全态势,迎接新趋势?

    腾讯安全

扫码关注云+社区

领取腾讯云代金券