[讣告]祭 nodejs 在我厂遭全面封杀

2016-10-19 20:56:41 +08:00
 p412726700

今日惊闻一个噩耗,目前现有的 nodejs 项目全部下掉,通通用 java 重构。

笔者 13 年初尝 nodejs ,觉得此货骨骼清奇他日必将大有作为,它以 javascript 作为语言基础,解决了 web 开发前后端中语言层面的转换,为想成为全栈开发者的人员提供了一条极佳的可选道路。并且得益于 javascript 天生异步的模式,在解决某些高并发场景下优势异常明显。同时前后端都以 json 作为数据传输形式,减少了很多类型转换的麻烦。 nodejs 的出现能让 javascript 运行服务端,至此 pc 、移动端、服务端,三端都能用 javascript 了,开心。鉴于以上几点,笔者决议投身 javascript 开发的浪潮中。

一开始 javascript 基础尚且薄弱,就做了一年多的纯前端,从事前端三驾马车 html 、 css 、 javascript ,由于在做纯前端之前做了小半年游戏服务端( nodejs 实现),也从未放弃对 node 的研究关注,试想有朝一日能寻觅一个全栈 javascript 开发的岗位,果然,随着前端的大火、 nodejs 的崛起,又过了 10 个月,笔者终于找到了这个梦寐以求的岗位,然而,这才刚刚开始。

初到厂里,车间主任 A 说,能不能让 nodejs 和 java 的 rpc 框架 dubbo 打通,笔者当时一脸懵逼,这要怎么搞,经过老大 A 的指点以及查找相关资料,阅读相关源码,和同事探讨,我们终于搞出来了,当时要说喜极而泣的话,一点都不夸张。因为当时已有的 nodejs 和 dubbo 通信全是走的 json 模型,但我厂既有服务都是 dubbo 的默认用法( dubbo 协议+hessian 序列化),所以为了极大的减少成本,我们这边就做了这么一个库,没想到,反响还可以,月最高下载量能破 4k ,这其中也不乏有大厂在用,这样的成绩,至少能让笔者买个鸡腿犒劳下自己了,后面就用这个作为底层,承载我们后台海量的业务需求,顺便说一下后台的前端也是我这边来负责,架构上就是前端->nodejs->java ,我负责前端+nodejs 这一块,有点类似淘宝的中途岛计划,可以想象,在此期间经历了很多坑,很多意想不到的问题,诚然,感兴趣的话即使刀山火海会迎难而上。

其中问题多种多样,不仅代码上,还有其它的一些,比如说 nodejs 的发布流程,私服的搭建、服务器预配置的 nodejs 版本、编译部署规则等等等等,这些我们都在同运维部门协商,我们全力协助他们搭建,路漫漫其修远兮,经过半年多的磨合、催促,终于私服的搭建在前几天初具规模了。

然而,在此之前,大概两个月前我们部门空降了个新的车间主任 B ,之前的老大 A ,被调往其它部门,老大 B 花了些时间研究了下我们整个大组的所有项目,得知我们有 nodejs 项目掺杂在其中,也没说什么。可就在前几天 nodejs 私服搭建好,运维某个领导来询问一些 nodejs 事项,他说,我们 nodejs 项目要下了,因为就几个人懂,没法做,期间讨论了一会儿,最终结论就是把 nodejs 下了,运维领导很开心,第二天前老大 A 也被告知,他所负责的另外一个 nodejs 项目全部用 java 重构,没商量!

到这,可以说在我厂 nodejs 作为后端的存在遭全面封杀,今天斗胆分析一下缘由,在我厂主体是 java , 95%,一开始 nodejs 只是小打小闹,做一些边边角角的工作,后来由于打通了 dubbo 能做的事太多了,可能几乎所有直接对接 web 、移动端的都可以接了,这种类型的项目在我厂占的比例还是很大的,这么多事情能用 nodejs 做, java 不开心了,你 nodejs 要干嘛,造反么?没人懂、没人会、没资源,运维同学也很忙,既有的所有 nodejs 项目统统给我下了。可能这就是原因吧。

nodejs 在我厂道阻且长,经历了重重困难,落得一个这样结局,也罢。君要臣死、臣不得不死。

36854 次点击
所在节点    程序员
161 条回复
js0816
2016-10-20 20:09:12 +08:00
@menc node 生态圈还不健全啊 2016 了大胸弟
Lpl
2016-10-20 20:14:54 +08:00
@zohan 很多抱着“没见过猪跑,好歹也吃过猪肉”的态度来评价的,哈哈哈。更多的是关注到底是哪个厂
fuxpro
2016-10-20 20:31:06 +08:00
@kongkongyzt 其实我想说的是身为员工, 很多时候是没有选择的空间的,就算你是对的,也没有人会理解你的想法。这个时候我们要做的就是看开一些,挣钱才是正道,才是目的
yxjxx
2016-10-20 21:58:35 +08:00
🍄街?
kongkongyzt
2016-10-20 22:10:44 +08:00
@ayanamist 额, 那阿里现在用什么来代替 dubbo?
julyclyde
2016-10-20 22:31:49 +08:00
对于小众语言在生产环境的封杀,我是赞同的

不过说实话 node ,从人数上讲,并不算小众了;只是本身并不适合做大规模开发而已。目前还只是玩具,不是生产工具
chenjf2k
2016-10-20 22:53:35 +08:00
碰到这上级够倒霉的,估计创新力、个人魅力好不到哪去。

楼主不要放弃。。。
itoolset
2016-10-20 23:11:14 +08:00
其实你可以曲线救国,选择 vert.x
se77en
2016-10-21 10:31:35 +08:00
啥也不说了,发图吧。
JacksonTian
2016-10-21 12:09:13 +08:00
发简历给我呀。 puling.tyq@alibaba-inc.com
JacksonTian
2016-10-21 12:13:59 +08:00
@florcava 杭州是生产模块数量最多的几个城市之一。
jinwyp
2016-10-21 12:18:49 +08:00
我只能说 如果用 java 的 spring boot 不如用 PHP , 用 PHP 不如用 NODEJS

为什么?
1 spring boot 虽然简化了很多配置,但实际上就对 restful 服务上比 php 和 nodejs 差太多, 从路由,控制器,错误处理,中间件(没有), 表单验证,字段验证, json 处理转对象差太多了。 尤其是 json 转类, 在 PHP 中非常容易,在 nodejs 根本不需要这步, json 就是 js 语言内置的

2 为什么 PHP 不如 nodejs ?

因为前端你没有办法抛弃 js , 无论你后端用什么语言,前端必须要用 js ,从而必须要用 nodejs 做一些前端的打包工作。 就是说你的技术栈里必须要用 nodejs 无法抛弃。 那么为了节省成本,如果前后端用一种语言,从开发,部署,运维上省了多少事情。 从代码上将,字段验证,可以前后端使用同一个库,代码完全不需要写两遍。 还有前端页面模版只有 nodejs 实现, 没有 PHP 和 java 实现, 无法做同构。

3 性能, nodejs 目前看来是脚本最快的, 目前在 Go 是静态语言最快的,未来 nodejs 和 go 完全可以解决性能问题。 java spring boot 性能 真的很慢。 PHP7 也不是一个量级的。 Go 如果是 100 , nodejs 能有 50 , PHP 只有 15 左右。



总结 ,当综合选择一种技术,应该尽量从客观条件来选择, 就是 性能和开发效率。
性能决定了在创业初期和后期不需要换架构。 例如 facebook twitter , PHP 性能不行了, Ruby 性能不了。 必须要换
开发效率决定了 招聘人员的成本,维护的成本。 换成 java 只有一个条件就是大数据方向不过也是 scala 了,目前 Go 做 API 已经完胜 JAVA

包括楼主的领导很多考虑技术是从主观条件,就是说我只会 JAVA ,那么我就选 JAVA 。 这种思想反而是影响团队的,到时候肯定会出现一大堆 java 遇到的问题。

最后说语言是死的,人是活的, 选择语言是为了更好的工作, 不会就要去学。 否则大家都用 C 语言开发算了。
jinwyp
2016-10-21 12:21:13 +08:00
顺手看了一下手头双 11 核心系统代码, 457 个包依赖,全部自动升级,至今 0 故障 //@逗 B 码农死小马: 回复 @jerry 蛋蛋哥:梦想还是要有的,我在阿里 /蚂蚁金服做了 5 年 node 开发,没有用过 shrinkwrap ,按照阿里的体量和 node 应用的范围,国内很难找到其他公司 node 的使用规模能够比得上吧?去试试

http://weibo.com/1751144103/EcMGoxuSW?from=page_1005051751144103_profile&wvr=6&mod=weibotime&type=comment
arkia123
2016-10-21 14:13:17 +08:00
用 typescript 写 nodejs ,那些 java 程序员就能看懂了。
语言不是障碍!!!只是国内跟国外比落后太多(编程思想)
国外公司不存在前端和后端,只是 developer 。开发完全靠喜好,能更好的解决问题就行了
yourlin
2016-10-21 14:49:24 +08:00
喜闻乐见~
从你们厂的应用上看用 java 确实可以降低工程成本
inherited
2016-10-21 15:17:40 +08:00
@jinwyp Java 不止有 Spring boot 啊,只需要 restful 服务为什么不用 Play Framework 和 Akka http ,性能好开发效率也不低. 个人感觉回调不太适合作为异步编程的抽象方式,有点过于底层了。 Coroutine 和 Actor 都比直接用回调要好
jinwyp
2016-10-21 22:50:38 +08:00
@inherited play 很好 可是你用 java 开发就没意思了,用 play 肯定是 scala 最好用啊
7timesonenight
2016-10-22 02:09:50 +08:00
喜闻乐见~
国内公司特点,一方面实际事实上团队保守(怕担责、喜甩锅),用人成本花费吝啬;另一方面面子上喜欢装 B 高喊拥抱新技术。
最后的结果就是流产。
jack80342
2017-10-29 17:49:10 +08:00
最近翻译了最新的 Spring boot 官方指南,欢迎 fork。https://www.gitbook.com/book/jack80342/spring-boot/details
shihty5
2018-05-03 14:19:33 +08:00
挖坟,今天大家对 Node 还是 JAVA 怎么看。 小而美的创业公司是否可以从 Node 直接开始

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/313968

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX