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)更多指令
更多的指令支持请参考框架官网工具介绍章节:开发工具