褚英双 郭晶云
随着港口信息化建设步入智慧港口建设的新阶段,天津港智慧工作平台逐渐融合多项港口运营相关业务,在满足基础办公应用需求的同时,接入多个自建应用和第三方应用,从而对平台运营升级的稳定性提出较高要求。此外,移动端应用软件使用频次的增加也使天津港智慧工作平台在运营升级方面面临新的挑战。为了降低天津港智慧工作平台运营升级风险,满足港口全天候连续作业对平台服务连续性和稳定性的要求,本文设计天津港智慧工作平台灰度发布系统和流程,在原有的计算机端和移动端负载均衡架构的基础上增加灰度服务器,为不同的升级类型和场景提供相应的发布策略,并配合服务器监控、日志分析和回滚策略,完成面向指定用户群体的灰度发布过程。
1 港口企业信息系统灰度发布的必要性
灰度发布指面向一定范围内的用户群体发布系统新功能或修复系统问题,以确保系统升级发布过程的平滑性和稳定性,避免其对用户体验造成大范围的负面影响。灰度发布适用于用户规模大、影响范围广的场景,是互联网企业普遍采用的系统升级发布方式。例如,今日头条、滴滴出行等移动端应用软件经常弹出的内测通知就是常见的灰度发布方式之一。
随着应用软件更新迭代的节奏加快以及用户对系统时效性的要求提高,港口企业信息系统面临的运营升级压力逐步显现。目前,港口企业信息系统大多沿用传统的升级发布方式:首先,对发布前的新系统开展功能测试和回归测试;然后,选择用户使用率最低的时段完成系统升级发布;最后,对发布后的新系统再次开展功能测试和回归测试。上述系统升级发布方式存在以下问题:(1)在用户规模较大的情况下,很难控制系统升级发布过程对用户体验造成的负面影响;(2)发布前的系统测试难以实现真正的用户全覆盖;(3)在发布前的系统测试过程中,为了扩大系统测试的用户覆盖面,需要投入更多的资源和时间,从而导致系统升级发布效率大大降低;(4)由于港口生产具有连续性,港口企业信息系统需要连续运行,即使在低用户使用率的时段升级发布系统,也难免对港口生产造成一定影响,而且这种影响是不可控制的。鉴于传统的系统升级发布方式难以适应港口生产特点,有必要对原有的天津港智慧工作平台发布系统和流程实施改造,设计合理有效的企业级灰度发布系统和流程。
2 天津港智慧工作平台灰度发布系统设计
2.1 计算机端负载均衡方案
2.1.1 硬件架构
在原有的计算机端负载均衡架构的基础上增加灰度服务器,并在灰度服务器上部署与其他负载均衡服务器相同的应用服务。根据实际业务需求和灰度用户数量,设置单台或多台灰度服务器,并根据灰度发布的實际影响范围,选择是否将灰度服务器挂载于负载均衡架构下。为了避免发生用户跳转的情况,在非灰度发布期间,不挂载灰度服务器。由于用户在灰度服务器上的任何操作均为正式业务操作,需要将灰度服务器连接至数据库服务器。
2.1.2 软件方案
为了将灰度发布面向的用户群体控制在指定范围内,在天津港智慧工作平台的用户体系内创建灰度发布群组。灰度发布群组内的用户通过正式登录地址登录系统,系统通过登录接口判断用户为灰度用户后,自动跳转至灰度服务器所在的地址,从而在用户无感知的情况下实现灰度发布。
标识灰度服务器和所有负载均衡服务器,并使标识与服务器的互联网协议地址一一对应。用户通过负载地址登录至指定服务器后,系统需要作出以下判断:一是获取用户信息,判断用户是否为灰度用户;二是获取本机服务器标识,判断是否跳转至相应的服务器。此时存在以下两种情况。
(1)系统判断当前用户为灰度用户,继续获取当前用户登录的服务器标识,并根据服务器标识判断是否跳转至相应的服务器:若登录的服务器标识为灰度服务器,则不作处理;若登录的服务器标识为非灰度服务器,则通过单点登录方式跳转至标识为灰度服务器的服务器。
(2)系统判断当前用户为非灰度用户,继续获取当前用户登录的服务器标识,并根据服务器标识判断是否跳转至相应的服务器:若登录的服务器标识为非灰度服务器,则不作处理;若登录的服务器标识为灰度服务器,则通过随机算法生成标识,并与负载均衡架构下的非灰度服务器标识相匹配,然后通过单点登录方式跳转至匹配标识所对应的非灰度服务器,从而确保登录至灰度服务器的非灰度用户能够随机分配至正式服务器,避免因非灰度用户集中跳转至单台正式服务器而导致服务器压力激增的情况。
2.2 移动端负载均衡方案
移动端服务系统架构由移动端应用软件和移动端HTML5组成,在系统升级或功能上线时需要考虑两种情况;因此,与计算机端负载均衡方案相比,移动端负载均衡方案更为复杂。
2.2.1 硬件架构
在原有的移动端负载均衡架构的基础上,根据实际业务需求和灰度用户数量,增设单台或多台灰度服务器。灰度服务器提供单独的HTML5接口,并向外部提供移动端应用软件服务和HTML5服务,其中HTML5服务也对移动端负载均衡服务器上部署的应用软件开放。
2.2.2 软件方案
(1)移动端应用软件更新 在移动端应用软件更新场景下,采用客户端版本推送技术,当灰度用户使用移动端应用软件时,向灰度用户推送版本更新提醒。根据应用软件更新的具体情况,内测推送可设定为强制更新或可选更新。移动端应用软件更新涉及应用软件后台服务更新和应用软件客户端更新:在应用软件后台服务更新场景下,将新客户端配置到移动端正式服务器;在应用软件客户端更新场景下,将新客户端配置到移动端灰度服务器。由于客户端更新可能涉及后台服务器接口更新,在软件设计上需要分两步来满足此类更新场景的灰度发布需求:第一步,将客户端配置到移动端灰度服务器;第二步,将客户端配置到移动端正式服务器。
(2)HTML5服务更新 为了满足多应用软件场景下的更新需求,采用HTML5多首页技术,通过设置不同版本的HTML5首页,分别为正式版本和灰度版本提供入口服务:正式版本首页配置所有正式上线的应用软件;灰度版本首页仅配置更新或新上线的应用软件,正式上线的应用软件则配置正式版本入口。灰度用户登录系统后,系统自动加载灰度版本首页;灰度测试完毕后,系统自动加载正式版本首页。该方案能够在用户无感知的情况下完成灰度测试,从而降低灰度版本首页对用户体验造成的负面影响。
3 天津港智慧工作平台灰度发布流程设计
天津港智慧工作平台升级更新涉及计算机端新功能上线、计算机端多功能优化更新、移动端新功能上线、移动端多功能优化更新等多种场景。为了满足不同场景下的系统升级需求,提升系统及其功能迭代升级的平滑性和稳定性,需要针对不同的升级类型和场景设计相应的灰度发布流程。
3.1 计算机端灰度发布流程
计算机端灰度发布通常涉及计算机端新功能上线以及与此相对应的移动端HTML5新功能上线。如果新功能影响的用户数量较少,则将灰度发布范围限定在指定用户范围内;如果新功能影响的用户数量较多或对全体用户都会产生影响,则根据影响程度设计相应的灰度发布阶段。计算机端灰度发布流程如图1所示,具体分为以下两种情况。
(1)仅计算机端上线新功能而不涉及移动端,并且计算机端新功能上线不影响移动端HTML5功能使用。在这种情况下,只须针对新功能设计相应的灰度发布策略,通过灰度测试后,即可正式上线新功能。
(2)计算机端新功能与移动端相关功能同步上线,或计算机端新功能上线影响移动端HTML5功能使用。在这种情况下,需要将计算机端待更新内容和移动端待更新內容分别发布至计算机端灰度服务器和移动端灰度服务器,并使移动端灰度服务器与计算机端灰度服务器对接,从而确保功能升级对非灰度用户隔离,并实现计算机端与移动端灰度用户范围一致。此类型升级需要增加放量次数,以降低问题暴露在更多用户面前的概率。
3.2 移动端灰度发布流程
移动端灰度发布流程如图2所示,具体分为以下两种情况。
(1)移动端应用软件更新 移动端应用软件更新采用向灰度用户推送版本更新提醒的方式,根据应用软件更新的必要性及其对用户的影响,可设定为强制更新或非强制更新。在移动端应用软件的灰度发布流程中,需要确定是否涉及后台服务器接口更新:如果不涉及后台服务器接口更新,则只要选定灰度测试范围,并根据应用软件更新的影响范围,将版本更新提醒分阶段放量推送至灰度用户即可;如果涉及后台服务器接口更新,则需要先将待更新的应用软件配置到灰度服务器,并在完成灰度测试后再次封装应用软件,将客户端指向正式服务。
(2)移动端HTML5服务更新 移动端HTML5服务更新采用HTML5多首页技术,为不同的用户群体提供不同版本的HTML5首页:灰度版本首页面向灰度用户,配置待更新的应用软件;正式版本首页面向非灰度用户,配置无须更新的应用软件。这种灰度发布方式能够应对港口生产中的大部分场景,并能降低对灰度用户日常使用系统功能的负面影响。
3 天津港智慧工作平台灰度发布范围管理及过程管理
3.1 灰度发布范围管理
灰度发布范围通常指灰度用户范围,其选择与上线功能涉及的用户群体及上线功能对系统整体的影响等因素有关。
(1)对于面向全体用户的通用功能,可采用分阶段逐步扩大灰度发布范围和随机选择灰度发布范围两种模式:前者的优点是便于控制影响范围和收集用户反馈;后者的优点是能够从统计学的角度实现有效覆盖,避免因灰度发布范围选择不当而导致结果偏差。
(2)对于面向部分用户的特定功能,可采用在使用此功能的用户范围内随机选择灰度发布范围的模式。需要注意的是:在这种情况下,有必要将不使用此功能的用户也列入灰度发布范围,以便测试新功能上线对原有功能的影响。
3.2 灰度发布过程管理
(1)服务器监控 在灰度测试过程中,需要加强对内存使用率、硬盘占用率、线程数量等服务器关键运行参数的实时监控,以便及时发现问题并解决问题。
(2)日志分析 日志分析有助于在用户反馈问题时准确、高效地定位问题点。在灰度测试期间,可以调低灰度服务器的日志级别,以便获取更多的运行期信息。灰度测试完毕后,需要对日志进行全面分析,形成灰度测试日志分析结论。
(3)回滚策略 科学有效的回滚策略有助于降低灰度发布过程中异常问题对用户的影响。在灰度发布过程中,如果异常问题影响用户正常使用系统功能并且无法立即修复,可以采取以下两种处理方式:一种处理方式是根据实际发布内容和异常问题的实际影响选择性回滚;另一种处理方式是取消灰度用户,将灰度用户指向正式服务,适用于计算机端灰度测试和移动端HTML5灰度测试。
4 结束语
灰度发布的目的在于使用户参与功能上线前的测试过程,并在功能上线前根据用户反馈完成优化和改进,从而避免功能上线后出现与用户需求不匹配的情况,进而降低补丁升级频率和系统运维压力。实践证明,天津港智慧工作平台灰度发布系统和流程能够有效降低信息系统迭代更新过程中可能出现的风险,提升功能上线的平滑性和稳定性,为港口全天候连续生产作业提供有力支撑。
(编辑:张敏 收稿日期:2020-11-13)