V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
cookgo
V2EX  ›  Go 编程语言

Golang 微服务工程最佳实践问题

  •  
  •   cookgo · 2021-03-17 20:04:28 +08:00 · 3658 次点击
    这是一个创建于 1348 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位老司机在使用 golang 开发微服务的时候,假设一个微服务一个 gomod,那么在使用 git 管理源代码的时候,是一个 git 仓库下一个微服务,还是多个微服务放在同一个仓库下?

    19 条回复    2021-04-02 11:13:05 +08:00
    Mitt
        1
    Mitt  
       2021-03-17 20:08:01 +08:00
    一个微服务一个仓库,微服务之间是互相独立的
    mcfog
        2
    mcfog  
       2021-03-17 20:34:56 +08:00 via Android
    多对多,仓库是多个,每个仓库下也可以有多个(互相关联的)微服务
    huijiewei
        3
    huijiewei  
       2021-03-17 20:40:23 +08:00
    git sub tree
    linvon
        4
    linvon  
       2021-03-17 21:12:13 +08:00
    都可以。。。看服务间相关性吧,我们的代码太老导致重构完大量服务都是在一个仓库。但实际上还是建议能拉新仓库就拉新仓库,因为很有可能出现不同服务需要引用同一个三方库不同版本的问题
    xuanbg
        5
    xuanbg  
       2021-03-17 21:51:29 +08:00
    一个服务一个仓库
    goxy
        6
    goxy  
       2021-03-17 23:09:02 +08:00
    看维护的人力。我们小公司都在一个仓库里,然后不同目录。CI 、CD 不同 pipeline
    janxin
        7
    janxin  
       2021-03-17 23:09:23 +08:00 via iPhone
    单体仓库的话建议只有一个 go mod
    Leigg
        8
    Leigg  
       2021-03-17 23:31:51 +08:00 via Android
    最好同在一个项目下,分目录就行了,要是分仓库,那公共代码的管理能累死。
    kkbblzq
        9
    kkbblzq  
       2021-03-17 23:41:47 +08:00
    我觉得吧,如果连代码都拆不清楚,那还是别跟风整微服务了,所以我支持多仓库。
    AngryPanda
        10
    AngryPanda  
       2021-03-18 00:35:27 +08:00 via iPhone
    支持多仓库。清晰可控。


    @Leigg 可以专弄个 repo 管理公共代码库
    ifsclimbing
        11
    ifsclimbing  
       2021-03-18 00:55:15 +08:00
    大公司都是 monorepo,比如 google,就是一个 repo
    小公司,不复杂的话可以多个
    cookgo
        12
    cookgo  
    OP
       2021-03-18 09:05:08 +08:00
    还是感觉用 gitlab 一个项目组里分不同的子工程这样编写维护更方便:)
    Visionhope
        13
    Visionhope  
       2021-03-18 09:19:22 +08:00
    综合考虑吧, 楼上也说了很多优缺点. 我们公司就是准备从多个仓库迁移到一个仓库.
    dongtingyue
        14
    dongtingyue  
       2021-03-18 09:57:14 +08:00
    我是放一起,有些公用的可以提取出来。一个服务一个仓库感觉不是很方便。
    https://github.com/zarte/minirpc
    rahuahua
        15
    rahuahua  
       2021-03-18 09:58:55 +08:00
    说多个的你们服务是不是只有个位数~
    Leigg
        16
    Leigg  
       2021-03-18 11:56:18 +08:00 via Android
    @AngryPanda 就是这个方案的缺陷。
    davidyanxw
        17
    davidyanxw  
       2021-03-18 15:19:31 +08:00
    支持多仓库。
    单仓库的话,一个微服务发布,其他业务是不是也得同步更新?
    rapperx2
        18
    rapperx2  
       2021-03-18 16:31:29 +08:00
    支持单仓库
    sekfung
        19
    sekfung  
       2021-04-02 11:13:05 +08:00
    如果有权限要求,建议多仓库,比如不是该模块的开发人员,不允许修改提交。

    git 跟 svn 的区别在于,git 原生没有 svn 那样可以针对目录级别的权限控制,当然理论上服务端可以写 git hook 做到,但是麻烦得多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   878 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:54 · PVG 04:54 · LAX 12:54 · JFK 15:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.