“一码通可以每分钟服务120万市民扫码,帮助各行各业快速复工,保障市民群众健康出行”
来源:@2021年2月18日,西安市大数据资源管理局官方微信公众号“西安大数据”
12月20日,星期一,早高峰。
这一天,西安市民出行,必须出示48小时核酸阴性证明,西安“一码通”破天荒的,崩溃了。
这一崩溃就是一天,很多市民第二天还打不开。哪儿去不了,啥也干不了。
负责“一码通”系统的西安市大数据局长刘军公开回应,“建议广大市民非必要不展码、亮码”,公众一片哗然。
2022年1月4日,“一码通”再次崩溃。
网上信息显示,当天开始最新一轮全面核酸检测,北京来督导防控的国 务 院领导同志在现场亲眼目睹了“一码通”系统的第二次崩溃。
1月5日凌晨,西安市委组织部发布消息,西安市大数据资源管理局局长刘军因履职不力,停职检查。西咸集团副总经理、秦创原创促中心主任刘鑫接任局长。
半个月,一崩再崩。
西安“一码通”到底怎么了?
“一码通”前世今生
“一码通”的学名是健康码。
健康码其实最早来自阿里的企业员工码。由阿里旗下的钉钉开发的,用于员工上下班考勤打卡和日常工作管理。
2020年初,因为防疫需要和推进经济重启,杭州市政府决定与钉钉、支付宝等企业合作开发杭州健康码。
2021年2 月 9 日,健康码在杭州余杭区率先推出,之后在杭州全市推广,在浙江 11 地市全部上线。对市民和来杭人员实行“红黄绿”三色动态管理。上线首日访问量即达到1000万。
一个月后的3 月 4 日,由阿里云支持的“健康码”已在全国 24 省 200 多座城市落地。
杭州市数据资源管理局局长郑荣新曾对外表示:“杭州健康码就是企业员工健康码的简化版。”
2020年2月下旬,在国务院办公厅电子政务办下属的全国一体化政务服务平台联合支付宝、阿里云等企业,全国一体化政务服务平台疫情防控健康码系统正式上线。
而在南方的深圳,腾讯健康码也于同一天上线。
当年3月10 日,腾讯表示其健康码累计亮码超过 16 亿人次,累计访问量破 60 亿。
背后是各地省政府和各地大数据管理局的参与和认可,在短短不到一个月,健康码便已经跑遍大江南北。
健康码系统说简单也简单。
简单来说,健康码就是一个基于个人位置和位移(位置变化)信息的管理信息系统(MIS)。
这是比较简单的系统,因为就只有位置这个唯一变量,外加一个区域信息分类,根据个人所在的区域防疫等级进行区分,从而得出不同颜色定性。
以支付宝为例,支付宝默认了个人姓名、身份证号码、手机号码等信息。
最早的版本需要用户自主提交当前城市、是否接触过新冠或疑似患者、当前健康状况等信息,信息提交完毕,就可以领取得一张属于自己的“健康码”。后期后台将这些数据都改为自动获取了,打开支付宝点击健康码,系统就可以自动生成不同颜色的二维码。
说复杂,主要是健康码的信息来源和处理规则。
健康码的数据可能来自比如当地的防疫管理局、公安局、卫健委等,他们都有自己的数据输入和数据系统。
健康码都是由各地政府来主导,基于各地大数据中心,以及用户自己申报,进而用政府制定的算法、规则来运行。
各地健康码的技术开发、数据库基本一致,但在实际推广落地过程中,各省份疫情管控情况不一,因地制宜,使得健康码“百码齐放”,给全国健康码的互通互认增加了难题。
有网友在一个省份是绿色,在另外一个省市就被判定为黄色甚至红色,无所适从。
西安的问题出在哪
西安一码通系统是由西安市大数据管理局为业主单位筹建,单一来源总包商为中国电信西安分公司。应用部署在西安市“政务云”平台上。
西安市大数据资源管理局作为西安市政府的信息化主管部门,主要承担疫情防控工作信息化保障任务。除了西安“一码通”平台,还负责市核酸检测系统、市疫苗接种系统等全市疫情防控信息化项目。
西安电信将工程逐一分包出去,基本都是单一来源采购:
一码通系统建设单一来源:西安东软
一码通安全配套单一来源:杭州安恒
可视化工程单一来源:中译语通
短信服务单一来源:阿里云
一码通引擎单一来源:美琳数据
不搞工程的朋友可能不知道。单一来源采购也称直接采购,是指采购人向唯一供应商进行采购的方式。符合限购和金额标准,一般是来源渠道单一、扩建受到原有项目限制,或不可预见的紧急情况。该采购方式的最主要特点是没有竞争性。
2020年1-2月是疫情最吃紧的时期,采取单一来源采购也可以理解。虽然紧急,但是从业内专业人士估算角度,上述系统的预算最起码在300万以上,甚至肯可能接近千万级别。考虑到主要是租用云服务和软件开发,对于这样一个系统,预算还是相对比较充分的。
但是近两年时间过去了,“一码通”系统在不到半个月时间就崩溃了两次,这就有点说不过去了。
据《财新》杂志1月4日援引专业人士的说法,访问崩溃原因一般有三类:
带宽问题;
代码处理逻辑;
程序设计问题。
如果是带宽问题,在云计算平台上,通过“限流”和“扩容”都是非常容易解决的。甚至夸张一点说,点几下鼠标,动一动键盘,很快可能就搞定了。不至于花了大半天还没搞定。
西安常住人口是1300万,假定日常流量是200万,但是系统理想或者极限设计值应该可以支持1300万人在线。当然为了节省成本,实际设计时可能会折中成比如400万人。
至于代码处理逻辑问题。西安一码通上线两年了,大部分时间还是很稳定的。再说,这个健康码的逻辑,并不复杂,就是利用移动、电信等运营商的基站漂移数据来定位手机用户,然后用区域疫情等级信息来分类并标记,以不同颜色的二维码来呈现。这种可能性不大。
那么是否是程序问题,第一次系统奔溃后,“一码通”团队对程序进行了“回滚”。从处理方式看,得到了佐证。
回滚(Rollback)是软件专业术语。指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型。
10月底的时候二维码就有了边框注明疫苗接种状态,比如下面这个是金黄色的,标明完成了第二针接种。
12月20日下午系统恢复以后边框消失了。变成了几个月前的样式。
此外,“一码通”等平台与西安市政务一体化在线平台“i西安”融合,还增加了核酸检测结果查询、疫苗接种信息查询及提醒、来返西安人员防疫信息录入、国内高中风险地区查询等功能。
功能过多,每次打开都是多个并发进程。这可能也是程序崩溃的原因之一。
左图为上海“随申码”小程序打开界面。右图为西安“一码通”打开界面。前者只有一个健康码二维码,而“一码通”会显示8个+6一个14个二次查询链接,两个专区服务,以及一个资讯头条界面。
这些信息,整整两屏,内容是一次性取出的。任何一个API接口出现问题,整个这个页面都会卡住。在每次用户点击时都会被访问到,对服务器带来额外负担,也增大网络流量,值此非常时期,完全可以精简掉。
而在这之前,查询健康码时,系统会同时将核酸检测和疫苗接种情况也显示出来,也就是说一次查询有三个查询进程并行。
IT专业人士石哥在《事不过三,要向模范生学习-西安一码通技术分析及几点优化建议》一文中对此有很详细的分析。涉及到主页面UI设计、CDN服务、Redis集群、仿真压测(基本上看不懂)。我找专业人士用大白话翻译了一下,大概是这样:
打个通俗的比方,就比方你去饭馆吃饭。
西安“一码通”,本来也不是大饭馆,菜单上非要整二十几个菜式,半天菜上不来,结果到后厨一看,就一个厨师。而上海、北京饭馆,家大业大,本来后台就有五六个厨师妥妥的,但是保险起见,谁来也只供应一个菜。
更要命的是,西安饭馆平时人坐不满,这一天乌泱泱来了一屋子顾客,门口还排着长队,服务员崩溃是必然的啊。
关于1月4日第二次崩溃,官方的解释,依然是流量过大。
“西安一码通”热线工作人员表示,如果一码通出现问题,可以先删除该小程序,然后再微信清理后台缓存,最后再重新关注登录就可以了。
12月30-31日,工信部总工程师韩夏到陕西调研。要求防止出现网络安全事故,出现问题要及时响应,快速修复;要持续做好大数据和信息化支撑,西安“一码通”要加强技术改进和网络扩容,确保平台安全稳定运行。韩夏还来到西安“一码通”工作专班,了解核酸采样系统应急处置措施,要求系统再优化,细节再完善,确保不出现拥塞宕机现象。
其实看到这里。“一码通”崩溃原因已经比较清晰了。 当然最终以官方刘前局长本人的停职检查为准,如果我们看得到的话。
不仅仅是“一码通”,也不仅仅是西安
从公开履历看,被免职的大数据局长是是一名“80”后,山东菏泽人。毕业于西安本地的双一流大学全日制本科。
大数据管理局的官网信息显示,刘军领导大数据局全面工作,分管数据标准与应用处、数据资源处、市12345市民热线管理办公室和“一码通”工作专班,联系西安大数据资产经营有限责任公司。
虽然不是计算机科班出身,但工作履历很完整,机关、基层都呆过,还担任过副局级的西安市委督查室主任,疫情当前,又是疫情防控核心业务部门的一把手,对于一把手疫情防控责任应该是很清醒的。
2020年实施“一码通”项目的时候,刘军担任大数据局主要领导已经近一年,又是亲自负责分管“一码通”工作专班。
从这个角度来说,刘军一点也不冤。
“一码通”的崩溃,折射出的是西安城市管理的粗放。
比如,有西安本地知情人士透露,表面上看,西安走到哪里都要扫码登记,实际上数据的可利用性不够,系统设计里没有统一的报送和汇总,还是靠人工操作为主。
再比如,各个区县,不同部门之间很多数据没打通。有确诊者的密接按理应该去隔离,但是迟迟没收到通知,直到确诊,网上著名的“求隔离而不得全家6人确诊”案例就是很明显的佐证。
还有单位通知居家,到社区测核酸,社区却称没有街道通知,最后不了了之。
张文宏医生有一个比方,防疫就比如瓷器店抓老鼠。诚哉斯言,西安这次对这句话应该会有更深的体会把。
但是问题不仅仅如此。
其实全国各地都曾出现过健康码系统崩溃的问题,据知情人士透露,被认为是防疫模范生的上海,也不是天生就如此优秀的,上海的“随申码”为例,最早由市大数据中心自主开发也不完善,后面由阿里、腾讯接手后才趋于稳定。
那么,从这个角度来说,如何建设类似健康码这样的公共系统,应该采取单一来源,还是公开招投标择优;是让垄断了通讯和流量资源的央企来独揽还是敞开让各种类型企业都公平参与竞争,靠业绩和能力说话,这是第一个问题。
同时,健康码系统中各个部门如公安、疾控、卫健、大数据之间如何真正打通,实现政府内部真正的“一码通”?这是第二个问题。
第三个问题,为什么各个省市之间采用的是各自的数据和规则,“不少省内还有各自的健康码,百码齐放”,在A省绿码,刚到隔壁B市变成黄码;莫名其妙就红码了的事也不少见。能不能开发全国通用的健康码,实现真正的全国的“一码”通?
这些问题,可能让我们不止步于问责西安“一码通”,我们也许可以“一码通”的两次密集崩溃中吸取更深刻教训。
因为,不仅仅是西安的这一码不通。