你可能不知道,微信的服务器今天才彻底搬到云上( 四 )


文章图片
腾讯清远数据中心图源:微信团队那次事故之后 , 微信开始将服务器分散布置 , 在三栋不同建筑物中分别放置机房的容灾模式由此出现 。 这也是K8S对齐Yard的一个重点 。 “K8S对三园区的支持能不能做好 , 这是当时首先考虑的事 。 ”谨慎起见 , 微信团队内部对这次迁移过一个明确的要求 , 每一步迁移操作都要能够回退Yard 。 “YARD平台的容量要随时能承受K8S平台回退带来的流量 , 确保业务无损” , 微信团队表示 。 剩下的就是K8S代替了Yard后 , 能给微信带来什么了 。 Coder到OwnerDevOps时代的软件开发部署 , 频率迫切到每周甚至每天 , 但开发和运维环节的割裂 , 逐渐成为微信内部一个明显的效率问题 。 虽然Dev与Ops写在一起 , 实际操作起来却由两个团队完成 。 开发团队完成代码的编写打包后交给运维团队去部署核上线 , 结果是运维人员不熟悉代码逻辑 , 开发人员不懂上线 。 这样的问题频繁在微信内部发生 , 遇到紧急问题往往需要拉很多人员共同处理 。 “这样的事拉低了整个团队的研发效率 , ”微信业务团队中很多人同时提到了这一点 。 迁移到K8S后对于微信开发者来说最明显的改变就在这里 , 全栈化的部署使得运维的角色很大程度上与开发者合并到了一起 。 微信的开发团队除了要写代码 , 也可以同时完成扩容、上线以及模块部署 , 这条从开发到上线的链路被极大缩短 , 以微信基础架构工程师edselwang的话来说 , “业务代码编写人员从纯粹的Coder变成了一个业务模块的Owner” 。 并且由于K8S具备更全面的虚拟化支持 , 在整个研发体系完成上云之后 , 节点部署与虚拟机脱离 , 开发过程中CI/CD(持续集成/持续部署)流程作为流水线般的自动交付过程可以更完整的实现 , 这可以被理解成一种“自愈”能力 。 edselwang举了一个例子 , 如果部署在虚拟机上的节点坏了 , 因为虚拟机不具备节点直接迁移的属性 , 所以需要运维人员人工给节点在两台虚拟机之间做转移 。 但如果节点是部署在K8S的平台上 , 系统可以代替人工来给节点做自动调度 。 曾经年三十晚上抢红包的高峰期 , 微信整个运维团队加班守在服务器前的排班 , 在整体上云后也会轻松下来 。 更大的一个层面上 , 微信在腾讯内部并不是最早上K8S的 , 一手扶植起QQ的汤道生在930变革之后进入新组的CSIG事业部 , QQ随后成为腾讯首个全面上云的内部业务 , 众多明星游戏工作室所在的IEG事业部也在几年前开始将架构摆到云上 。 你可能不知道,微信的服务器今天才彻底搬到云上
文章图片
图源:源于网络腾讯整体的K8S环境搭建在微信迁移之前 , 这意味着后者从Yard跳脱出来后 , 将在基础架构研发上进一步更融入进腾讯云原生的设施体系 , 无论从资源调度还是系统工具的适配性上来看 , 新业务的决策成本都变得更低了 。 这样复杂的基础架构 , 最终指向一种释放人的价值的 , 更先进的生产力工具 。 微信技术架构负责人StephenLiu对于一个完全云原生的微信的期待是 , 它最终能成为一种资源调度意义上的“自动驾驶” 。 “如果在2014之前的微信是Level0的话 , 有了Yard之后现在是Level1 , 经过2021年整个去挖掘K8S的各种能力之后 , 我觉得我们现在应该处在Level2的状态 。 ”StephenLiu设想中未来的微信春节保供调度将完全由系统调度主导 , 而这一定基于一个完全云原生的微信 。 2019年是微信最后一次申请物理服务器 , 按通常四到五年的折旧时间来算 , 不出意外的话 , 这最后一批物理服务器将会在2023年底左右过保 , 那恰好是Yard开始搭建的10年之后 。 届时的微信将真正把整个身体搬上云端 。 一切都在不动声色中 , 微信成了新的微信 。