如何说服公司新项目使用 Go 语言? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Hanggi
V2EX    Go 编程语言

如何说服公司新项目使用 Go 语言?

  •  
  •   Hanggi 2019-06-11 16:24:40 +08:00 15738 次点击
    这是一个创建于 2380 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司新项目,项目性质导致后期可能要走微服务路线(因为要整合好几个现有项目模块)。现有项目主要以 Node.js 或 python 为主。有人提议保持 nodejs 或者使用 kotlin 作为服务端语言(),最大问题是公司里没有人用过 Go 语言,而且除了 Go 语言还有很多类似 Elixir,Rust 之类的优秀新近语言。

    Go 语言是否在微服务有很大优势。有谁遇到过类似情形?
    122 条回复    2019-06-14 10:44:05 +08:00
    1  2  
    BCy66drFCvk1Ou87
        1
    BCy66drFCvk1Ou87  
       2019-06-11 16:28:32 +08:00 via Android
    go 天生就适合做微服务,上车就不会错
    U7Q5tLAex2FI0o0g
        2
    U7Q5tLAex2FI0o0g  
       2019-06-11 16:28:45 +08:00   1
    “公司里没有人用过 Go 语言” ======> 最“好”的不一定是最“合适”的
    msg7086
        3
    msg7086  
       2019-06-11 16:30:37 +08:00 via Android   12
    你做 CTO,立刻说服。
    tao1991123
        4
    tao1991123  
       2019-06-11 16:33:04 +08:00   2
    最大问题是公司里没有人用过 Go 语言 === go 不适合你们公司
    myyou
        5
    myyou  
       2019-06-11 16:35:11 +08:00
    要么你是 cto,要么你个人能力很强(再大部分人不会 go 的情况下,也能通过一己之力完成 go 项目),否则就老老实实的跟着领导走,不然对你没有任何好处。
    luckyrayyy
        6
    luckyrayyy  
       2019-06-11 16:35:48 +08:00
    为了用而用不可取。
    Yoock
        7
    Yoock  
       2019-06-11 16:36:57 +08:00
    没人会,还是别用了
    misaka19000
        8
    misaka19000  
       2019-06-11 16:39:55 +08:00   3
    把现在的人都开了招一帮会 go 的来
    hereIsChen
        9
    hereIsChen  
       2019-06-11 16:39:58 +08:00
    没人会就不要强行上,就算出点小问题都要你去忙死忙活的
    4everLoveU
        10
    4everLoveU  
       2019-06-11 16:40:55 +08:00
    那你问问自己,用了 GO 之后公司业务会上一个台阶吗?公司发展会更好吗?
    如果可以,那我觉得你不用说大家都自觉会去用,如果没有,那就该干啥就干啥
    chendy
        11
    chendy  
       2019-06-11 16:41:39 +08:00
    把现在的人都开了招一帮会 go 的来 +1
    zhuangzhuang1988
        12
    zhuangzhuang1988  
       2019-06-11 16:41:44 +08:00
    作死。
    NieKing
        13
    NieKing  
       2019-06-11 16:41:59 +08:00
    @Hanggi 我也在想如何说服公司新项目用 Kotlin
    676529483
        14
    676529483  
       2019-06-11 16:50:19 +08:00
    公司写 python 项目用的 flask,想用 django 架构都不同意,说会增加维护成本。所以,没人会就不要考虑了
    lihongjie0209
        15
    lihongjie0209  
       2019-06-11 16:51:24 +08:00
    作死+1
    pmispig
        16
    pmispig  
       2019-06-11 16:51:25 +08:00
    居然还有人想用 nodejs 做后端。。
    botian
        17
    botian  
       2019-06-11 16:51:33 +08:00 via Android
    不建议你这么做,吃力不讨好
    zqguo
        18
    zqguo  
       2019-06-11 16:51:43 +08:00
    别作
    luozic
        19
    luozic  
       2019-06-11 16:52:00 +08:00
    golang 代需要造大把子,
    janxin
        20
    janxin  
       2019-06-11 16:54:07 +08:00
    你做 CTO

    Go 都不行还 Node ?想上 Node 就让前端自己去擦屁股

    Kotlin 要是你们之前都是 Java 倒是可以试试的
    tzhhahaha
        21
    tzhhahaha  
       2019-06-11 16:55:20 +08:00
    当你问这个问题的时候,你已经不能说服了
    beidounanxizi
        22
    beidounanxizi  
       2019-06-11 16:55:54 +08:00
    有一说一 Go 是真的好用 而且可以避免一堆 2 货写骚代码
    dabaibai
        23
    dabaibai  
       2019-06-11 17:19:24 +08:00
    不用说服,你自己先写一套跟公司现有一样功能的.
    并且性能超出现有 直接替换就行
    lancelock
        24
    lancelock  
       2019-06-11 17:20:39 +08:00
    kotlin 不好?
    Beeethoven
        25
    Beeethoven  
       2019-06-11 17:21:56 +08:00
    公司里没有人用过 Go 语言 .. 真改成 go 了后端兄弟怕是要被气死
    Hanggi
        26
    Hanggi  
    OP
       2019-06-11 17:25:35 +08:00 via iPhone
    @lancelock 不是不好,之前都是基于 node,属于轻量级,简单快速,但是选择 kotlin 无非就是走 java 的 spring 啥的。感觉突然整个项目会变很重,大量的配置和依赖,从一个极端突然到另一个极端。
    simple2025
        27
    simple2025  
       2019-06-11 17:26:10 +08:00
    @beidounanxizi 写 go 费钱呀,月月坠机
    tt67wq
        28
    tt67wq  
       2019-06-11 17:27:22 +08:00
    居然还有用 kotlin 做服务端 的?
    Cheons
        29
    Cheons  
       2019-06-11 17:28:26 +08:00 via Android
    开公司当老板
    Cbdy
        30
    Cbdy  
       2019-06-11 17:28:27 +08:00 via Android
    Node 做后端也挺好
    Hanggi
        31
    Hanggi  
    OP
       2019-06-11 17:29:25 +08:00 via iPhone
    @tt67wq 我也很奇怪,后来发现只是作为 java 的替代,框架,虚拟机用的基本都是 java 的。
    wolfan
        32
    wolfan  
       2019-06-11 17:32:26 +08:00
    你跟老板说‘我不要工资,但你要改用 go 来写业务’
    Hanggi
        33
    Hanggi  
    OP
       2019-06-11 17:32:32 +08:00 via iPhone
    @Cbdy 其实确实没什么不好,开发快,简单,部署轻松,性能也还说得过去。但是当整个项目非常大了之后你会发现,你根本不知道这些函数在传递些什么,所以要加入大量类型定义的注释,而且有些问题只有到运行的时候才会发现也很致命。所以开发用 node 没问题,但是重构就不太推荐了。
    photon006
        34
    photon006  
       2019-06-11 17:32:50 +08:00
    把 node 切到 typescript
    tt67wq
        35
    tt67wq  
       2019-06-11 17:33:05 +08:00
    我倒是想把公司新东西用 elixir 重写,然而被老哥们一票否决
    tabris17
        36
    tabris17  
       2019-06-11 17:33:58 +08:00
    等你当上 CTO
    Cbdy
        37
    Cbdy  
       2019-06-11 17:34:40 +08:00 via Android
    @Hanggi TypeScript
    passerbytiny
        38
    passerbytiny  
       2019-06-11 17:35:45 +08:00
    如果你是新项目负责人,你不需要说服公司,你只要保证能做出来。如果你不是负责人,你也不需要说服公司,你需要说服的是负责人。

    另外纠正一点你的认识,微服务的“微”字,只表示单个组件“微”,不表示系统“微”因为把原来的模块变成了子系统,整体系统反而更大了。
    zhengxiaowai
        39
    zhengxiaowai  
       2019-06-11 17:36:17 +08:00
    微服务和 Go 没有关系,Python 和 NodeJS 同样很优秀
    chengxiao
        40
    chengxiao  
       2019-06-11 17:38:14 +08:00
    @676529483 不是...django 不比 flask 上手容易啊?
    leon0903
        41
    leon0903  
       2019-06-11 17:40:21 +08:00
    @chengxiao xgsb
    Hanggi
        42
    Hanggi  
    OP
       2019-06-11 17:40:32 +08:00 via iPhone
    @passerbytiny 确实有你说的这个问题,事实上我们正在把几个项目中可以通用的模块分离出来,做成单个服务,剩下部分后续应该也要拆分,但是还没到那一步。
    mamahaha
        43
    mamahaha  
       2019-06-11 17:41:23 +08:00
    如果你是个有责任心的人,那证明你已经对 go 已经有了深入的认识和了解,你才会如此地坚持。
    你可以给其他员工做 go 语言的培训和指导,让他们实际感受到 go 语言的优秀,我想没人会拒绝吧。
    version
        44
    version  
       2019-06-11 17:42:32 +08:00   1
    nodejs 微服务也不错呢..如果你一个项目只有一个 git 仓库.写一坨代码那就浪费 nodejs 了.
    现在云都推无服务函数..对于低频率还是很省钱呢...有高压接口再用 java 写咯..
    kotlin+java11 还是可以的..不一定非要用 spirng.因为还是很多生态基于 java 的..你内部转接口出来给 api 调用就好.
    目前 go 生态没那么厉害.go 公司没有大牛.还要上 go + 微服务..k8s.等等 .还是不要接触了.出了事你自己解决不了...背锅就是自己了.等着被人割肉
    chengxiao
        45
    chengxiao  
       2019-06-11 17:43:18 +08:00
    @leon0903 不是...我不是故意学巨婴说话的
    lancelock
        46
    lancelock  
       2019-06-11 17:43:44 +08:00
    java 有的是轻量的框架,大部分都比较冷门罢了,因为轻量说难听点就是残缺,啥都没有,全都自己造
    useben
        47
    useben  
       2019-06-11 17:45:33 +08:00
    非紧急项目可以尝试的,现在就是老项目维护用 c++,正在做的和未来项目都上 go 了。写得好爽
    zjyl1994
        48
    zjyl1994  
       2019-06-11 17:55:06 +08:00
    这个得领导来推,我们组本身是 java 的,其他组老大代管几个月换了 go,代管结束以后他们又转回 java 了。
    现在我这个组在用 springboot 做微服务,你敢信?
    jugggao
        49
    jugggao  
       2019-06-11 17:57:10 +08:00
    @676529483 flask 比 django 更适合微服务,更符合现在的趋势,为啥要换成 django ?
    wizzer
        50
    wizzer  
       2019-06-11 17:57:47 +08:00
    https://github.com/Wizzercn/NutzWk java 后台
    https://github.com/Wizzercn/NodeWk node 后台

    我写的,,写的不好多多指教
    jugggao
        51
    jugggao  
       2019-06-11 17:59:15 +08:00
    @chengxiao 看我回蓝
    datou
        52
    datou  
       2019-06-11 18:00:34 +08:00
    楼主担不起责任就别乱提议
    super452
        53
    super452  
       2019-06-11 18:03:26 +08:00
    没有最好,只有最合适
    server
        54
    server  
       2019-06-11 18:12:58 +08:00
    如果你有 100 台 别问 问就 k8s. 如果 10 台,带宽把大头一占,性能提升 50%能省多少钱。时间成本又是个大窟窿,。
    birdrally
        55
    birdrally  
       2019-06-11 18:13:29 +08:00 via iPhone
    一切推行增加成本的技术选型都是困难的,招新或培训老人都是

    而且这种事不是少数服从多数,而是要有一个强势的 cto,对上负责能够承担意外和风险,对下能
    luozic
        56
    luozic  
       2019-06-11 18:18:03 +08:00 via iPhone
    先上 kong or 其他网关,后面调用走 rpc/restful,后台怎么运作和前端有关系?
    taoprogramer
        57
    taoprogramer  
       2019-06-11 18:21:50 +08:00 via Android
    如果是写业务 Java 一把梭,相关框架成熟可靠,别搞些有的没的 ,go 不太适合 crud,轮子没有 Java 的成熟,而且 go 在微服务领域也没啥优势,估计是 docker 让大家把 go 跟微服务划上一个等号的

    大厂的微服务解决方案多数都是自研 rpc
    quickma
        58
    quickma  
       2019-06-11 18:28:58 +08:00
    可以不用 go,但是千万不要用 node
    gamexg
        59
    gamexg  
       2019-06-11 18:42:15 +08:00
    你们公司后端主要会什么?
    建议选择静态类型语言,node 和 python 都不太建议。
    beidounanxizi
        60
    beidounanxizi  
       2019-06-11 18:44:56 +08:00 via iPhone
    @birdrally 那你用老技术?。。。说服的了就用 go,技术栈这种东西在公司本来就一刀切,说服不了从大流 JAVA 不错的
    wujianxiong
        61
    wujianxiong  
       2019-06-11 18:48:27 +08:00
    你是想把公司里面不会 GO 的全开了么?
    whp1473
        62
    whp1473  
       2019-06-11 18:58:09 +08:00
    不要用 node.js 、python,这种动态语言,又那么灵活,一帮人写,后面维护起是个灾难呀。建议用来写单个项目、爬虫、数据分析、工具性质项目比较好。
    go 是可以做微服务和写大的项目,但是你得有 GO 的开发人员和一些有用 GO 做大型开发经验的人。
    java 开源方案成熟,框架很多,人员也多,建议用这个。
    huabinglan
        63
    huabinglan  
       2019-06-11 19:05:34 +08:00
    一般场景下,node,py 都是可以满足需求的。没必要为了技术而技术
    hitsmaxft
        64
    hitsmaxft  
       2019-06-11 19:25:20 +08:00
    成为公司的技术负责人,想用啥都行。
    chunqiuyiyu
        65
    chunqiuyiyu  
       2019-06-11 19:29:55 +08:00 via iPhone
    强行上车不可取……
    karllynn
        66
    karllynn  
       2019-06-11 19:31:40 +08:00
    这个无所谓吧,kotlin 不错的
    testplusplus
        67
    testplusplus  
       2019-06-11 19:51:21 +08:00
    选团队最熟悉的技术
    murmur
        68
    murmur  
       2019-06-11 19:53:07 +08:00   3
    goland=够烂的

    jetbrains 的评价不会错
    goophy
        69
    goophy  
       2019-06-11 19:54:47 +08:00
    Go 没人会,Rust 没人会,干脆上 Rust 吧
    rb6221
        70
    rb6221  
       2019-06-11 20:00:59 +08:00 via iPhone
    公司都不会,出来的成品质量你负责吗?确定能比原来的好?
    monlite
        71
    monlite  
       2019-06-11 20:35:39 +08:00 via iPhone
    node 和 python 在后端都是小打小闹。现在来看,要么 java 要么 go,已抛弃 java 转 go,真香
    fatedier
        72
    fatedier  
       2019-06-11 20:38:35 +08:00
    @goophy Go 有其他 c 系语言基础,很容易上手。Rust,上手更困难一些。
    leopku
        73
    leopku  
       2019-06-11 20:39:22 +08:00 via iPhone
    @luozic 比如?
    1800x
        74
    1800x  
       2019-06-11 20:41:28 +08:00
    换家用 Go 的公司……
    jimrok
        75
    jimrok  
       2019-06-11 20:54:41 +08:00
    没有 go 的人就不要折腾 go,如果遇到解决不了的问题,项目无法推进,一群人 996,杀谁去祭天你先想好了。
    RubyJack
        76
    RubyJack  
       2019-06-11 21:05:15 +08:00
    没人会就别上了
    loading
        77
    loading  
       2019-06-11 21:06:46 +08:00 via Android
    就你一个人会?你当老板傻吗?
    love
        78
    love  
       2019-06-11 21:11:58 +08:00
    当前以 node 和 py 为主,那选 node + typescript,python 太动态了人多不好维护
    rockyou12
        79
    rockyou12  
       2019-06-11 21:25:38 +08:00
    其实 lz 以前是 python 和 node,用 go 做后端总比这两个强,但没大牛带头真的坑多,当年想从 java 转 go 写业务把我给恶心到了,到现在 go 的依赖管理都还是不行,更不要说其他生态了。除非是很基础的服务,不然要是重 curd 的还不如转 java,并不是语言越新就越好,而且 spring boot 那套写 curd 既不慢上手也不难。
    676529483
        80
    676529483  
       2019-06-11 21:36:11 +08:00
    @jugggao 只是举个例子,是另一个项目,不是微服务
    xrlin
        81
    xrlin  
       2019-06-11 22:14:22 +08:00
    没有人力、生态架构基础还是不要作死了。
    violence123456
        82
    violence123456  
       2019-06-11 22:25:10 +08:00
    为啥这么多人黑 node,是真无脑黑,还是真的亲生经历了不好的地方。微服务说明已经拆分开了,node 开发很方便啊,同时可以上一上 typescript。
    nicevar
        83
    nicevar  
       2019-06-11 22:25:12 +08:00
    如果你技术能扛把子,并且打算在这家公司呆个十年八年的你可以提议,否则你就是来挖坑的,到时候项目写到一半人跑了,公司可能就黄了。前些年 python 搞死不少公司,一些人半桶水非要上 python,刚开始很爽,后面业务量上来了,各种问题解决不了,开发顾自己跑路了,公司直接傻眼。
    tourist2018
        84
    tourist2018  
       2019-06-11 23:03:12 +08:00
    go 不说别的 完美覆盖了你说的业务需求

    node.js 。。。这东西还是算了吧 kotlin 没用过不评价

    当然了这语言很成熟也要看贵司程序员的接受程度 如果之前有过 C 语言开发的经验 上手还是很快的
    WalkingEraser
        85
    WalkingEraser  
       2019-06-11 23:08:07 +08:00 via Android
    无责任投 Elixir 一票,
    johnsonshu
        86
    johnsonshu  
       2019-06-11 23:09:56 +08:00 via iPhone
    这语言的语法反人性
    gclove
        87
    gclove  
       2019-06-11 23:12:21 +08:00
    没人用过就别想了,能不能说服 看你在公司是什么角色.

    如果项目是你负责的,而且能接受其它人不会得这种情况,完全可以用.

    否则放弃,不用着急这一时
    izoabr
        88
    izoabr  
       2019-06-11 23:22:05 +08:00
    `Go 语言是否在微服务有很大优势。有谁遇到过类似情形?`

    这句话决定了你不应该说服,你自己都拎不清楚,还要拉别人一起进来?凭什么?
    blless
        89
    blless  
       2019-06-11 23:29:43 +08:00 via Android
    其实没那么难,我们公司原来写 python 的,只是业务之余重构了一个小服务,那种 cpu 内存监控的曲线,还有并发量级,哪怕就按照 pythn 的方式写,提升也是直接超越一个数量级。你们原来是 java 我肯定不说啥,node python 还有什么好担心的
    karnaugh
        90
    karnaugh  
       2019-06-12 01:15:45 +08:00
    你一个人把项目包了,爱咋写咋写(滑稽
    wpzero
        91
    wpzero  
       2019-06-12 07:57:56 +08:00 via iPhone
    不懂为啥就微服务了
    lovelive1024
        92
    lovelive1024  
       2019-06-12 08:49:44 +08:00
    每隔一段时间就会看到一个类似的问题
    elents
        93
    elents  
       2019-06-12 09:05:26 +08:00
    如果项目开发遇到问题,你是挨刀的,跑不了
    crazypig14
        94
    crazypig14  
       2019-06-12 09:06:55 +08:00
    老板是在开公司,不是在开实验室
    o0
        95
    o0  
       2019-06-12 09:17:34 +08:00
    收购你们公司
    FantaMole
        96
    FantaMole  
       2019-06-12 10:00:24 +08:00
    公司项目还是要贴合实际,我上家公司 CTO 就很喜欢 Go,但是公司微服务后端语言还是以 Java,PHP 为主,少量 Node.js 。Go 的话,也就他自己写东西的时候用,偶尔我碰到 Go 的问题会去跟他交流交流。其实如果是微服务的话,引入 Go 在非核心服务试试水也行,不一定要整体替换后端语言。前提是你得另外找一个会用 Go 的,以免出问题了只能找你擦屁股。
    showecho
        97
    showecho  
       2019-06-12 10:04:18 +08:00
    还是说服自己把
    DamonLin
        98
    DamonLin  
       2019-06-12 10:05:00 +08:00
    你喜欢 GO 没问题,但是公司都没人用过,说真的,你说服不了。
    mengzhuo
        99
    mengzhuo  
       2019-06-12 10:07:12 +08:00   3
    真是一粉顶十黑……
    sanqian
        100
    sanqian  
       2019-06-12 10:22:18 +08:00
    。。你是 CTO 你直接说就好了。。。如果不是的话别作死。。。
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3149 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 55ms UTC 12:14 PVG 20:14 LAX 04:14 JFK 07:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86