用 Go 开发公司内部的业务系统,后端该如何选型?

2022-07-04 17:45:32 +08:00
 gowk

对于 Go 一直在关注和了解,写过几个玩具项目,实际工作中没有使用过。现在有几个公司内部项目需要启动,想组建一个 Go 团队,刷选了几轮简历发现应届生或者毕业一两年的,简历上面 Go 的身影越来越多。

倒不是排斥 Java ,说实话写 Java 心智负担较重,看过很多 Java 写的项目代码是惨不忍睹,导致现在看到 Java 就有一种「恶心」的感觉,其实也明白 Java 确实比较适合写业务,但是我觉得写好并不容易,尤其是对一些刚毕业开发经验少的同学来说。

另外我十分赞同 Rob Pike 的这段话:

"The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt."

这也是我想全面转用 Go 语言的原因

因为是公司内部业务系统,没必要上微服务,且前端打算使用 Vue 2|3 ,想请教大家两个问题:

13665 次点击
所在节点    程序员
107 条回复
welong
2022-07-04 19:35:12 +08:00
还招人吗
lesismal
2022-07-04 19:35:53 +08:00
直接用我出品的库吧,用 RPC 的接口方式交互,既支持普通的 HTTP RPC CALL 请求,也支持 Websocket 长连接 RPC CALL ,可以 Server 端主推送,中间件都可以定制,协议交互的各种业务类型都方便支持:
github.com/lesismal/arpc
web 的例子看这里:
github.com/lesismal/arpc/tree/master/examples/webchat

数据库也用我这个,比什么 ORM 或者其他的 RawSql 库都简单易用方便得很(隔壁帖子前阵子刚有人喷 go 的 ORM 呢):
github.com/lesismal/sqlw
例子看这里:
github.com/lesismal/sqlw_examples
前几天刚发过帖子:
www.v2ex.com/t/861739

不要以为 star 少不好用,那是因为做得晚、现在几个国内 go 站长都忙着卖课程挣钱所以论坛没人看了推广不起来、我也不屑于去加那些互相捧臭脚的技术饭圈,有不少项目 KPI 搞假玩意忽悠人呢、氛围太恶心

吹个牛说,我提供的都是最强方案,如果哪位不服,来看看试用下欢迎来跟我 battle 。
mcfog
2022-07-04 19:37:09 +08:00
要 Swagger/OpenAPI ,已选 ent 的话
我建议 https://goa.design/

goa + ent + uber/zap
根据团队风格 /喜好判断是否要来个 DI 容器
freakxx
2022-07-04 19:53:10 +08:00
gin + ent 能满足日常开发,虽然有些东西还要自己手搓,体验感还不错
iosyyy
2022-07-04 20:06:09 +08:00
goframe 自带 swagger 可以自动生成。。
themiscloud
2022-07-04 20:20:42 +08:00
ent 用着感觉非常棒
rrfeng
2022-07-04 20:45:48 +08:00
在看到这个帖子之前我都没听说过 goframe ,怎么突然就这么多人推荐??
gowk
2022-07-04 21:05:02 +08:00
@rrfeng 可能因为 1 楼推荐了吧 ……
liuhan907
2022-07-04 22:18:15 +08:00
公司内部项目,不用操心延迟和同时在线用户数量,我就不觉得会有比 blazor server 糊逻辑更快的。可惜这是微软的东西,zz 不正确(狗头
littlehero220
2022-07-04 22:48:30 +08:00
logrus 大量反射
jmllx1963
2022-07-04 22:59:24 +08:00
用 goframe 然后用 apifox 直接导入 api 文档,对前端和维护都非常友好的框架
dilu
2022-07-04 23:04:11 +08:00
建议你搞个脚本,可以一键生成 curd 代码和前端简单的表单样式,这样后续开发速度和规范性都有很大的提高
tairan2006
2022-07-04 23:29:10 +08:00
Gin zap sqlbuilder+sqlx 啥框架都是浮云
ipwx
2022-07-04 23:35:19 +08:00
@liuhan907 Python FastAPI 表示也很愉快
ipwx
2022-07-04 23:38:18 +08:00
@liuhan907 (顺便吐槽一下 FastAPI 的 slogan

——最快的 Python web 框架之一
https://fastapi.tiangolo.com/zh/

如果说开发最快的框架之一还说不定是的。。。运行最快的,这个我不觉得它说对了。内置强类型的各种输入输出 Serialization / Deserialization 和检查,还有自动产生 Swagger 文档。async def 和 def 可以混用。配合 sqlmodel 可以直接对接 sqlalchemy 的 ORM 到 Swagger 的 JSON API 。爽爆了。

不过公司内部项目,服务器算力都是过剩的,管这个干嘛。
815979670
2022-07-04 23:52:08 +08:00
api 文档的话 apifox 试试? 有人说用起来会卡,但强大的功能还能免费团队协作,也很诱人。
sakishum
2022-07-04 23:54:53 +08:00
推荐 GVA (gin-vue-admin)
charlie21
2022-07-04 23:59:55 +08:00
巴巴爸爸这头像可以
sciel
2022-07-05 00:04:30 +08:00
goframe +1
liuhan907
2022-07-05 00:14:07 +08:00
@ipwx
sqlalchemy 和 efcore 是唯二我认为能称得上是好用的 ORM ,其它的我觉得都不怎么好用-_-
FastAPI 糊 API 配合 sqlalchemy 确实也顺手,但是当你想写页面的时候,还是 blazor server 这种前后混合的糊起来快。只不过延迟一高就没法用了,非常遗憾。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864023

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX