凌晨三点、熬夜、数据备份、战战兢兢、一步一检查、业务中断、测试验证、紧急回退、大BOSS亲自到场…这是通信工程师们熟悉的割接场景。
每一次软件版本升级,尤其是核心网,牵一发而动全身,错一处而毁全网,对于网络运维是一件非常痛苦的事。
同样是软件升级,电信业为什么这么难,而互联网巨头们却轻轻松松就实现了呢?
亚马逊每小时要部署1万个软件,谷歌每月要更改一半源代码,微信版本升级了N次,为什么他们能在用户几乎无感知下频繁的进行软件升级?
进入5G时代,随着高清直播、VR/AR、云游戏、工业控制、无人机、自动驾驶、远程医疗等各种眼花缭乱的5G新应用兴起,业务需求之多、变化之快超出了以往2/3/4G任何一个时代,这不但要求网络功能可根据业务需求快速升级,还要求业务能快速试错。
面对5G时代的业务需求,电信业能不能像互联网巨头那样轻松、频繁的进行软件升级呢?
可以。
这需要灰度升级。
灰度升级,也叫灰度发布,是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度发布开始到结束期间的这一段时间,称为灰度期。
灰度发布通过小粒度快速试错来降低业务变更风险,已成为互联网行业业务上线发布的基础能力之一。那电信业的灰度发布如何实现呢?
在面向5G演进的核心网网络中,华为进一步基于Cloud Native等概念方法,将电信业务特点与IT先进理念完美结合,打造了业界唯一的5G核心网灰度升级方案,可助力5G业务敏捷可靠上线,并已成功实现业界首商用落地。
以下就以华为灰度升级方案为例,来看一看它是如何实现的?
软件架构微服务,让发布升级小快灵
说到微服务,先来简单了解一下网络云化的演进历程。
如上图,网络云化经历了从网络功能虚拟化(NFV)到云原生(Cloud Native)的演进历程,总的来说就是“分解”、“再分解”的过程。
NFV将软硬件一体的传统专用网络设备解耦为软件(VNF)和通用硬件,网络功能软件不再受专用硬件限制,可灵活部署于通用硬件之上,从而让运营商通过软件升级即可推出新功能和新服务。
可这还不够,脱离了专用硬件的VNF是大颗粒的电信软件包,非常庞大、复杂,动辄涉及数百万行软件代码,这意味着从软件开发到发布、测试整个过程工作量巨大,估计要耗费一年的时间,无法敏捷响应快速变化的5G业务需求。
怎么办?那就基于云原生的设计原则,将大颗粒的VNF进一步分解为多个小颗粒的微服务,比如接入管理微服务、对话管理微服务、数据库管理微服务、接口管理微服务等。
微服务不仅颗粒小,且具有独立的生命周期管理,可以实现更细粒度的软件开发、发布、测试和升级,这就提升了运营敏捷性,可加速创新和新业务上线,适应瞬息万变的市场业务变化。
如果把传统的电信软件比作雕版印刷,单个汉字错误则导致整版废弃,耗时费力;那么,微服务则完全颠覆了传统软件架构,就像活字印刷一样,个体错误不会导致整版返工,效率呈指数级提升。
华为灰度升级方案正是基于软件微服务架构,将大颗粒的软件包分解成相互独立的小软件模块,以微服务的方式进行版本的开发,测试和发布,每个微服务有自己独立的版本号,升级时自动判断源版本和目标版本中每个微服务的版本号,只升级有变化的微服务,这样即可实现小快灵的增量软件发布。
周边设备无感知,大白天也可升级操作
微服务解决了电信软件过于庞大、复杂的问题,但要让网络功能更具弹性和鲁棒性,还需无状态设计和软件三层解耦。
注意,这里的三层解耦架构不是指NFV的硬件层、虚拟化层和VNF层“三层解耦”,而是将软件分为无状态的三层架构。
众所周知,传统电信网元会一直保存相关UE的上下文信息,以确保连接不中断,称为有状态。这种有状态设计是电信软件在虚拟机/容器之间灵活迁移的羁绊。
为此,行业参考IT软件的无状态设计,将上下文信息与服务软件分离,并组成独立的状态数据库层,从而使得服务处理软件(VNF组件)成为敏捷、弹性的无状态服务处理层。
同时,再通过接口层的独立的负载均衡软件模块,可有效、快速的均衡服务处理软件之间的负载,以支撑整个系统的大吞吐量。
这就将电信软件分为了三层:数据层、服务处理层和负载均衡层。
华为灰度升级解决方案正是基于无状态和软件三层解耦设计的。
在传统有状态下,电信软件的版本发布上线是排他性的,同一时间只能存在一个软件版本,而且升级过程要想做到业务无损,首先要做的就是花费大量时间将待升级设备上的用户迁移到Pool内其他设备上,需要评估这些在网设备的软硬件资源,业务模型等,同时针对周边无线,数通等设备进行相关的配置联动修改,牵一发动全身。如果无法采用Pool方式迁移用户,采用直接升级方式,必须在夜间进行操作,会导致业务中断30分钟以上,无法实现业务无损。
而华为灰度升级方案打破了非黑即白的软件版本发布规则,基于软件三层解耦及无状态设计原则,实现多个版本会话的数据兼容,多版本服务或微服务实例共存,并通过负载均衡的智能业务分发能力实现外部网络设备无感知。
系统内可同时存在两个软件版本,通过逐步滚动升级的方式,迁移至最终目标版本,无需提前准备用户迁移设备,无需关联修改无线,数通等设备,实现不分时段的全天候升级操作,业务“0”中断。
用户迁移分批次,业务变更低风险
传统电信软件版本升级完成后,所有用户就不得不接受新版本的考验,一旦出现问题,所有用户业务受损,损失无法估量。因此用户在版本间的迁移不应该是一蹴而就的,灰度升级场景下,系统支持在新版本上进行业务拨测,减少或避免测试床测试。使用测试用户进行已有特性和新特性的测试。当拨测发现问题后,可进行回退操作。回退时仅删除拨测用户,对其它用户无影响。支持小粒度试错迁移,支持分批次迁移。第一批次可迁移少量用户,以验证迁移过程的正确性。有问题可回退,只影响该部分用户。后续批次也可新旧版本长期共存,以便观察业务,无问题再进行下一批次迁移,进一步提高升级过程的可靠性。
就这样,通过灰度发布,既解决了传统升级割接难的问题,降低业务变更风险,也让网络能敏捷、健壮的应对多样化和快速变化的5G新业务,进一步促进5G行业数字化,实现小步快跑上5G。