大厂同学来分享一下你们在用,但小公司可能没有用的好技术吧

2021-12-17 07:14:29 +08:00
 caixiangyu17

有很多小公司,因为前期就是为了快速出产品,所以什么东西都从简。大厂的同学们来分享一下,你觉得虽然有点耗费成本,但是很有必要的技术或者是开发理念吧。我先从自己经历说两个抛砖引玉

  1. git hooks 里面的 pre-push 。我们现在是把 pipeline 上的几乎所有检查都放在 pre-push 里面,这样就可以很大程度杜绝有人 push 代码前不跑 unit test ,之后也不检查 pipeline 是否挂掉。虽然 push 一次要十多分钟,不过每天大概一到两次 push 也就够了,而且有一个状态缓存的机制,如果有一些 test 的 coverage 没有动过,并且上次跑过了,就不用再次检查。所以整体也是可以接受的。
  2. 跨系统开发环境。所有的开发环境都配置好相关的 docker image 。写好脚本,里面有各种 task ,什么 debug ,lint ,unit test ,secret check ,vulnerability check 都可以不考虑本地环境,在 docker 里面执行。这样对新人极其友好,配置环境只需要下载 IDE+docker 。之后只要 clone 代码就能跑。同样这些可以放在前面说的 pre-push 以及 pipeline 里面直接使用。我们现在用的是 batect ,半内部的一个工具,可以帮助快速配置管理 docker 。

其实还有很多,比如 TDD ,UI test(automation + screenshot),微服务+bff 模式,可能小公司也没有。只是抛砖引玉,希望大厂同学不吝赐教,分享一些好的东西,让小公司的同学也都有机会了解一些更高级的东西。毕竟网上宣传的技术不一定好用,还是得真的在环境里面用过才有发言权。

9023 次点击
所在节点    程序员
62 条回复
ericgui
2021-12-17 07:23:52 +08:00
“跨系统开发环境” 我司这么大都没有

我们只能用 windows 写前端,你感受一下
caixiangyu17
2021-12-17 07:28:14 +08:00
@ericgui Windows 的 docker 很蛋疼,不过好像也可以解决,我们团队里面也有一些人用 windows ,之前是又一些抱怨,不过貌似花时间解决了。
murmur
2021-12-17 07:57:29 +08:00
第二个还真的很蛋疼,不是有脚手架么,非得整 docker
vruzo
2021-12-17 07:59:03 +08:00
我司虽然上市公司…不过这些都没有,全靠人工测,对这些还是蛮感兴趣,不过现有流程不支持尝试
MrGba2z
2021-12-17 08:07:11 +08:00
; Monorepo + 索引 /搜索 + 唯一版本的依赖
唯一版本依赖: 1. 坏了有别人也会发现 2. 不用关心用哪个依赖, 适配最新就行.
Monorepo: 好抄 /读类似系统源码, 知识共享, 方便 debug
; Intention-based 持续部署
描述你想要的生产环境是怎样的, 系统持续部署你定义的生产环境.
; 不算技术但同样重要: Blameless culture (出了故障不应该责备任何人, 重要的是如果设计 /改进系统来防止有类似的事情继续发生)
caixiangyu17
2021-12-17 08:35:27 +08:00
@murmur 在有些情况还是很有意义的。举个例子,一个后端项目,肯定是要有数据库吧,那么你作为开发需要先在本机安装配置数据库吧,有些人写脚本可能喜欢用 bash ,有些人可能用 python ,如果是 windows 环境,这两个你都需要配置才能让他运行吧。本地测试数据库和接口测试数据库最好分开吧,这也需要配置。但是如果用 docker ,至少开发环境,你只需要考虑你自己的主开发语言环境,什么数据库,什么脚本语言,通通不用配置。我们的项目现在基本上可以说一个新人来了,装个 java ,装个 docker ,装个 idea 。不算下载时间,配置十几分钟就能跑起来。我相信还是有一些项目新人来了,各种库报错,各种配置不知道怎么改,新人自己又未必能解决,问别人又可能要等,来了一整天都运行不了的情况还是有的。至少我现在回想我以前的公司,就有这种情况。
ragnaroks
2021-12-17 08:42:59 +08:00
windows 上的 docker 确实蛋疼,官方支持版是个虚拟机,企业版是 docker EE (WCOW) 而且有重大 BUG
sagaxu
2021-12-17 08:47:48 +08:00
后端项目,本地不运行,写好了发布到测试环境自测。因为很多 service 本地没有,只能在测试环境调用,本地要跑起来要 mock 太多的东西了。
JsonTu
2021-12-17 08:50:37 +08:00
这两天在研究 docker 跨主机通讯,使用 weave net 做 docker 网桥,服务还得主备,哎
wzzzx
2021-12-17 08:51:09 +08:00
这个跨系统开发能力是不是每个项目一个 docker ?可以展开说说嘛?我很有兴趣😂
labulaka521
2021-12-17 09:04:49 +08:00
小公司,后端用 grpc ,然后用 envoy 转换 http 和 grpc ,前端根据后端的 proto 生成 api 直接调用
sadfQED2
2021-12-17 09:08:24 +08:00
Clickhose,tidb 相见恨晚,去他妈的 mysql
tomczhen
2021-12-17 09:11:21 +08:00
我是来酸的。好了,好了,知道大厂有牛逼的高级工具了。
一不说具体的 workflow ,二不说工具基本原理,除了让小公司的同学知道大厂有个牛逼的高级工具之外有啥用处?
plko345
2021-12-17 09:16:00 +08:00
请教 pre-push 没太明白,不先 push 是怎么触发 pipeline 的
tomczhen
2021-12-17 09:18:34 +08:00
@plko345 本地 git hook ,触发本地的检查。远程仓库也有 hook ,都能达到一样的目的。
https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90
nicktogo
2021-12-17 09:19:42 +08:00
想了下,挺喜欢公司的一些工具的,可能其他公司也有:
1. logger ,一条龙从头到尾,从写入,储存,数据分析工具全包了,只要自己定义 fields ,在代码里 call 就好了。
2. Async task scheduler ,定时任务。
3. 远程服务器开发,要有的时候 claim 一个服务器,VS code 连上,master 代码都已经准备好了,服务器就是一个完整的应用实例,实际环境有的这都有(至少看起来是,怎么搞的不太清楚)。 即使没有 commit 也自动备份代码,这个好用,可以恢复到任意其他的服务器上。
4. VS code 用 UI 操作代码分支,支持各种操作,方便。命令行已经忘光。
5. 全公司用一个代码库,所以可以大范围地代码搜索,不会写 /用,搜一搜就有大量例子。

。。。
sdwgyzyxy
2021-12-17 09:22:32 +08:00
windows 主要是 volume 导致的体验不好,如果用 sftp 本地开发,就不会有这个问题,想使用 volume 的话用 ubuntu ,我们也是搞了一键启动的 docker-compose ,而且很多基础镜像都备份到自己的阿里云账号下了,一直使用官方的要小心他们哪天改东西,然后项目就出一些莫名其妙的问题。
superchijinpeng
2021-12-17 09:27:59 +08:00
Kyuubi
superchijinpeng
2021-12-17 09:28:05 +08:00
Iceberg
sdwgyzyxy
2021-12-17 09:29:07 +08:00
@sdwgyzyxy 另外,我不是大厂的,技术就三个人,都是瞎鼓捣的一些东西。

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

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

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

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

© 2021 V2EX