干开发的,谁没被“技术焦虑”按在地上摩擦过?不追新框架,不行。不把架构往上堆,更不行。好像慢一步,就彻底掉队了。上周审了个内部数据看板。几十号人用的报表。你猜怎么着?微服务,消息队列,全给整上去了。好家伙。逻辑拆得那叫一个碎。交付?延期了。维护成本?直线上升。这破事儿,办公室里天天上演。可你细琢磨。就咱们这点业务量,真能托住这么重的架子吗?折腾半天,全是虚火。
张洪举那本《Visual FoxPro软件开发模式与应用案例》,把架构从单用户往多层Web演进的路子,掰开揉碎了讲。他掏心窝子就一句实话:架构能活多久,不看技术栈堆多高。看什么?看跟业务规模咬合得准不准。非追高大上?不如老实点。技术这玩意儿,真像买鞋。码数对,才舒服。非要硬挤进45码的限量版。走两步。起泡。
道理其实特直白。架构,骨子里就是收拾复杂度的。单用户模式。直接啃本地文件。跑得快,部署轻省。多用户共享数据库呢?并发锁,事务,头疼。C/S架构。逻辑和数据硬生生拆开。再往上,多层架构。前端、业务、数据层,全拆散。每爬高一阶。成本、运维、团队认知,全得跟着跳坑。拿个实在的例子。小团队,单机版就能跑的报表。非塞分布式服务进去。结果呢?脚手架把人压得喘不过气。业务?原地踏步。我见多了这种反着来的项目。代码量翻五倍。线上bug多三倍。纯纯给自己挖坑填土。
书里把单用户、多用户共享、C/S到Web多层模式摞在一块儿。真不是为了喊“越往后越牛”。人家拿实战案例拍桌子。提醒啥?VFP做单机数据,上手就能玩。业务一扩到局域网。记录锁机制,立马得跟上。数据量撑破单机天花板。转C/S。网络通信逻辑,推倒重来。作者没捧谁。全扔在具体场景里掂量。那些“过度设计”的坑,明晃晃摆在那儿。开头盲目抄Web多层。基础连接管理都没捋顺。稳定性?不如一个扎实的单用户程序。不信?有时候最土的单用户程序,反倒比花里胡哨的多层架构更抗造。代码跑得通。才是硬道理。
这种选型错位,敲代码时太常见了。怕贴“技术落后”的标签。好。就往项目里塞复杂框架。忘了交付是干嘛的?解决问题。不是搞架构展览。好比普通人搬家。租个小公寓。非要定制全屋智能中控。最后呢?连电源插座在哪儿都摸不清。工具多复杂,场景就得有多复杂。这账,得算清。这毛病,与其说是技术不行。不如说是人太爱面子。非用复杂度证明价值。结果?搬起石头,砸自己的脚。
讲究匹配?可不是让你原地踏步。业务真狂飙。用户量从百级窜到万级。单用户或共享数据库的并发瓶颈,立马露馅。这时候还抱“能跑就行”的侥幸心理。不肯动。系统早晚得崩。架构该不该升级?临界点藏在哪儿?数据量曲线。团队人力的边际成本。作者拿多层Web服务举例,指的就是那个“非改不可”的节点。话又说回来。临界点不是死数字。业务万年不涨。硬拆微服务?找罪受。并发卡脖子?不拆也得拆。
不过,书里讲“怎么判断升级时机”,有点绕。模式清单列得清清爽爽。量化决策模型?没给。这戳中技术书的老毛病了。架构选择,终究是经验和直觉的博弈。套公式?没用。作者没给公式。反倒更诚实。现实里呢?有些团队,业务还没起飞,急着拆架构。前期投入产出比,低得吓人。另一些团队,死守单体。线上事故连环爆,才仓促重构。两种极端,摆在那儿。技术选型,从来不是非黑即白的单选题。多半是走一步,看一步。试错。
回头再看张洪举的笔法。挨个罗列开发模式。其实是在划界限。靠谱的开发者,懂得在简单和复杂之间踩刹车。清楚什么时候用ActiveX控件快速补齐功能。什么时候老老实实敲本地循环。技术大方向,总是往上走。开发者的脚,得往下扎。一眼看穿业务规模和系统复杂度的匹配关系。那些让你焦虑的架构名词。就剩工具箱里几件趁手的家伙什。下次碰到技术选型。先拍拍大腿问一句:咱们现在的业务,真需要这么重的架子吗?理儿就这么个理儿。别把简单问题,复杂化就行。