最近,一个做运维的朋友准备为公司客户部署一套物流跟踪3D WebGIS应用,遇到了问题。我作为请来的臭皮匠之一,因为帮忙看了几个数据库、GIS的问题,顺带基本了解了全部过程,其中有些过程值得记录,和大家分享。
好的开始
乙方准备重构的这套系统,原本是很成熟的,只是很老旧了。据说,做系统的公司已经关门,系统用VB/SQL2000做的开发,地图用的是分辨率很低的示意图。
本着一步到位的思路,朋友的公司(乙方)几个大拿一商量,直接抛弃本地桌面,上 D3,顺便用三维地球地图cesiumJS做展示。由于缺少足够的前端工程人员,自己干后台+外包前端,很快就做出了demo,效果很棒。
满意的DEMO
乙方产品经理拿着DEMO,在会议室里向客户详细演示了新产品。甲方总体满意,甲方公司的运维在感叹由D3、WebGL带来的震撼效果的同时,对不用再给每台重装的计算机配置ODBC数据源非常高兴。
在这个环节,出现了一个大的问题。由于演示过于顺利、购买的服务器没有到位,以及其他一些诸如人手不够等非技术因素,散会后没有把DEMO程序部署到甲方前台小妹的计算机中试用。
紧张的1个月
随后的1个月中,乙方在自己的环境中,不断改进完善流程、测试功能,白加黑,五加一。我也在这个阶段第一次接触到这个单子,当然只是帮忙写了Postgresql的触发器。在经过一些短暂的回滚、改进后,最终测试非常顺利,可以部署试用了。
在这个阶段,出现了一个有先见之明的运维。甲方一运维打电话,询问新客户端对计算机配置的要求。称他们的计算机比较商用,基本是2G内存256G硬盘的普通电脑。然而,接电话的小伙子是做后台的,没有充分注意这个问题,可能是他的计算机打开网页,秒开,觉得不耗资源的缘故吧!
糟糕的试用
当乙方的攻城狮带着大小行头,进厂安装部署时,都觉得一天就能解决问题。但实际情况很不顺利。
首先是小妹的计算机上,一些网页布局不正常,表格显示混乱,一些页面直接报脚本错误。攻城狮看了一下配置,竟然还是XP+旧版IE。果断替换浏览器为旧版chrome(最新的早就不支持XP了),首先解决了布局问题。
但是好景不长,几个亮点功能不正常。甲方的经理们最在乎的图表展示、每月单据统计、车辆迟到、准点率、油耗等,不是显示不出来,就是绘图有问题。折腾了半天,觉得还是浏览器版本过低导致。为了不影响现有工作,找了一台相同配置的备用机,果断替换为win7 + chrome,基本解决了问题。
最后,出现了大的兼容性问题。所有设计为cesium地图显示的页面,浏览器全部卡顿,CPU100%。F12打开调试页面,也不报错。3D显示的柱状图等效果很卡顿,基本没法用。折腾到中午,还是搞不定,地图只有黑色的背景。一群人扫兴的吃饭去了。
吃完饭回来,发现地图竟然终于显示出来了。高兴之余,一拖动,完了,帧率基本为0,鼠标拖动一次,就要等待好久。打电话给外包公司(前端+地图开发),称必须要独立显卡,才能顺畅浏览。我的个去,我想乙方的攻城狮此时心中肯定是万马奔腾——为什么现在才说?
其实,经理心中更是万马奔腾——早知道就不给你们这些人配这么好的电脑了,这样上班时也能少玩游戏,这个问题也不会到了甲方进厂才发现。
亡羊补牢,为时不晚?
由于甲方无法在不中断业务的情况下,对现有计算机全部重做系统,更不愿要求各个分部门全部再为了这套系统购买安装显卡,只能逼着乙方解决问题。
对XP兼容性的问题,乙方通过API降级等方法,基本解决了。地图,还是不要3D,直接使用某知名地图(2D)吧。前后又花了1个月时间,当然之前外包cesiumjs 3D地图的页面就算白花钱了,此外投入了大量人力。
由于这个事情破坏了节奏,第二次试用,很多本不存在的BUG冒了出来,结果又有了第三个月的返工。由于没有按期交付,按照合同是要惩罚的,但是由于一些因素,就不了了之了,当然尾款也不了了之。
结局不是很差,甲方的印象彻底完了。甲方不是很懂技术,不能理解,花了这么多钱,为什么连一个网页都做不好?是不是态度有问题,或者公司能力不够。
后话-技术无罪,现实残酷
经过讨论,问题的关键是作为一家涉足新领域的小公司,在选择实现架构的时候过于激进,接过有限几单太顺利,没有吃过苦头这次长记性了。缺乏经验的经理们单纯从易于开发(嫁接现有产品)、技术先进考虑,缺少对客户运行环境的估计。
但反过来想,追求使用新技术本身没有错误,攻城狮们还是应该得到鼓励和认可,这甲方的电脑也真该换换了。
其实,cesiumJS 本身是一款非常棒的3D Web GIS 客户端框架,基本可以嵌入主流的各类矢量、栅格图层。不但如此,对3D模型的良好支持,使得它可以轻松实现各类复杂的动态场景呈现。
在他的介绍下,我也尝试了一把,觉得这个东西确实棒极了!
现在可以给学生们炫一把3D版本的openstreetmap,当然学校的实验室没有好的计算机+显卡,肯定是打不开的。
作为油腻的中年高校大叔,突然觉得对不起学生们。丁老师现在教的C++语言,即使加上QML,Qt Charts、osgEarth,还是比不上前端技术的发展,教材更是陈旧不堪。可以预见,当以后所有公司都更换了新电脑,在大部分行业,本地编程、桌面应用就要彻底退出舞台了,到时候同学们就要给我当老师了 (-;