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 · 14892 次点击
    这是一个创建于 2016 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司新项目,项目性质导致后期可能要走微服务路线(因为要整合好几个现有项目模块)。现有项目主要以 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 天生就适合做微服务,上车就不会错
    littleylv
        2
    littleylv  
       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 啥的。感觉突然整个项目会变很重,大量的配置和依赖,从一个极端突然到另一个极端。
    chenqh
        27
    chenqh  
       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
    x7395759
        58
    x7395759  
       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 吧
    janus77
        70
    janus77  
       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 内存监控的曲线,还有并发量级,哪怕就按照 python 的方式写,提升也是直接超越一个数量级。你们原来是 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
    不懂为啥就微服务了
    ily433664
        92
    ily433664  
       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   ·   实用小工具   ·   4929 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:48 · PVG 17:48 · LAX 01:48 · JFK 04:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.