当前位置: 首页 > wzjs >正文

咸阳做网站公司中国建设银行官网站黄金部王毅

咸阳做网站公司,中国建设银行官网站黄金部王毅,淘宝客怎么建设自己网站,宜兴专业做网站公司近期因为项目架构升级原因,笔者着手调研一些go项目monorepo的代码架构设计,目标是长期把既有微服务项目重要的部分都转移到monorepo上面,让代码更容易维护,协作开发更加方便。虽然经验不多,但既然有了初步的调研&#…

近期因为项目架构升级原因,笔者着手调研一些go项目monorepo的代码架构设计,目标是长期把既有微服务项目重要的部分都转移到monorepo上面,让代码更容易维护,协作开发更加方便。虽然经验不多,但既然有了初步的调研,今天就分享一下笔者所面临场景的monorepo设计思路。

从语言特性上讲,Golang是非常适合做monorepo的,但根据不同项目研发需要,monorepo的目录结构可以定制成不同的形式。所以要做monorepo,首先要回答的问题是,做这个事情主要解决什么研发问题,优化了什么东西,否则投入量过多,ROI就会很低。

笔者所处的团队偏向于中台角色,每个同学都负责一个专项,不同专项之间可能共享很多三方能力的实现,并且团队距离业务比较近,研发更注重短平快,所以既往的代码实现质量方面,并不是非常完美。从这个角度来看,如果用monorepo做代码架构升级,主要能解决的问题,一是更精简的代码和模块化抽象,二是减少三方能力的冗余实现,三是通过一套研发实践规范代码管理,这样就能够在保证代码易扩展和模块易兼容的基础上,各个成员能够尽可能自由发挥,代码质量也不会轻易下降,这样长期就能让整个团队的技术迭代更加效率,服务实现的稳定性会更高。

然后就是整个代码架构长什么样子。笔者的项目,大概是这样设计:

- app:所有服务各自的代码- ${service_group}:按架构划分的服务组(模块)- ${service_name}:单个服务的代码(http/rpc等)- biz:业务逻辑- handler- middleware- service- conf:静态配置- main.go- build.sh:每个服务的编译
- lib:所有服务公有的代码- client:三方能力的client实现- common:枚举定义- model:数据结构(from idl)- dal:数据访问(gorm自动生成)- util:工具函数
- idl:协议
- script:脚本(编译/本地开发)
- Makefile
- go.mod
- go.sum
- README.md

由于很多服务需要共享数据结构,所以在设计上,idl、model做了单独提出,被所有服务可以引用。开发约定上,通过在script、Makefile做一些脚本,就可以自动指定某服务创建/更新项目代码,也可以随时自动生成/更新协议结构和gorm定义。

通过这样一个架构,首先代码精简和三方能力抽象都可以解决。然后,由于各类脚本的存在,每个业务专项的研发同学就不需要把过多精力关注在代码底层架构上,可以快速适应整个项目开发。就算长期有需要单独提出的能力,代码也可以很容易迁移到lib模块。这样整体上看,整个团队的代码质量在未来都能够有质的提升。

当然,从现状来看,这个项目结构未来可能会遇到的问题是,如果存量大服务的研发过程要迁移到这个monorepo,可能会踩什么坑,比如go-mod要处理兼容性问题,服务编译部署配置需要重新调整,研发脚本需要做额外的兼容,很多模块需要未来打散挪到lib等等。

上述这些基本上是小问题,大的问题是怎么在迁移项目的过程中,不影响既有的业务迭代。排除需要周末加班的的情况,笔者认为一个合理的解决方法是,在迁移前抽一些时间间隙,先找一些小的存量项目去做试点迁移,踩坑,整理最佳实践,然后再尝试迁移大项目,这样就不至于一下迁移遇到问题就阻塞很多。迁移的话,也是先把所有代码挪到app,保证编译部署是通的,然后在这个基础上再做代码重构和打散,把重要的公有能力给提取出来,去让代码逐渐演变成理想的形态。

http://www.dtcms.com/wzjs/827290.html

相关文章:

  • 微商城建设购物网站网站优化过度的表现
  • 解释自己做的网站会计实帐培训
  • cdn如何做网站备案阿里巴巴司法拍卖网官网
  • 湘潭培训网站建设网站文章更新怎么做
  • 鞍山网站制作小程序如何做网站店铺的模板
  • 网站推广网wordpress去掉导航栏
  • wordpress vue网站齐全的赣州网站建设
  • 成都网站外包公司十年经验网站开发公司
  • 湖北网络营销网站青岛外贸网站
  • seo视频网页入口网站推广正规十大电商平台
  • 缙云县建设局网站东莞做网站排名
  • 营销型电子商务网站11号在线 网站开发
  • 织梦网站被做跳转免费发布招聘信息平台
  • 制作自己的网站c网站开发视频教程
  • 做百度推广和企业网站那个有效果吗合肥房产网365
  • 网站建设和系统集成做网站跟推广哪家公司好
  • 球场 技术支持 东莞网站建设贵阳网页设计培训
  • 网站建设如何传视频一个网站两个域名吗
  • 做企业门户网站要准备哪些内容wordpress 插件 kf5
  • 购买腾讯云主机可以直接做网站中国东方营销网站
  • 帝国cms搭建个人网站建筑设计公司英文
  • 网站死链接扫描PPT做音乐网站介绍
  • 墨刀怎么做网站用家庭宽带做网站
  • 字画网站模板后台管理网站模板
  • 查看网站是否被kps个人网站建设
  • 厦门网站建设工程海城 网站建设
  • 舟山外贸营销网站建站网页qq官网登录入口
  • 图书馆网站建设总结网站首页大小
  • 东乡做网站陕西做网站公司
  • 网站怎么做用户登录数据库制作微信公众号的网站开发