2017 年我们公司需要快速迭代一款产品, 当时, 我们团队的后端框架是 spring mvc , 该框架结构清晰, 上手快, 但是由于我们的产品迭代速度快, 底层数据库操作接口变动频繁, 导致 service 层工作量巨大, 不胜其烦另外, 随着项目的成长, 代码量越来越大, 项目启动越来越慢, 严重影响了开发调试速度
在这种情况下, 我们希望寻找一种新的框架或编程语言, 我们期望他具备调试简单, 上手快, 启动速度快, 保密性高, 以及适用于高并发及 web 编程, 性能优越等优点当时手上备选框架有 spring boot 和 golang, 综合比较, 在巨大的遗憾中, 我们选择了 springboot, 相关选型参考信息如下
1 从功能满足度比较
在启动该产品研发时, 我们梳理了自己的需求, 主要在三个方面, 一是支持高性能的 restful api 服务, 二是支持 web 页面服务, 三是支持快速跌代 Restful 接口及性能方面, spring boot 和 golanbg 都支持, 且性能区别不大页面服务方面, spring boot 封装了 springmvc, 相对成熟度更高, 并且由于大量 javaer 的长期积累, 该框架已经非常成熟; 而 go lang 方面, 也有成型的框架, 如 beego, 但是该框架使用度并不高.究其原因, 是因为 beego 没有形成像 php 框架那样的生态, 比如行业内 php 开源框架 thinkphp, 目前基于该框架已经形成了大量的 cms, 商城, erp, 微信管理等软件, 这也是我为什么要写作该书的原因, 我希望通过写作该书, 让更多的人认识到 go 语言, 并参与到 golang 的生态搭建中来回归正题, 功能满足度, spring boot 更胜一筹
2 学习成本
我们需要考虑到团队的学习成本, 当时团队已经非常熟悉 spring mvc 框架, 如果切换 spring boot, 学习成本几乎为零, 但是若切换到 golang, 学习成本相对较高另外, 网络上关于 golang 框架, 推荐并不多, 比如 gin,decho, 以及 beego, 我们重点了解了 beego 框架, 知乎上争论颇多这些, 都让我们对是否使用 go 语言, 心里预期上打了一些折扣
3 项目迁移成本
在选择框架的时候, 我们还考虑了我们的集成成本我们的客观情况是: 公司的技术栈以及这些技术栈形成的项目积累, 几乎都是 java, 如果我们切换到 golang, 那么产品运维成本将相对较高, 另外由于目前行业类 golang 从业者较少, 如果我们采用 go, 将人为地为我们的项目团队组建带来巨大的难度.
4 社区活跃度
Go 语言社区活跃度并不高, 具体可以看如下几个方面
l 百度搜索指数
下图是 golang 和 java 以及 php 的搜索指数, 近段时间以来, golang 关注度不断下降, 已经到日均 1000pv, 如果 golang 不孵化生态圈, 将面临淘汰. 事实上, 在百度上搜索 golang, 很多都是 2014 年的旧事了
l Go 技术论坛
笔者 2018-02-10 18:11 访问了 https://studygolang.com/ 首页截图如下
该社区在百度搜索 go 语言论坛 排名第一, 但是日更新不超过 20 篇文章, 一股悲凉浮在心头
下图为 golang csdn 社区论坛, 一周以内不超过 10 篇帖子, 心中又凉了半截
l Github go 活跃度
下图为 github 发布的编程语言 2017 年度排行 Go 语言排行第九. 这意味着全球活跃度还是有, 但相比 php,java 等而言 go 还有很长的任务要走
源代码获取地址 http://www.imwinlion.com
来源: http://blog.csdn.net/keytounix/article/details/79336495