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还有很长的任务要走。
本文源代码源代码获取地址 https://github.com/winlion/restgo
10.2 天天任务清单小程序
https://github.com/winlion/dailytask
10.3 工业大数据采集
10.4 restgo cms
10.5 restgo 千人大群
作者简介:胡文林,持续创业者,长期从事技术开源工作。微信号jiepool-winlion