关于多项目组开发团队的开发环境治理建议

前提

单业务线多分支开发,结构比较简单,只须要部署好我的的本地环境便可,如统一的docker镜像,公共的开发数据库/存储服务等(也能够是各自的本地服务) 可是当业务线较多,相互之间又存在依赖关系,环境就会变得复杂多了。docker

现状

  • 小组:m
  • 项目:n
  • 部署: 单项目各自负责部署
  • 环境:线上开发m套,线上测试m套;本地开发环境通常只有我的部署的项目,其余依赖酌情处理

常见的状况:

- a.项目A有n个其余项目提供的接口,在部署A的时候必需要其余项目可提供服务;
- b.新需求来了,主要任务在A项目上,小组Team1负责完成;
- c.开发过程当中发现需求有涉及到了,其余项目须要作变更;这个时候须要在部署A的时候,同步部署其余项目了.项目因为是分开部署的,小组A须要和其余小组协调沟通,同步进行,联调-测试-发布都须要线下沟通同步进行
- d.更麻烦的是,在开发A项目的时候,又来其余需求了(其余项目组-被依赖项目);同步开发,可是开发环境/测试环境只有m套,每一个小组各自使用一套,新的需求须要不断沟通测试人员,协调开发环境/测试环境,经常处于等待-沟通-等待 状态
复制代码

开发细节:Team1在A项目上基于master建立了开发分支feature/pro1,小组成员基于feature/prod1分支建立各自的开发分支数据库

致使的问题

1.部署繁琐,依赖复杂
2.不统一;没有任何一个完整的环境
3.不稳定;不管是本地开发环境仍是线上测试依赖的项目时刻都有被修改的可能
4.环境资源有限,须要反复沟通协调;也还存在线上环境被构建其余分支的状况
复制代码

解决思路

1.公共服务独立且 明确

统一数据库服务
- 只提供 dev,prev,prod三种
    - dev 数据来源prod,按期同步(脱敏)
    - prev = prod,线上数据库集群,实时双向同步
    - prod 线上数据库
复制代码

2.A项目及全部依赖项目共同部署

- 整理通用的公共镜像
- 拉取对应项目及分支
- 部署全部项目
- 使用一致的数据库服务(开发环境就是开发库)
复制代码

3.K8s部署服务名-oomdev

-  分配随机端口
-  获取访问地址`DEV_SERVER`:http://localhost:8001/api/v1/namespaces/docker/services/oomdev
-  Nginx转发请求oomdev.local.dev.com到访问地址`DEV_SERVER`
-  内部host文件修改-对应部署服务名
-  项目配置文件依赖服务名-固定
复制代码

4.访问路由

- 局域网访问*.local.dev.com解析到测试环境的负载服务器
- 由负载服务器转发到对应的服务
复制代码

5.环境使用

- 我的申请:提交环境名
- 运维审核(自动审核经过?)
- 服务部署脚本建立
- 项目(部署/更新)-对应分支拉取
复制代码
相关文章
相关标签/搜索