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

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 模式,可能小公司也没有。只是抛砖引玉,希望大厂同学不吝赐教,分享一些好的东西,让小公司的同学也都有机会了解一些更高级的东西。毕竟网上宣传的技术不一定好用,还是得真的在环境里面用过才有发言权。

8744 次点击
所在节点    程序员
62 条回复
xylophone21
2021-12-17 09:43:07 +08:00
1 为什么不在 PR 里做呢?先推到个人分支,然后在个人分支里检查,检查通过再找人工走读,最后 merge
WhereverYouGo
2021-12-17 10:12:32 +08:00
歪个楼,14 15 楼是情头? 😶
WhereverYouGo
2021-12-17 10:12:59 +08:00
@sweetsorrow211 #22 说错了,是 15 16 楼
SmiteChow
2021-12-17 10:23:03 +08:00
只要技术目标是解决规模化(业务或人力)问题的,对小企业来讲都没用。
Austaras
2021-12-17 10:40:35 +08:00
第一点属实没必要,你们没有内部开发平台和 CI 流水线的吗,在本地跑太耽误事了
Austaras
2021-12-17 10:41:21 +08:00
只要 merge 到 master/dev/online 之前保证 CI 能过不过不让合不就完了
Chism
2021-12-17 10:43:39 +08:00
最近不少这种镜像帖子。。
caixiangyu17
2021-12-17 11:00:42 +08:00
@wzzzx 其实是本地开发,大多数都是脚本的功劳,docker 的目的是尽量少依赖本地环境。让新人或者是换新电脑能够快速搭建开发环境。
比如我自己的小项目,每次换新电脑,只需要安装 nodejs (如果只跑也可以不用,就相当于部署在本机而已,用 docker 启动,不过开发 node 后端肯定还是要的),docker 和 java (我用的工具是 kotlin 写的,叫做 batect ,同事开发,现在几乎全公司推广)。之后所有需要的比如启动数据库,跑 linting ,unit test ,api test ,各种安全检查。都可以用命令启动配置好的不同的 docker 镜像,在里面执行。当然这些只用脚本也能完成,但是不同的 task 依赖的工具你得一点一点装,mac 上还好点 brew install 比较方便,但也得一个一个装,这样才能保证所有 task 都能运行,windows 上就更加麻烦了。
所以这东西就是前期配麻烦,弄好了之后,以后每个项目都类似,基本这些 task 每个项目都需要,用起来很方便
caixiangyu17
2021-12-17 11:09:44 +08:00
@Austaras 我反而觉得第一个挺重要,我之前的公司就是小公司,pipeline 挺全的,有各种测试,但是如果挂了就会 block 后面人的 build 。如果不修好,后面人的代码就没法发布到 test server ,就没法让 QA 测。但是因为也不是 tdd ,只是想起来哪里需要 unit test 就加哪里,所以经常有人不跑 unit test 就提代码,然后也不看 pipeline 挂了没有。所以每次后面的人还要去看是谁 block 了 pipeline ,发消息让他改。一个小时你的代码能上 test server 就不错了,十分影响效率。但是有 prepush 之后,push 前强制跑,跑不过不让 push ,虽然浪费点时间,但是我们都是每天下班前 push ,或者 push 的时候就当休息,喝点水聊聊天,也并不影响什么。但是解决的问题确是实实在在的。
Canon1014
2021-12-17 11:15:57 +08:00
@sweetsorrow211 #22 歪个楼,你和 20L 也有那味了
asanelder
2021-12-17 12:44:24 +08:00
相比小公司的那个贴子, 大厂的同学都好吝啬啊~~~
caixiangyu17
2021-12-17 12:46:04 +08:00
@asanelder 可能大厂的同学没空逛 v 站吧
Mirage09
2021-12-17 12:51:14 +08:00
说个跟技术无关的,internal wiki
Austaras
2021-12-17 13:00:37 +08:00
@caixiangyu17 用 git workflow 每个人都有自己的分支不就完事了,然后测试服务器也做好分支切换
rouzip
2021-12-17 13:18:36 +08:00
lynx 类前端体验多端开发(但是这算是好技术嘛 orz
caixiangyu17
2021-12-17 13:22:08 +08:00
@Austaras 的确如果你们 github 上配置了每个分支在 pr 时必须跑过 pipeline 才能 merge ,的确可以防止这个问题。不过我们是 tbd ,所以没有 branch ,需要 prepush
rioshikelong121
2021-12-17 13:37:16 +08:00
使用 Proxy 来在本地连接 /切换多套环境.
xy90321
2021-12-17 13:48:13 +08:00
对于传统 IT 企业的巨型屎山项目来说 pipeline 真的很难运转起来。就算 UT 都能过,但是跑一次要半小时以上谁受得了😅
AmberJiang
2021-12-17 14:07:37 +08:00
@Canon1014 哈哈哈哈 歪个楼 你也发现了 有两组情头🤣
WhereverYouGo
2021-12-17 14:07:53 +08:00
@Canon1014 #30 😂 淦

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

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

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

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

© 2021 V2EX