个人的一点经历,仅供参考。
身在小公司, 做过不少创业项目, 几年前 php, springboot, .net core 都做过, 并且目前还在维护着, 但近两年的新项目后端全部使用 gin 了。
选择 gin 主要是以下几个因素, 跟其它几个语言 /框架比起来:
一、php 写的早, 当时还是 php5 写的项目, 维护起来有点痛苦, 特别是经历过几拨人接手过的项目, 数组里面到底有什么太费脑子了。
二、springboot 太消耗资源了, webapi 项目基本上>1G 的内存消耗, 有个项目上了 cloud 微服务, 十来个服务,4 核 16G 的阿里云刚好能跑一套部署。我的项目主要是企业用户,CRM, 进销存等, 访问压力并不大,但是客户用起来,很多会要求有定制内容,定制多点了,就需要单独开发独立部署,成本比较高,如果成本转嫁给客户,客户会觉得软件比较贵,一年多 5000 块钱服务器费用,很多客户会犹豫。而现在容器化部署 go 为主的项目, 一套软件部署 3 个容器, 2 个 nginx:alpine, 1 个 gin, 镜像都只有一二十兆, 内存消耗 3 个容器加起来不到 100 兆, 多台服务器共享负载均衡带宽, 共享 RDS 数据库, 独立部署的成本可以压缩的非常低。
三、.net core 我是从 asp 时代就入行做网站, 后来
asp.net 1.1, 2.0 都用过做过很多中小型网站,
后来几年没接触.net,
但是对.net 还是有情怀的, .net core 发布后, 拾起来做了几个小项目, 并没有特别惊艳的地方, 坦白说 spring 那一套内容需要用到的都学会就已经消耗了大量的精力, .net core 一样有太多需要学习的东西, 年龄大了并不想投入太多时间在这种学习上了, 最终还是选择了 go 。选择 go 的原因就是部署成本低, 语言简陋一点并不是大问题, 说 go 不能写业务的就更不知道为什么了, 有什么样复杂的业务 go 不能写的? asp 都开心地写过几年, go 比 asp 强多了, 而且忘掉架构, 忘掉设计模式, 用脚本一样的写法写 webapi, 做个快快乐乐的 curd boy, 早点下班带孩子, 不是很开心滴么。
题外话,由于项目需要,有些服务需要开发各种能运行在不同终端上的程序, 比如 windows 上的读卡、串口服务, 甚至运行在路由器上的采集程序, 通过 wifi, 蓝牙做数据采集,
这些以前都是.net 开发的, 但是部署起来并不快乐, 很多客户或者设备自带的 windows7 非常老, 甚至没有接入互联网, 部署一个应用会缺少各种各样的依赖, 有的要安装 vc++运行库, 有的要安装系统更新, 每次都提心掉胆地安装, 就怕这几十万的设备带的电脑系统要是挂了, 客户找厂家上门可是要大价钱的,关键还经常报错安装不上依赖。但是自从把这些采集程序换成 go 开发成 windows 服务, 兼容性出奇的好, 从来没需要单独安装什么依赖, 各种架构的 arm, misp 路由器上跑 go 开发的程序资源消耗也非常小, 体验非常好。