GoFramemono-repomono-repo
一、前置阅读
monolithmulti-repomono-repo
GoFramemono-repomonolith/multi-repo
二、大仓管理

1、仓库职责范围的划分

通过前置阅读的文章大家也知道,这个世界上没有银弹,大仓有优点也有缺点,其中最明显的缺点就是权限的管控以及仓库的膨胀。为了更好地管理代码仓库,避免这两点缺陷带来更高的成本,我们建议尽可能减小大仓中的微服务规模。至于仓库中需要维护哪些微服务,需要根据服务之间的协作频率来决定。

1)当团队内部的协作频率高于团队间协作频率时

50

2)当多个团队之间的多个服务协作频率非常高时

当业务的微服务数量比较多,并且各个服务之间的交互协作比较频繁,那么可以考虑将这些服务合并到大仓中进行管理,可以极大提高协作效率。这种情况大部分出现在微服务在同一产品线、跨团队但不跨中心或部门的情况下。但由于涉及跨多个团队的协作,这对人员的组织架构管理有一定要求,需要由一定权限的管理者来推动。能做到这一点的企业,往往上层管理水平较高。

2、大仓下的微服务间如何协作

1)代码可见性的管理

APIGolanginternalappapiinternal

2)服务间接口的调用

HTTP APIAPI
RPC

3)兼容性的严格要求

APISDK

保证兼容性代码设计的几个要点:

v1, v2, v3...json.Marshal&Unmarshal

3、大仓下的微服务容器化支持

1)镜像仓库的统一管理

分散的镜像仓库将会降低服务容器化的管理维护效率。为便于统一服务容器化管理,我们建议大仓下的服务使用统一的镜像仓库。镜像仓库的地址统一维护到各个服务下的工具配置文件中:

2)统一编译、提交指令

框架提供了常用的指令来实现程序的编译、镜像的编译、镜像的提交。

make build

编译程序,生成二进制文件。

更多介绍请参考文档:交叉编译-build

make image
Docker
make image TAG=xxx

更多介绍请参考文档:镜像编译-docker

make image.push

编译程序、编译镜像并推送镜像到已配置好的镜像仓库。

make image.push TAG=xxx

3)统一部署、调试指令

Kubernetes
make deploy TAG=xxx
kubeconfigkubernetesTAGdeployoverlaysyamlkustomize
make image.push deploy TAG=xxx
DockerKubernetes

4、大仓下的框架其他指令

./app/服务名称
make cli
CLI
make up

用于升级本地的框架到最新社区稳定版本。

更多介绍请参考文档:框架升级-up

make dao
DAO/Entity/DO

更多介绍请参考文档:数据规范-gen dao

make service
logicGoland IDEWatcher

更多介绍请参考文档:接口维护-gen service

make enums
apienums

更多介绍请参考文档:枚举维护-gen enums

6)更多指令

更多的指令支持请参考框架官网工具介绍章节:开发工具