达到什么标准就能够上线了?

背景前端

《程序媛的人生观》这篇文章中,一些朋友提出了本身的疑问:“看起来静儿的发版上线很不规范,为何一个大公司会容许这样的事情呢?”这是个很好的问题,值得我好好总结分享一下。程序员

 

在考虑上线标准以前,先考虑这么一个问题,你处于哪一个通道?面试

 

通道架构

前端通道、系统通道和后台通道的发版上线流程差异会很大。并发

前端通道:用户体验、视觉效果会占很大比重,通常来讲须要依赖专业人员进行人工测试。框架

系统通道:产品流程的理解和把控是其中的一个关键点。自动化测试基础上还须要人工测试进一步验证。分布式

后台通道:也是静儿所在的通道。业界有一个比较流行的理念:“开发人员应该测试本身的代码。”高并发

咱们团队中常常在说的一句话叫:“你不可能既当运动员又当裁判。”那怎么来解决这个冲突呢?工具

自动化测试。基础架构这边有专门的QA。他们大部分时间都在收集测试用例,开发自动化测试工具。学习

开发人员须要本身写单体测试,单体测试是在设计阶段,对功能进行建模阶段就写好的。因此对一个后台开发来讲,彻底能够在几分钟以内完成一套完整的上线前验收。

 

可否在几分钟以内就能够进行一套完整的上线前验收也和公司、部门或者团队的策略有关系。

 

策略

不知道有的朋友有没有注意到这个问题:有的公司虽然是大公司,可是门槛并不高。面试的时候着重考察面试者的理解力、沟通能力。若是背景不错,不会太卡技术这一块。固然,通常来说这种公司给的待遇也比较通常。

这并非说这个公司不够好,相反,正是由于公司有很是完善的流程把控,因此才摆脱了对成员我的能力的重度依赖。然而,通常来说,流程是用来保证底线的。一个注重成员成长的团队但愿的是可以激发成员的上限。

因此静儿所在的团队有这么一种策略:若是成员对本身的流程把握足够好,不出问题,上级会逐渐放宽对成员的监督。若是把控的很差,就会每天被盯流程。

这样的好处:作的好的成员的创造性能够充分获得发挥。对于上级自身,也能够抽身出来cover更大的事情。

 

《程序媛的人生观》这篇文章中,静儿用了一个很不专业的词:「临时决定」。从另外一个角度来看这个问题,什么事情是能够临时决定的?

 

 

定性

静儿之因此能够临时决定给序列化和反序列化接口新添加一个实现。这里面包含了两点信息:

1.这是添加实现,最最坏的状况下,实现出问题了,是能够开关切换切换回原来的实现的。

2.这不改变完成的功能,就是说这是一个重构。

在开发的时候「忍不住以为以前的代码写的太烂了须要重构」是一个工程师的基本素养。若是回过头看以为原来的代码写的不错,这是一个信号:同窗,你该看书学习了。

因此,对于新功能,静儿团队中是须要开会一块儿作DEMO验收演示的。可是对于重构,开发人员彻底有权利本身决定什么时候重构。由于功能不变,以前已有的自动化测试流程无需任何更改,彻底能够覆盖重构后的场景。

 

背后的技术支撑

「技术强就是任性。」这句话不错的,可是技术强不是指静儿我的的技术能力。而是我司的整套基础设施。这里就不谈咱们强大的DevOps这些东西。咱们就说《程序媛的人生观》这篇文章中,静儿提到终于用了整个晚上,到凌晨5点完成上线,静儿最后把线上到哪里了呢?

上到了线下环境。这里线下环境是什么概念呢。静儿所在的团队负责的是容器的生命周期管理。容器有给广大用户直接访问的线上环境。还有一个环境,业务部门是咱们的用户,他们用来测试、开发的容器,对咱们来讲是正式环境。若是线下环境出了问题,会影响咱们的用户满意度。

通常来讲,咱们的代码想上到线上环境,至少要常常两天的线下环境观察。这个观察是什么意思呢?

发版前写好发版checklist,在必定范围内周知说我要发版了,若是有问题请及时联系我。

而后采用灰度发布,每发版一组机器就要进行整个流程的检验,若是有问题最快的解决方法是将有问题的机器禁用。每组发版之间有强制的时间间隔,在间隔内不能发版下一组。

发布完成后QA那边的自动化工具又一次起了做用,它会自动模拟用户完成全部分支的操做。而后给出报告。

各方面都OK以后,周知说发版完成符合预期。次日一大早起来业务巡查,看看是否一切正常。

一天的午高峰和晚高峰监控数据是必定要看的。CAT、OCTO、业务大盘、监控大盘……

最重要的是及时看看是否有业务反馈问题。这都是在线下环境作的。

《程序媛的人生观》这篇文章中提到的那次发版,因为质量好。上周四发版线下,上到线上环境是这周一夜9点后开始操做。

 

从「技术好就是任性」这个再延伸一下,为何《程序媛的人生观》这篇文章中看起来编码很随意?这是由于设计架构作的好。临时决定给序列化和反序列化接口新添加一个实现。实现加在哪里了呢?每一个产品至少有两个服务组成:核心服务和非核心服务。咱们的MQ都是用来数据预处理用的,都是在非核心链路上。出问题了,半夜临时挂一下,就算有和静儿同样的程序员在半夜扩容测试机器。服务产生的最坏影响是数据反应有延迟😀

 

总结

昂贵的工具不必定能制做出更好的设计。--《程序员修炼之道》

相关阅读     

《程序经常使用的设计技巧》

《引入服务网格》

《到底多大才算高并发?》

《美团分布式服务通讯框架及服务治理系统OCTO》

《学会用数听说话-分布式锁究竟能够多少并发?》

《大话高可用》

《业务开发转基础开发,这三种「高可用」架构你会么?》

相关文章
相关标签/搜索