最近在公司偷偷启动了一个Rust项目,不过在两周之后这个项目被我忍痛喊停。此文简单记录一下喊停的原因及心路历程。

rust-social-wide.jpg

Rust项目的启动

人生有两出悲剧。一是万念俱灰,另一是踌躇满志。——萧伯纳

出于对酷炫技术的推崇,以及对团队开发能力的自信,在跟小伙伴讨论之后果断开启一个Rust项目,实现基于Websocket的实时聊天功能。来取代原来Rails的ActionCable实现,一方面想着用高性能语言来编写聊天室有一定的性能保证,另一方面可以把聊天室的功能迁移到另一台服务器中去借此降低原服务器的负载。理想很丰满现实却有点骨感,因为我的踌躇满志,差点酿成悲剧。

原本预计一周能够有个Demo,两周项目上线直接用于生产,然而我低估了Rust生态的严峻。我们一位很有经验的开发,在Rust的深坑中探索了两周之后还是在纠缠脚手架,第三方包的兼容问题。确实没有像Ruby On Rails那样已经集成了许多Web相关工具的开发框架。Rust在Web领域其实集成度并没那么高,再加上,我们是新手入坑,无论语法还是脚手架都需要一番折腾,导致两周过后一点成品都没有,直觉告诉我该止损了。

Rust项目的喊停

一开始我们想上这个项目,无非就是为了降低服务器的负载,给予用户更好的聊天交互体验。五一期间也多次思考过这个事情,这样下去到底对不对。最终核算了一下成本还是决定跟小伙伴说声对不起,辛苦调研了两个月的东西,得喊停了。

假设小伙伴的月工资是2w元,在深坑里面探索了两周却没有成品,相当于两周时间基本没有什么效益,那么成本大概就是1w块钱。还要考虑后面新项目的学习成本,维护成本,并且要另外买机器来跑这个服务,未来的成本可能远不止1w块钱。这些钱如果直接用来升级服务器,那估计能提升一个档次。在升级后的服务器上跑现有的服务,聊天各方面的体验铁定能提升不少。比起一头栽进新技术,并一条路走到黑或许这种简单粗暴的做法更正确一些,起码,前期成本会更低。

展望

回流后面会不会用高性能语言来编写服务?我相信会的。不过现在确实不是时候,首先我们的知识储备就没到位,现在一头栽进去性价比太低了。更重要的是小伙伴一个人在那苦苦调研,还会错失跟其他同事合作沟通的机会,着实是一次糟糕的安排。