背景:
公司原有项目是 php,业务量也不小,每日 100W+订单。
前部门负责人想在公司内部推广 golang,希望用 go+服务化改造业务,而且推荐内部从 php 转岗,还招了几个 golang 工程师带队。
一段时间内公司已经改造和上线了 10 多个服务,结合 codepipeline,k8s,ingress 等已经很接近 devops 了。
但是由于需求变化快,PHP 岗位缺人,大量人力被调去做业务层开发等多种原因,服务化进度其实很慢。
后来部门负责人走了。
新来的 CTO 说 golang 产出慢,golang 招不到人,golang 招人成本高,golang 项目不好维护等理由,突然决定公司停用 golang。坚持用 PHP 开发。对业务优化提供了升级 PHP 版本,使用依赖倒置等设计模型,对于业务服务化设计没给出具体指导方案。
对于升级 PHP 等措施我们是支持的,但是对于拒绝 golang,我们是有些心凉的。
对此 v 友怎么看。
1
wangyzj 2019-12-29 16:22:45 +08:00
devops 和语言没关系
投入产出比最重要 我觉得没啥问题 |
2
MeteorCat 2019-12-29 16:25:59 +08:00 via Android 16
有什么非要改成 golang 的理由?列举好
|
3
miao 2019-12-29 16:26:46 +08:00 via Android
没啥问题。稳定运行的项目切不可瞎改语言
|
4
miao 2019-12-29 16:27:40 +08:00 via Android
好像以前有了解 facebook 用的就是改良版的 php
现在不清楚 |
5
momowei 2019-12-29 16:29:34 +08:00 3
go 产出真不快,除了初始内存小点,性能和生态比 java 都差得远
用我大 java 呀,产出绝对高 |
6
shiny 2019-12-29 16:31:09 +08:00 21
和团队情况有关,光从这么一个帖子无法判断出来决策是否有问题。
倒是这标题,看得出来楼主想要批判一番,搞个大新闻。 |
7
TangMonk 2019-12-29 16:33:43 +08:00 via iPhone
PHP 的确好招人
|
8
uxff OP @MeteorCat golang 语言的开发效率,语言优势,维护的优势很多就不列举了。其实没有说非要改成 golang,只是重构时候想选择一个新的方向,探索新的技术领域。go 是一个成熟被认可的方向。那同样的问题,didi,探探等有没有非要改成 go 的理由?
|
9
wangkun025 2019-12-29 16:35:07 +08:00 2
听 CTO 的。
|
10
alpha2016 2019-12-29 16:36:14 +08:00 1
韩天峰也是这个观点,成本考虑,现在市场上很多 go 程序员水平不是很高,如果让 php 开发转 go,和招一群 go 新手差不多啊,php 才是现实情况的最好选项
如果你有很多的资源可以招一批 go 大佬,彻底替换现在团队,那倒是可以。 |
11
wangxiaoaer 2019-12-29 16:39:31 +08:00 via Android
别没有大公司的命得了大公司的病。
作为员工当然想学习新技术自己爽,作为负责人必须要考虑招人成本。 正如一楼说的 Devops 跟语言没关系,别一提微服务就是 golang,一提前后端分离就是 node. |
12
manami 2019-12-29 16:43:23 +08:00 via Android
go 确实比 php 灵活,业务复杂上微服务用 go 的优势就出来了,看你们公司未来的发展。
|
13
sobigfish 2019-12-29 16:45:35 +08:00
因为他除了考虑技术上可行性还得考虑人好不好招 😂
|
14
guanhui07 2019-12-29 16:46:08 +08:00 via iPhone
php 挺好的,还有 swoole
|
15
designer 2019-12-29 16:47:07 +08:00 via iPhone 1
人家是 CTO,对技术负责,不听他的指挥他还要背锅
|
16
6oML852dJf9Kn2l7 2019-12-29 16:48:47 +08:00
cto 的做法完全没问题,最关键的是稳定,golang 的人员招聘现在是个大坎儿
|
17
sagaxu 2019-12-29 16:48:47 +08:00 via Android
@alpha2016 Swoole 4.0 跟 Go 已经非常像了,PHP 选 Swoole 和转 Go 在学习成本上没有太大差别。
|
19
loading 2019-12-29 16:49:32 +08:00 via Android
每日 100w+的单,目前没性能瓶颈,为啥非要换?
你 cto 一点都不傻。 |
21
wsseo 2019-12-29 16:52:15 +08:00
很多帖子说语言一通百通,显然不是这样的。
|
22
akira 2019-12-29 16:52:17 +08:00 1
cto 根据实际情况做最优选择。。没啥毛病吧
|
24
hlwjia 2019-12-29 16:54:58 +08:00 7
每天购买 100w 单的消费者们会不会因为你们用了 golang 购买更多?
golang 能不能做出些这些消费者们能感知的功能,而 php 是做不到的? 技术部的工资是你们自费的,还是公司通过经验产生利润给你们发的? |
25
zuokanyunqishi 2019-12-29 16:55:05 +08:00 via Android 1
既然 swoole4.0 和 go 都差不多了,就个人来说还是愿意去研究 go😁
|
26
KENNHI 2019-12-29 17:10:46 +08:00 via Android 6
pxxxhub 用的就是 PHP,我觉得语言不是性能瓶颈。
|
27
alpha2016 2019-12-29 17:15:24 +08:00
@sagaxu 学习成本的很大一块是排错成本,照着教程学和出错了迅速定位问题和解决,这个 cto 得考虑了,要是真的影响现有业务稳定性,cto 要背锅了。
|
28
zjsxwc 2019-12-29 17:19:14 +08:00
需求变化快,全被调去写业务。。。
|
29
LancerEvo 2019-12-29 17:20:11 +08:00 2
"新来的 CTO 说 golang 产出慢,golang 招不到人,golang 招人成本高,golang 项目不好维护等理由,突然决定公司停用 golang。坚持用 PHP 开发。"
不是说的很明白了吗?为啥你还来发帖问 |
30
mcfog 2019-12-29 17:21:12 +08:00 via Android
你猜部门负责人为什么没能升 CTO ?
|
31
murmur 2019-12-29 17:22:06 +08:00
golang=够烂
所以我也投 php 一票 |
32
ruchee 2019-12-29 17:22:27 +08:00 1
CTO 要考虑的问题远比你们小兵仔要考虑的多,听 CTO 的没错
|
33
tinybaby365 2019-12-29 17:28:40 +08:00 1
虽然对 php 没有什么好感,但建议还是:不要切换。招人问题,开发效率问题,语言进化问题,标准问题,太多问题了。
个人对 go 的理解,一个更好的 C,做 infrastructure 可以。 |
34
dilu 2019-12-29 17:30:13 +08:00 via Android 1
说真的,短短几年内,出活快,好招人,php 在这方面比 go 不知道好了多少倍
|
35
sarices 2019-12-29 17:34:48 +08:00
你在这里讨论没用吧,应该跟 cto 的上级沟通,如果你认为 golang 更好,你就死磕到底,做好被炒鱿鱼的准备就行了
|
36
mingqing 2019-12-29 17:37:01 +08:00 1
本人目前长期写 Go,我觉得你们 CTO 说的也没错,什么技术栈适合当前环境,就用什么,语言没有可比性。
|
37
sagaxu 2019-12-29 17:39:41 +08:00 via Android 1
@alpha2016 我觉得决定性因素不是客观情况,空降 CTO,java 转 php,php 转 java,php 转 go 的例子一大把。
|
38
hoyixi 2019-12-29 17:42:24 +08:00 1
正常点的都不会折腾,至少短期不会。 如果换了新 CTO,可能会来一波,到时候也是辞退你们这些老人的时候了。
|
39
yuanchao 2019-12-29 17:43:57 +08:00 1
golang 招不到人,golang 招人成本高,golang 项目不好维护等理由
+1 我觉得说的很有道理 |
40
merin96 2019-12-29 17:45:05 +08:00 1
并没有什么非用 go 不可的因素,瞎搞搞出问题还要背锅,吃力不讨好的事情换你去那个位置也不会做的
|
41
tonnycao 2019-12-29 17:48:42 +08:00
PHP 也可以做微服务,技术选型还是听领导的,除了问题有人背锅,自己搞除了问题就得自己扛!我觉得 Java 不错,很成熟了。
|
42
iiusky 2019-12-29 17:56:10 +08:00 via Android
php 好像大厂都是二开 php 的,用 c 去写? golang 我目前看好的就是跨平台吧。学起来相对 c 比较简单。不过 go 的依赖管理着实辣鸡。。目前用 golang 处理流量数据。
|
43
wdd2007 2019-12-29 17:59:20 +08:00
没毛病
|
44
ty4z2008 2019-12-29 18:03:19 +08:00 1
如果是现在情况并不是到了非换编程语言不可了。还是使用 PHP 的好。
毕竟成本在那儿。 另外部门内部没有一个深入 Go 的。并且做过相关的大型项目,best practice 这些都是摸着石头过河。 另外容器编排这些用 php 也可以,不是限定了语言 |
45
xmf1234321 2019-12-29 18:05:04 +08:00 via Android
hh
|
46
alpha2016 2019-12-29 18:19:26 +08:00
@sagaxu 感觉暴力转语言的,要么是业务扩展,现有的无法支持,不差钱,转。还有一些就是要凉,转语言像是得了绝症跳大神,客观因素是业务要求和员工也切换了一批。
|
47
jss 2019-12-29 18:28:37 +08:00 via iPhone 1
团队里的问题,大家都会遇到;我身边鲜活的例子:项目组长走了,整个团队七零八散…
|
48
scnace 2019-12-29 18:34:50 +08:00 via Android
嗯,所以我们变成了 Java (
|
49
lihongjie0209 2019-12-29 18:41:08 +08:00
|
50
manami 2019-12-29 18:47:14 +08:00 via Android
@lihongjie0209 不是绑不绑定的问题,而是谁更适合的问题。go 微服务直接二进制运行,php 试试行不?不行,需要 nginx 或 php-fpm 搞定进程和连接池管理
|
51
lihongjie0209 2019-12-29 18:51:10 +08:00
|
52
whatisnew 2019-12-29 18:53:23 +08:00 8
说老实话,现在的有一些自以为自己很聪明的入门级程序员真是有一股自大的心理。
我带的一个 python,觉得自己很牛逼,其实他说设计的刚 python 培训班出来,菜的要死,面试的时候看他底子不错,收了他。但是他自己觉得自己很牛逼,按示列把 pands 跑了几个示例就觉得自己精通了,有什么问题我给他一边做指导一边还鄙视我,自己平时逛一些社区什么的,以为自己很年逼,我做的一些技术选型和决策,有时候他表现出这样很 low 的感觉。这次裁员准备把他替掉。虽然人很聪明,一点就会,但是这样的人团队协作能力太差,不好带。 |
53
manami 2019-12-29 18:53:51 +08:00 via Android
@lihongjie0209 ???讨论的不是能不能搞的问题,是谁适合搞的问题
|
54
sagaxu 2019-12-29 18:56:53 +08:00 via Android
@alpha2016 暴力切换更多是政治斗争结果。每个 CTO 都有亲信,把关键岗位都换成自己人是头等大事,换技术栈是最有效的手段。
|
55
yunji3344 2019-12-29 18:58:34 +08:00
能挣钱就好。纠结语言有什么用
|
56
manami 2019-12-29 18:58:38 +08:00 via Android 1
@lihongjie0209 其次拿 php 在微服务跟 java 还真是被吊打,微服务常见的 2 种通信方式 rpc 和 restful,在 rpc 方面 php 做常驻内存就是硬伤
|
57
lihongjie0209 2019-12-29 18:59:37 +08:00
@manami #53 既然不是技术的问题, 那就是人的问题了。
|
58
charlie21 2019-12-29 19:10:20 +08:00
项目组长走了,整个团队七零八散 … 哈哈哈
|
59
zhangdawei 2019-12-29 19:10:28 +08:00
现有人员能力,现有团队能力,
投入产出比,换技术栈带来的收益, 团队老大要考虑的事情更多 |
60
encro 2019-12-29 19:10:46 +08:00
阿里云一个 4 核 8G,几个 T 的数据,每天也有小几十万单吧。
用的是 PHP Yii 框架, 再增加 10 倍的话我只考虑换个好点数据库,不打算换语言, 人力成本远大于服务器扩容成本。 devops 难道比我 git pull 还快? |
61
netherlanddennis 2019-12-29 19:20:25 +08:00
cto 主要考虑问题是 团队能活下去.
php 投入成本更低. 所以... |
62
eslizn 2019-12-29 19:22:51 +08:00
业务大于一切,如果性能问题没有到影响业务的地步,是没必要做语言切换的。
还有些人推 swoole,swoole 虽然性能好,但是问题真不少。 踩过很多坑,只能说一坑套一坑 可以看看 issues,以及 issues 里 closed 里面一些其实问题并没有解决而是直接让你升级(非补丁版本),亲身经历 另外把原有的 php 迁移过来的工作量不亚于重写,就长期的可维护性来说,go 比 php 好 |
63
realpg 2019-12-29 19:26:11 +08:00
挣钱的业务大部分不需要很高级的架构……
|
64
zhuangzhuang1988 2019-12-29 19:43:05 +08:00
除了问题谁负责 听谁的.
|
65
AX5N 2019-12-29 20:09:43 +08:00
虽然两个都没用过,但支持 php
|
66
dandycheung 2019-12-29 20:12:10 +08:00 via iPhone
北京吗?我这儿 golang 和 PHP 两开花,欢迎入坑……
|
67
HanMeiM 2019-12-29 20:16:18 +08:00
@manami 所以有更好的 swoole 为什么不选呢?非要拿 php-fpm 来对比?基于 swoole 开发的 hyperf 框架就有提供微服务相关的一些东西,如果觉得不好还可以自己再换。
|
68
mentalidade 2019-12-29 20:18:02 +08:00
我们 PHP 转 java 了
|
70
pandait 2019-12-29 20:46:32 +08:00
优秀。PHP 转 Java 中。
|
71
dlqingxi 2019-12-29 20:49:25 +08:00
必须承认,这种心态多多少少有点“面向简历编程”的感觉。
不管怎么说,简历上有 golang 系统开发经验总是比单纯的 php 开发经验好看,对吧。 在这种心理下,技术人员当然巴不得导入新技术。 某种角度来说,这也算是技术人员对自己的一种投资。 但是,矛盾很快就出来了。对于公司来说,应该是面向业务编程,而不应当是面向技术编程。 如果这一波换 golang,过两年,又出来个 wentlang,是不是又要换一波,再过两年,又出来个 wentlang++,是不是要再换一波? 100W+的订单如果可以从容处理,起码说明这个系统稳健。够用。 如果不是存在明显的短板,真应该好好权衡更替的成本。不能只从技术的维度去考虑问题。 有这样的 CTO,应该说还是比较负责的。很大 cto 就喜欢盲目上新技术,最后…… |
72
soho176 2019-12-29 20:52:41 +08:00
我就问你 换成 go 能让公司收入增加吗?能帮公司减少成本吗? 如果啥都不能,那为啥非要用?仅仅因为是大厂用?自己也跟着用显的自己牛逼?
|
73
hain 2019-12-29 20:52:46 +08:00
Golang 语言实现企业业务系统,不如 Java 生态好。
建议用 Java,作为程序员,应该多学几门语言。 |
74
wzhy 2019-12-29 21:01:00 +08:00
据说,刚刚在 27 号发射成功的胖五在地面设计时用的是 Windows XP,火箭上的软件用的只有 C 语言和汇编语言
|
75
hheedat 2019-12-29 21:16:26 +08:00
北京的吗?我司招 Golang,需要联系
|
76
SteveAlan 2019-12-29 21:17:48 +08:00 via iPhone
新系统可以评审一下,原本稳定的系统改他干嘛
|
77
wangyzj 2019-12-29 21:57:22 +08:00
补一句
虽然新技能新语言新名词在简历上都很好看 但简单粗暴在绝大多数企业中都能带来最好的投入产出比 你有几个 9 的需求吗? 你能向大厂一样引领潮流吗? 淘宝转 swift 不也是很失败 美团搞 flutter 也是摸索 码农大多数作为成本中心存在没有那么多盈余可以过分投入新技术研发 稳定和全局成本的把控才是一个管理者最应该考虑的事情 即使非管理者也需要今早有这种意识 虽然这对于个人来说看起来不那么利好->在目前的大形势下->在中国 |
78
crbee 2019-12-29 22:03:09 +08:00
我不觉得 CTO 的决策有什么问题...
如果原有系统稳定运行且在一定周期之内都没有什么性能瓶颈,以业务需求出发没什么问题。 |
79
Pastsong 2019-12-29 22:18:53 +08:00
轮子哥说过,技术选型是政治问题
|
80
sagaxu 2019-12-29 22:27:43 +08:00 via Android
@eslizn 从 swoole 1.x 用到 4.x,一路各种 coredump,本以为 4.0 之后应该稳定了吧,没想到继续 core,4.0 之后小版本发布还大量修改代码。稳定性太差了,不知道 5.0 之后能不能改进一下。
|
81
mengzhuo 2019-12-29 22:30:09 +08:00
大部分是 PHP 就 PHP 呗
大厂才有空换语言 |
83
MeteorCat 2019-12-29 22:53:57 +08:00 via Android
@uxff 比如像我以前公司一样,当年我们公司有个类似一元云购项目使用 php+redis 实施抢购队列,但是后续并发流量上来之后,常常出现 php-fpm 池卡死的问题,后续我们用了 java-spring 实施的功能队列有效降低抢购时出现的卡顿,所以你得考虑业务情况来具体分析
|
84
janxin 2019-12-29 23:03:01 +08:00
谁说了算听谁的
|
85
lolizeppelin 2019-12-29 23:08:27 +08:00 1
php 死于 fast cgi,真正的“脚本”思维语言
现在都开始依赖常驻进程了,那么多年来没有任何常驻进程相关的库积累,以前的框架都不是照常驻进程设计的,导致大量 php 程序员都没有相关知识 脚本语言里也就 php 有这个缺点 如果用 php 这个缺陷不是大问题的确没必要换 |
86
blless 2019-12-29 23:19:52 +08:00 1
我们当时装 go 就很直接,什么开发效率慢,维护差都没有在点上。Go 最大的优势是工程性,go tool 的单元测试,覆盖率,性能测试,go fmt 自带的格式化,别的语言也不是说没有工程性,但是都是社区或者自行整理的规范。还有什么难招人?我们从来都是招别的语言的人来转,一星期上手真的不是梦。还有,搞软件工程,想要好维护,动态语言就不要拿出来说了,动态一时爽,重构 XXX。除非 100%代码审查,谁知道哪里用了 eval 之类的查个鬼。
|
87
tailf 2019-12-29 23:20:23 +08:00
@manami PHP 天生就是微服务,PHP 的优势有相当一部分就是来自于微服务的特性。当然这个微服务不是 java 对微服务的具体实现,而是微服务本身的概念。你品味一下。
|
88
tailf 2019-12-29 23:21:46 +08:00
golang 就是 C with Net,我实在是想不出它被大规模应用的理由。
|
89
tailf 2019-12-29 23:22:16 +08:00
对了,大家可能不知道,golang 全球 90% 的用户在中国。
|
90
mitu9527 2019-12-29 23:26:36 +08:00
根据你的描述,本身 PHP 是可以满足业务需求的,这时候首先应考虑把 PHP 做的更好一点,其次才是更换技术栈。没有绝对把握就换技术栈,说明前负责人考虑问题不成熟,本来问题说不定还简单,经过一番折腾,进退两难,你那前部门负责人不走就怪了。针对 Web 项目后端来说,目前就 PHP 和 Java 两门编程语言是主流,其他的编程语言的影响力都可以忽略,PHP 这两年性能提升了好几倍,工程化虽然比不上 Java,但也算完善,现在完全可以胜任大型项目了。所以说么不换,要换也是换成 Java。
说点个人猜测:你那前负责人估计 PHP 不怎么样,这两年传出 PHP 前景堪忧后,听说 Go 比较火,学了一下 Go,就想换 Go,估计现在 Go 也不怎么样吧。如果他 PHP 和 Go 其中之一可以,不至于到现在的局面。 |
91
tailf 2019-12-29 23:27:10 +08:00
六年多前我开源的第一个库就是 golang 写的一个静态化工具,在线上运行六年了,golang 确实是一个好技术,但却不是一个可以像 Java 那样大规模应用的技术,就像 PHP 就有自己明确的使用场景,golang 的优势应用场景也是在高性能网络领域。
|
92
mitu9527 2019-12-29 23:37:52 +08:00
@lolizeppelin 这个确实是 PHP 一个问题,不过 PHP 编程语言从来都是开发者要什么,它就加什么,所以语言特性该有的慢慢都会跟上。我觉得 PHP 最大的问题是行业编程水平不行,说直白点最大的问题就是很多人都不懂面向对象编程思想,用着面向对象技术却写着面向过程的代码,微型、小型项目可以过得去,中型和大型项目这么做往往都会失败,更别说超大型项目了。
|
93
arden 2019-12-29 23:38:12 +08:00
能用 go 就使用 go,说 go 不好维护,这是什么理由? php 代码才是真的难维护,用 swoole 为啥不直接用 go。
|
95
CEBBCAT 2019-12-30 00:22:03 +08:00 via Android
|
96
fansangg 2019-12-30 00:39:41 +08:00 1
屁股决定脑袋,CTO 能摸到这个位置想的东西肯定都和你不是一个层面的,从 PHP 换 go 是有代价的,时间和金钱。公司首要的目标是盈利,环境不会停下来等你们重构。
|
97
no1xsyzy 2019-12-30 01:45:48 +08:00
1. 问:这是否牵涉内部 zz 因素?(新官上任三把火,可以理解但需要谈,避免意外烧掉粮仓)
2. 开发速度不凭主观,而且这东西主观偏差还是挺常见的,拿出具体数据,证明其确实是更好的选项 3. 除了 Lisp,其他不过五十笑百,没有圣战的必要吧? @fansangg 重构的目的不是就是不等环境停下持续重写部分代码吗?改语言那叫重写。 |
98
2kCS5c0b0ITXE5k2 2019-12-30 01:52:08 +08:00
@arden 问题是现在系统是稳定的 盲目换技术栈代价太大了
|
99
no1xsyzy 2019-12-30 01:52:24 +08:00
@blless 你这些优点,直接一个 Racket 都给你整齐了,而且 Racket 到 Typed Racket 平滑过渡,甚至可以先动态写好然后随时转静态。
那为什么不用 Racket 呢? |
100
ericgui 2019-12-30 07:40:39 +08:00
用什么语言是郑智问题,不是技术问题
你想明白这个就好了 再说了,PHP+ Cpp 也照样可以支撑你们的业务,没问题。 总之,这不是哪个技术更好的问题 |