CTO 拒绝 golang,坚持 PHP , v 友怎么看

2019-12-29 16:17:30 +08:00
 uxff

背景:

公司原有项目是 php,业务量也不小,每日 100W+订单。

前部门负责人想在公司内部推广 golang,希望用 go+服务化改造业务,而且推荐内部从 php 转岗,还招了几个 golang 工程师带队。

一段时间内公司已经改造和上线了 10 多个服务,结合 codepipeline,k8s,ingress 等已经很接近 devops 了。

但是由于需求变化快,PHP 岗位缺人,大量人力被调去做业务层开发等多种原因,服务化进度其实很慢。

后来部门负责人走了。

新来的 CTO 说 golang 产出慢,golang 招不到人,golang 招人成本高,golang 项目不好维护等理由,突然决定公司停用 golang。坚持用 PHP 开发。对业务优化提供了升级 PHP 版本,使用依赖倒置等设计模型,对于业务服务化设计没给出具体指导方案。

对于升级 PHP 等措施我们是支持的,但是对于拒绝 golang,我们是有些心凉的。

对此 v 友怎么看。

26574 次点击
所在节点    程序员
175 条回复
rapkey
2019-12-30 15:33:13 +08:00
@uxff #8 从这里就可以看出,支持 golang 重构的大都是奔着学习去的。整个技术团队的语言转型,对于公司来说代价是很高的,时间、人力都是成本,相反收益最大的是员工。
visonme
2019-12-30 15:52:24 +08:00
公司不是个人,不敢随便折腾,CTO 的决定没有什么问题,新语言和技术应该用在解决现有语言不能轻易解决的问题上的,目前 PHP 应用开发良好,完全没有这个必要,至于未来业务增长会不会带来新的选择,而作为一名 CTO 相信他是又考量的。

旧系统转新语言 /技术开发,成本其实是蛮高的,公司在做选型时候都是需要考虑进去的。
sweb
2019-12-30 16:04:15 +08:00
你们公司没有订单的时候,经不起你这样折腾,你公司日订单 100 万的时候更加经不起你们这样折腾,go 写服务好是好,但产出跟 php 不是一个级别,对人的要求,工作量全上来了,成本可想而知,这次我站 CTO。go 哪怕再牛逼,可 3 台打 10 台服务器的性能,但开发时间可能不止三倍,人值钱还是机器值钱? 楼主让我想起了当年为了一时爽追新技术的搞了一大堆 node 的项目然后拍拍屁股就走人的那批人,现在那 node 项目都不敢 npm install,只能用别的语言重构....
kkzxak47
2019-12-30 16:18:29 +08:00
CTO 决定是正确的。
wo642436249
2019-12-30 16:57:09 +08:00
让我去做你们的 CTO 吧,我支持你们用 Golang,让大家够浪
nnnToTnnn
2019-12-30 17:09:55 +08:00
@lbyo #117 antd 只是一个设计规范,如果用 vue 肯定是看对面团队的选型。 [捂脸] ,不过目前还是 antd pro 的技术站。

-------------------

我就是一个码农,领导怎么说,我怎么做,最多帮忙把把关 。谈不上架构,这边架构都是找大厂咨询的。。 [捂脸][捂脸][捂脸]
Evilk
2019-12-30 18:49:55 +08:00
这次支持 CTO,可以考虑升级到 PHP7.4,部分高并发业务可用 swoole
不过,说真的,99%的项目都达不到语言的性能瓶颈,换句话说,这个世界上,能达到这个瓶颈的项目,屈指可数
zibber
2019-12-31 11:22:34 +08:00
公司不用新技术,大家学不到东西,干一段时间也一样跑路
firefox12
2019-12-31 13:35:21 +08:00
100*10*1000/8.0/3600
34.72222222222222

100 万订单 放到 8 个小时 qps 也就是 34 , 大 100 呗,现在最弱的 db, 也能支持下来。

这是性能问题吗? 不是。

如果我是 cto, 首先看,原来的架构稳定不稳定,如果不稳定,那是迟早要找出路的, 找什么出路,自己不会 go, 找 go 吗? 还是找 java 吧,成熟 例子多。go 还是差在很多地方,基础框架不如 java 全面,全面监控的方案,全链路监控 有没有。这些都是空白。所以 如果稳 就继续, 或者转 java, go 出局。

其实 cto 应该尝试把项目转到 k8s 上,解决稳定问题。
no1xsyzy
2020-01-03 10:58:03 +08:00
@blless 工程性根本不是问题所在,其他语言的工具能做到的,Racket 也能做到,并且可以做得更好
但是 Racket 用的人还是少
为什么呢?因为 worse is better ?因为自己构造的工具可以迁移到任何平台而无需考虑不同平台行为不一致?
我不能确定。但可以确定的是,一直是:最好用的无人问津,最常用的乏善可陈。
blless
2020-01-03 13:05:59 +08:00
@no1xsyzy 你就说说你说的这个语言工程性好在哪啊,说啥 worse is better ? show me the code 好吧
no1xsyzy
2020-01-03 14:08:24 +08:00
@blless 首先,这和 code 没有任何关系。其次,Racket 的元语言基于 Scheme 语法,语法是如此简单,以致于各类工具都可以做到极为简单。最后,我是把 go 放在偏 “好用而无人问津” 那边的,别的不说,单一个 channel 就秒了 80% 语言了,但相对的,使用量仍然在几个大头剩下的 20% 里争。
blless
2020-01-03 18:54:56 +08:00
@no1xsyzy 首先,我们理解的软件工程不一样。复制一段百科,软件工程过程关注软件过程的定义、实现、评估、测量、管理、变更、改进,以及过程和产品的度量。
软件工程在语言层面撑死也就是便利一点,做工程更多靠完整约束,标准,规范和制度保证产品质量,效率质量等等因素。机械工程靠设备仪器,软件工程靠工具,go vet 保证基准代码质量,go fmt 保证代码格式,go test 保证单元测试 /覆盖率 /压力测试,go mod 管理代码依赖,go pprof 性能调优,还有 go doc 生成文档。其他语言也能做啊,但是标准就完全是社区要么是内部标准。你说的什么语言跟我说的有半毛钱关系吗?
no1xsyzy
2020-01-04 01:56:58 +08:00
@blless raco test 单元测试,虽然我记忆中存在
```
(+ 1 1)
"should be equal to"
2
```
这样的单元测试语法,但我实在没能找到
; 覆盖率其实是幻觉,但姑且有 cover 包(存在于官方文档内)可以 raco cover
DrRacket (自带 IDE )包含格式化和性能测试
raco pkg 管理依赖
scribble 文档工具

而且重点是,Racket 并非一门语言,而是一组构造语言的工具,并且上述工具对所有构造出的语言通用。
daoqiongsi1101
2020-05-24 12:28:06 +08:00
不一定只用一门语言,php 和 go 完全可以并存,可以把部分性能要求高的接口用 go 重构,另外一些遇到性能瓶颈的逻辑也可以用 go 实现,php 使用 grpc 来调用,这样可以各自发挥长处. 但是直接拒绝 go 确实不应该.

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

https://www.v2ex.com/t/633325

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

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

© 2021 V2EX