多人开发的大项目是什么样子的

自学前端的小白从来都是个人开发,最多上传一下git仓库。有一天如果我需要一个帮手,[好吧]组件化,让他不要动我的,开发完了再合。。。

前不久进入了某厂项目组,亲身体验了几次繁复的开发流程。感觉自己像一个茹毛饮血的原始人学习文明社会的规则。

开发前的准备

涉及真正的多人开发,多数人都是平等的开发者,“我为什么要帮你合代码,帮你调试”组长 更懒得管这些。所以用GIT来规范化流程,大家来维护一套代码,每个人为他的提交负责。那针对开源项目和企业项目两个场景,用git做库管理有什么区别呢?

开源项目
开源项目开发流程.png

开源项目个人开发者没有操作项目代码库master的权限,如此操作在项目代码库每个人的每一次优化只有一次记录,记录树比较清晰。

企业项目

企业项目开发流程.png

企业项目个人开发者有权限操作master分支,特点就是每一次优化的和并提交将其中的无用commit都携带(比如test1、test2)。master的权限带来巨大改变,因此需要一些约束。在master分支git merge 分支a的时候一定要慎重,因为master的代码随时可能被张三李四等人获取,如果蕴藏一个影响业务逻辑的bug。。。。对于无用的commit要在merge前rebase清理干净。

测开利器CI

CI全称Continuous Integration,中文名持续集成,还是不知道是啥。它主要分为自动化构建和单元测试,两部分,我主要体验了自动化构建。我们拿到了一个项目代码要下载依赖、dev开发、build打包。。。这是在我们的开发电脑上,如果是一台素昧平生的测试服务器呢?OK,远程连接然后做这些,那前后端联调要部署很多次的,如果是项目上线面对服务器群呢?CI可以帮我做这些,我需要的就是修改配置文件,来告诉CI我这次想在远程对项目做什么(比如更新哪个目录的内容、静态资源打包吗?映射到本地吗?),然后git push 一下,CI就开始工作了,中间如果出现错误CI主动发邮件提示我。

发布上线

这几天遇到的名词,总结一下。
全量发布:就是我有20台服务器,20台服务器都发布。
灰度发布:就是我有20台服务器,发两台体验一下,比例由大家讨论指定。
无损发布:这是比较难解释。我用银行柜台举个例子。银行正常运转,每一个柜台都有人排队,此时经理要找每个柜员谈重要的事(比如季度考核)。所有柜员一起溜了,银行就关门了。需要一个平滑的策略让柜员逐个撤出前台,无损发布就在做这个。A柜员前面不要增加排队的人了,处理完目前几个人的业务就可以撤了。
还有关于发布顺序的不同场景的处理不同:
要增加一个按钮,后台也增加一个服务:要确保用户看见按钮的时候是可以点的,所有后台服务先上线,前端服务后上线。
要删除一个按钮,后台也下线一个服务:要确保用户看见按钮的时候是可以点的,所有前端服务先上线,后台服务后上线。

静态资源更新

下面的部分和工作流程没有关系,只是介绍静态资源更新变成现在这个样子的原因。

index.60a31.js中间的一串字符是什么?干什么用?

  1. 茹毛饮血

<script src="//xxx/xx/index.js"></script>
上面的语句再常见不过了,我将有这句的html文件放在云服务器上,做好静态资源分发,index.js就到手了。
然而对于公司(要恰饭的),每一次用户请求都发送一次,不能这么挥霍宝贵的带宽,因为运营商是按峰值收费的。

按峰值收费.png

解决这样的问题运用http缓存就好了。把一次完整的请求变成协商缓存304或者直接变成本地缓存的200,过期时间足够长。
那么怎么更新资源呢?

  1. 刀耕火种


    image.png

    每一次在我们的资源后面加上版本号就好了,那么问题是如果三个文件我只改了一个,要全部更新吗?要解决这种问题,必须让url的修改与文件内容关联,也就是说,只有文件内容变化,才会导致相应url的变更,从而实现文件级别的精确缓存控制。因此利用 数据摘要要算法 对文件求摘要信息,摘要信息与文件内容一一对应,就有了一种可以精确到单个文件粒度的缓存控制依据了。好了,我们把url改成带摘要信息的:


    image.png
  2. 农业文明
    大型的互联网公司是有CDN保管静态资源的,而且是CDN网络(想象通信分级网络、计算机网络,长得差不多)。而有的CDN是不识?后面的内容的。而且后面会提到CDN静态资源更新,有的运营商手里把持CDN,他的CDN还总不更新。


    image.png

    所以终于变成了index.60a31.js这还带来了另外一个好处,index.js有能力变成多个版本,老用户也能找到合适他的资源。

问:那CDN上的东西不是越积越多,清一下换成新的呗?
答:会越积越多,但是存储较带宽还是很廉价的。我们一般不尝试删CDN的东西,因为有人需要它,一个js css 才多大。

CDN更新策略

前面说CDN有一组网络,最上面的是源CDN,下分各级
回源策略:用户访问时逐级上查,向源的方向探查,获取更新。
推送策略:源CDN发通知,使各级CDN来获取更新(大版本会如此)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容