【NCTS峰會(huì)回顧】京東零售任廣印:文化建設(shè)踐行DevOps-Etsy持續(xù)交付之道
2019年10月26日,由Testin主辦的第二屆NCTS中國云測(cè)試行業(yè)峰會(huì)在京召開,此次峰會(huì)以“AI+未來”為主題,匯聚來自國內(nèi)外測(cè)試領(lǐng)域的知名專家學(xué)者、領(lǐng)先企業(yè)決策者、高層技術(shù)管理者、媒體從業(yè)者等,共同探討高端云測(cè)試技術(shù),幫助測(cè)試從業(yè)者了解最前沿行業(yè)趨勢(shì),及最新的行業(yè)實(shí)踐。
會(huì)上,京東零售技術(shù)與數(shù)據(jù)中臺(tái)測(cè)試架構(gòu)師任廣印做《文化建設(shè)踐行DevOps-Etsy持續(xù)交付之道》主題演講。任廣印指出,“在Etsy,工程團(tuán)隊(duì)推行了各種文化建設(shè),幫助員工成長,助力公司成功,主要體現(xiàn)在四個(gè)方面:
- 放權(quán)和信任;
- 集體責(zé)任;
- 持續(xù)的學(xué)習(xí)改進(jìn);
- 相互督促,結(jié)伴而行。”
以下為任廣印演講實(shí)錄:
大家好,我是來自京東零售的任廣印,聽了陸怡頤老師的發(fā)言,有點(diǎn)小小的不贊同,陸怡頤老師剛剛說了我們測(cè)試行業(yè)這十多年并沒有改變,其實(shí)我們還是能感受到很多顯著的變化的,至少,十年前我做測(cè)試的時(shí)候每天5點(diǎn)半就能下班了,不是嗎?那么我們現(xiàn)在都是幾點(diǎn)呢?技術(shù)改變了,業(yè)務(wù)也改變了,那么,我們的能力和效率是否也對(duì)等的跟上了呢?
我今天給大家分享的主題是《文化建設(shè)踐行DevOps-Etsy持續(xù)交付之道》,提起DevOps我們往往會(huì)想到Amazon、Microsoft、Google、Netflix、AirBnb等先行者,Etsy其實(shí)也是先行者其中之一,可能大家都不知道它,可能因?yàn)檫@家公司的商業(yè)模式比較專,導(dǎo)致大家很少知道它。這篇分析報(bào)告出自我和我的小伙伴之手,在線下,我經(jīng)常會(huì)和朋友們做一些相應(yīng)的案例分析活動(dòng),從中學(xué)習(xí)這些公司的好的案例,見識(shí)其中的轉(zhuǎn)型契機(jī)和成長之路,不斷學(xué)習(xí)并提高認(rèn)知。
我今天要講的內(nèi)容一共分為5個(gè)部分,公司介紹、工程文化、商業(yè)模式、技術(shù)變革、質(zhì)量保障,是一篇2-3小時(shí)的案例分析報(bào)告,因?yàn)榻裉斓姆窒頃r(shí)間只有40分鐘,到場的主要是測(cè)試領(lǐng)域的小伙伴們,為此我調(diào)整了一下講述順序,以便將大家最關(guān)心的內(nèi)容傳遞給大家。推薦一本書給大家《Effective DevOps》,這本書其中一個(gè)作者就是來自Etsy公司的。
首先我給大家分享一下關(guān)于“質(zhì)量保障”這個(gè)話題。
在Etsy,質(zhì)量保障團(tuán)隊(duì)是這樣的,鼓勵(lì)大家保持不斷的學(xué)習(xí)、提高、交流。整個(gè)公司也很看重工作和生活的平衡,鼓勵(lì)大家高效的工作,公司不推崇加班,二是推崇在工作中更聚焦,把精力放在最該做的事情上。通過持續(xù)的學(xué)習(xí),提升測(cè)試技能,改進(jìn)測(cè)試策略,根據(jù)項(xiàng)目情況進(jìn)行資源分配,一個(gè)質(zhì)量小組通常會(huì)包含PQ分析、QA負(fù)責(zé)人、項(xiàng)目經(jīng)理、測(cè)試開發(fā)等角色,這也正如剛剛陸怡頤老師所說的現(xiàn)在的一個(gè)趨勢(shì),測(cè)試開發(fā)工程師的隊(duì)伍正在逐步的壯大。
在Etsy,都測(cè)哪些內(nèi)容呢,我們常見的回歸測(cè)試、開發(fā)階段的測(cè)試、以及為了測(cè)試范圍、覆蓋率、測(cè)試結(jié)果趨勢(shì)等的數(shù)據(jù)而開展的一些測(cè)試活動(dòng),在我們的身邊也會(huì)有更多的外包資源,這些工作跟我們現(xiàn)在做的是比較相似的,但是這些事情在Etsy是不做的,在Etsy是不做這樣的測(cè)試的。那么大家可能會(huì)問,這些東西跟我們都很類似的事情,我們也覺得很正常的事情,為什么在Etsy并不是這么做的呢?那么在Etsy都是怎么做質(zhì)量保障的呢?
在Etsy,新功能和新產(chǎn)品作為測(cè)試重點(diǎn),會(huì)有對(duì)應(yīng)的探索性測(cè)試,集成測(cè)試、跨平臺(tái)的兼容性測(cè)試,尤其會(huì)把測(cè)試精力聚焦在那些對(duì)用戶有影響的功能和改動(dòng)上。
公司的商業(yè)模式的核心就是和社區(qū)聯(lián)系緊密,同時(shí)會(huì)及時(shí)的去響應(yīng)去解決。針對(duì)不同角色的定義和培養(yǎng)上也是公司的一個(gè)很重要的投入,讓專業(yè)的人做專業(yè)的事情,正確的將事情做好,少返工,這本身就是質(zhì)量的一層保障。從需求或者從一個(gè)想法的產(chǎn)生,到最終它的上線運(yùn)營,每一個(gè)環(huán)節(jié)都能左右最終的質(zhì)量,也就是說每一個(gè)環(huán)節(jié)的每一種角色,這個(gè)角色的專業(yè)度就能直接影響了這個(gè)軟件、這個(gè)服務(wù)在這個(gè)生命周期里它給下游交付的最終質(zhì)量。當(dāng)然了,貫穿始終的就是一些最佳實(shí)踐以及一些好的學(xué)習(xí)和成長,以及一些改進(jìn)。價(jià)值驅(qū)動(dòng)、目標(biāo)的一致性和與社區(qū)的緊密連接,這三部分也是我們團(tuán)隊(duì)的工作核心要素。
接下來看看這種文化是如何體現(xiàn)于工作中的。在生產(chǎn)環(huán)境我們同樣會(huì)做大量測(cè)試的,以此來消除可能在部署工程中出現(xiàn)的問題,正常來說我們做了很多測(cè)試,在部署到生產(chǎn)之后不應(yīng)該再出問題,但現(xiàn)實(shí)是各個(gè)模塊或改動(dòng)都是測(cè)試通過的,集成到了一起問題就出現(xiàn)了。無指責(zé)和無恐懼的文化,分析問題,查明根因,不再讓重復(fù)的問題再出現(xiàn),是我們的目的,而不是定責(zé)。協(xié)作文化、高效的反饋,每個(gè)員工的職業(yè)發(fā)展通道,激勵(lì)和獎(jiǎng)勵(lì)機(jī)制,各種途徑讓員工發(fā)揮出各自的能力,自治、高效彼此互助。
為什么我們會(huì)說在這個(gè)公司這樣的質(zhì)量保障可行呢?很好的持續(xù)集成、持續(xù)部署流程,基于用戶研究的原型設(shè)計(jì),在一個(gè)服務(wù)或者一個(gè)產(chǎn)品推出的時(shí)候做的A/B test,持續(xù)和用戶進(jìn)行溝通確認(rèn)和采集反饋,通過大量的實(shí)驗(yàn)來證明我們這樣做是不是達(dá)到了這樣的效果,支持實(shí)踐,“復(fù)用一切有效的方案”,通過信息傳遞降低試錯(cuò)的成本。
再說一些公司的“那些文化”。 說起文化,大家有的時(shí)候也會(huì)想什么是文化?什么是好的文化?什么是不好的文化?或者我們也可以理解成大家的一種習(xí)慣,或者大家都接受的一種習(xí)慣,這個(gè)習(xí)慣有可能能夠幫助公司成長或者說能夠幫助公司招攬更多的人才,當(dāng)然一些不好的文化也會(huì)導(dǎo)致人員的流失或者阻礙技術(shù)的發(fā)展。
工程師文化,簡言之,我們可以理解為自由和效率;如果我們是不自由的,至少,我們?cè)谧鍪虑榈臅r(shí)候會(huì)限制我們的思想,如果不是對(duì)效率的提升,那么我們這個(gè)創(chuàng)新可能就很不接地氣,那么我們?yōu)槭裁醋鏊兀孔杂珊托饰覀冇滞录?xì)分了一下,比如自由,我是一個(gè)自我驅(qū)動(dòng)的,比如,靈活的工作時(shí)間和工作地點(diǎn),關(guān)于自我驅(qū)動(dòng)這件事情,包括工程師文化大家也曾有過一些討論,當(dāng)我覺得這個(gè)事情有價(jià)值或者大家認(rèn)可的時(shí)候,我是一個(gè)自驅(qū)的模式,會(huì)努力的把它做的更好。但是給我各種要求,“必須要996、必須不能幾點(diǎn)回家就在這兒坐著好好干活”,這個(gè)時(shí)候不但沒有讓我好好干活,反而影響了我的自驅(qū)性。工作效率體現(xiàn)在什么地方呢?曾經(jīng)我待過的一家公司,老板說“休假不用和我請(qǐng)示,因?yàn)槟阏?qǐng)示了我也會(huì)批準(zhǔn),那就無需審批,但你需要發(fā)個(gè)郵件讓干系人知道。同時(shí),信任是一種契約,不要打破”。
“Code as Craft”這是公司最核心的文化。
Etsy的目標(biāo)是讓那些手工藝人,通過他的手工來給這些手工藝人提供交流和手工藝品買賣的環(huán)境,我們工程師也是,我們創(chuàng)造了這個(gè)工程師,并且通過哪些事情來很好的貫穿于我們的生活呢?這個(gè)公司就定義了“code as craft”。“code as craft”在這個(gè)公司也是一個(gè)活動(dòng),是每半個(gè)月舉行的一個(gè)活動(dòng),這個(gè)活動(dòng)會(huì)邀請(qǐng)業(yè)界的一些大咖專家或者公司內(nèi)部的大咖進(jìn)行演講,通過這個(gè)過程我們使整個(gè)公司在提高,去交流,并且如果有好的方案大家也能產(chǎn)生一些更深層次的合作等等。像我們今天這個(gè)活動(dòng)的意義也都是一樣的,我們先看一下這個(gè)公司邀請(qǐng)的這些大咖們,最右邊的圖,其中穿格子衫的就是這個(gè)公司的CEO查德迪克森,正是他的到來,為Etsy建設(shè)了這一些列的工程文化。
“無指責(zé)的問題分析”文化,我們很多公司都在做各式各樣的,比如,線上出了問題我們要復(fù)盤,或者出現(xiàn)重大的事故我們要分析,我們分析問題的時(shí)候很容易的牽扯到了責(zé)任,我們分析這個(gè)問題本身,我們是想知道這個(gè)事情是怎么產(chǎn)生的,而不應(yīng)該關(guān)注是誰、他為什么做這樣的事情。我們分析的時(shí)候就是通過這種文化的踐行,我們能夠更好的挖掘出這個(gè)問題本身是怎么產(chǎn)生的,為什么我們不關(guān)注的“是通過誰來制造了這樣一個(gè)問題”呢,因?yàn)檫@個(gè)問題本身,它可能是系統(tǒng)設(shè)計(jì)的問題或者說各種深層次的問題,只是這個(gè)人他遇到了而已,如果他不遇到這個(gè)問題有可能就是你本人遇到這個(gè)問題。所以說公司一直在提倡一種無指責(zé)的問題分析,公司也是有一個(gè)開源的系統(tǒng),這個(gè)系統(tǒng)是專門干這件事情的,目的就是,不要讓錯(cuò)誤可以發(fā)生,我也可以接受,但我不接受重復(fù)的問題再次發(fā)生。
針對(duì)這個(gè)問題公司真的做了一件三只袖子的毛衣,其實(shí)在我們的印象中,我再怎么腦殘也不會(huì)做出一件三只袖子的毛衣,但是他會(huì)把三只袖子的毛衣頒發(fā)給一些犯了錯(cuò)誤的員工,犯了什么錯(cuò)誤的員工呢?可能這個(gè)員工犯的錯(cuò)誤是最令人驚訝的錯(cuò)誤,而不是說這個(gè)人是最糟糕的那個(gè)人。
“工程輪崗”文化,最開始在2010年的時(shí)候,工程輪崗項(xiàng)目是每年的一些特定的時(shí)刻,可能運(yùn)維就會(huì)很累,這個(gè)時(shí)候運(yùn)維的人手就不足,公司就開展了這樣一個(gè)活動(dòng),大家都去學(xué)習(xí)怎么做運(yùn)維,在運(yùn)維很忙的時(shí)候,大家能去搭把手幫幫忙。后來公司發(fā)現(xiàn)這樣一個(gè)活動(dòng)不僅僅在運(yùn)維層面,我們還可以在所有的工程師的崗位上做這樣的事情。我們通過這個(gè)活動(dòng)能夠讓全公司,讓大家更好的產(chǎn)生同理心,更好的去理解別人的工作。整體提高大家的協(xié)作互助的意識(shí)。
最后關(guān)于質(zhì)量文化,這個(gè)公司像陸老師說的一樣,單元測(cè)試,代碼的測(cè)試覆蓋率是很重要的,當(dāng)我們看到代碼覆蓋率的時(shí)候大家就想到了一點(diǎn),比如做了很多的單元測(cè)試,我的覆蓋率很好,但是如果一個(gè)工程不做單元測(cè)試會(huì)產(chǎn)生什么樣的情況呢?并不是說僅僅的缺乏單元測(cè)試而已,如果不做單元測(cè)試就會(huì)發(fā)現(xiàn)有些代碼,甚至有些函數(shù)幾十行甚至幾百行的函數(shù)都有,其實(shí)這樣的工程它的可測(cè)試性是非常差的,我們通過單元測(cè)試去讓大家把可測(cè)性做的更好。
這個(gè)公司就是多樣性和包容性的,多樣性是因?yàn)楣具\(yùn)營著一個(gè)社區(qū),這個(gè)社區(qū)什么樣的人都有、什么樣的情況都會(huì)發(fā)生,所以,在技術(shù)崗、研發(fā)崗以及管理層面可能也都會(huì)有不同的情況,比如有不同的性別、不同的膚色、來自于不同地域的人,通過公司的包容性、多樣性的隊(duì)伍,創(chuàng)造一個(gè)更友好的環(huán)境,鼓勵(lì)大家的創(chuàng)新和協(xié)作,以及一些想法上的交流。公司的6個(gè)管理層只有2個(gè)是男性。
我們現(xiàn)在進(jìn)入第三章,關(guān)于公司簡單介紹一下。左圖是Etsy的創(chuàng)始人羅伯·卡林,右側(cè)的是查德迪克森也是靈魂人物。公司的創(chuàng)業(yè)宣言:“為愛手工制品的人們提供交易和交流場所”。如圖,這是公司幾位CEO。最核心的靈魂人物,查德迪克森,2008年的時(shí)候他以CTO的身份加入公司,到2011年他成為了這個(gè)公司的CEO。在他在的這段時(shí)間,公司也起到了很大的變化,主要是工程上面,2017年西爾弗曼上臺(tái)。羅伯階段公司誕生了,到查德迪克森階段提高了它的能力,到他壯年的時(shí)候空有一身本領(lǐng)但是不知道本領(lǐng)怎么變現(xiàn),這時(shí)候西爾弗曼來了,自從他上臺(tái)之后整個(gè)公司股價(jià)一直在向上爬升,一直到現(xiàn)在。
最后再跟大家說一下公司工程文化的演進(jìn),公司主要有4大項(xiàng):1、放權(quán)和信任;2、集體責(zé)任;3、持續(xù)的學(xué)習(xí);4、相互督促結(jié)伴而行。
它的工程演進(jìn)史,公司在2005年6月18日成立,發(fā)展到2008年的時(shí)候,公司從4個(gè)人慢慢成長到了三、五十人,這時(shí)候也是出現(xiàn)了溝通不暢、每個(gè)部門各自為政這樣的情況,到了2008年的時(shí)候,公司覺得這樣不行了,管理層做了調(diào)整,由瑪麗亞·托馬斯和查德迪克森兩位高管,一個(gè)負(fù)責(zé)運(yùn)營,一個(gè)負(fù)責(zé)工程,工程文化的演進(jìn)從那時(shí)候一直到現(xiàn)在,開始了他們的DevOps之旅,從每日的站會(huì),把溝通問題先解決掉,然后建立一種好的協(xié)作機(jī)制。演進(jìn)之路分了5個(gè)部分,比如,那個(gè)時(shí)候網(wǎng)站穩(wěn)定性不夠好,所以做了一些改進(jìn),引入了持續(xù)部署,當(dāng)時(shí)公司的一些不好的技術(shù)也都廢棄掉了,包括數(shù)據(jù)庫層面的改造。
關(guān)于公司的工具文化,簡言之,工具是我們很多文化、很多價(jià)值的體現(xiàn),工具只是一部分,只是一個(gè)窗口,通過這些工具的建設(shè)可以把一些不確定的事情確定下來,大家不斷的持續(xù)的優(yōu)化、迭代工具的情況。
其實(shí)剛剛我們第一點(diǎn)說了,質(zhì)量保障之道歸根結(jié)底為什么能夠做到這么好?這才是核心,就是公司的持續(xù)集成、持續(xù)發(fā)布以及持續(xù)部署,其實(shí)就是一個(gè)階段一個(gè)階段來的,也就是解決了我們產(chǎn)品快速的創(chuàng)新,最重要的是解決掉平均的恢復(fù)時(shí)間,因?yàn)榇蠹谊P(guān)注工程能力的話,MTTR是非常重要的一個(gè)指標(biāo)。
大家也能看到這張圖,是一個(gè)持續(xù)的流水線,從最開始的開發(fā)、集成到最后測(cè)試階段,到最后的上線,也就是說每一個(gè)階段往下游走時(shí),哪一環(huán)節(jié)有問題都不會(huì)順利的走到下一個(gè)環(huán)節(jié)。
也就是在告訴我們這樣的情況是很好的,我們最后看到的東西都是測(cè)試通過的,都是質(zhì)量達(dá)標(biāo)的,當(dāng)我們很多條流水線,很多條任務(wù)都是這樣做,都是沒有問題的,為什么最后生產(chǎn)的時(shí)候還是出了問題呢?是說我沒有做單元測(cè)試嗎?還是說我的覆蓋率不夠?也許是數(shù)據(jù)的問題,也許是配置的問題,是測(cè)試環(huán)節(jié)或者集成環(huán)境跟生產(chǎn)環(huán)境的容量與負(fù)載的不匹配導(dǎo)致的嗎?如何解決這樣的問題,我們努力的去測(cè)試,努力的去提高,就能避免這樣的問題嗎?顯然是避免不了的。既然避免不了,如何保證我們的質(zhì)量呢?首先提及兩個(gè)概念,也就是剛剛提到的MTTR還有一個(gè)是MTTD。
在我們上線之后,還是要做很多的監(jiān)控工作,像每個(gè)公司都有一些預(yù)警/報(bào)警,也就是說最后綠色的這一部分,上線之后綠色部分要做到的是什么,就是在提升我們的MTTD,也就是說,當(dāng)問題產(chǎn)生的時(shí)候我第一時(shí)間就要被通知到,這樣我才能在第一時(shí)間去采取對(duì)應(yīng)的措施。
假如我們一個(gè)月要部署的代碼行數(shù)是5萬行的話,如果按照之前的模式,不引入持續(xù)部署的機(jī)制,有可能是開發(fā)了一整月,到最后的時(shí)候5萬行代碼一起上線,好的情況就是什么問題都沒有,不好的情況就是出現(xiàn)了問題,那么一旦出現(xiàn)問題我們一次性Deliver了5萬行代碼,修復(fù)時(shí)間會(huì)很長。如果用流水線的方式做的話,拆很多很多個(gè)流水線去發(fā)布,這個(gè)時(shí)候我們感知到錯(cuò)誤的可能性是非常高的,而且我們每次的發(fā)布可能就幾十行,至少不超過一百行的代碼,這樣發(fā)生了問題,很快的就知道問題所在,很快的就可以解決了它,很快的再去迭代發(fā)布,這個(gè)問題就沒了。也就是說我們MTTR的問題。這個(gè)公司每次發(fā)布部署的東西很多,部署的頻度很低,一周部署兩次左右,現(xiàn)在一天要部署幾十次或者更高,可能對(duì)于大家而言互聯(lián)網(wǎng)行業(yè)一天部署50次簡直太少了,但是對(duì)于這個(gè)公司而言它這幾年的變化還是很快的,而且按照這個(gè)公司目前的工程文化的發(fā)展持續(xù)學(xué)習(xí),即便將來公司做的很大了,不像現(xiàn)在八九百人的規(guī)模,更大了,我相信也依然會(huì)做的很好的。
公司整個(gè)架構(gòu)演進(jìn)就是從2007到2011年的架構(gòu)演進(jìn),也就是到現(xiàn)在這個(gè)公司主要的開發(fā)語言還是用的PHP,整個(gè)公司的技術(shù)演進(jìn)時(shí)間軸如圖,在不同的階段引入了不同的技術(shù),隨著人員的規(guī)模變化,也逐漸沉淀出了相應(yīng)的工程師文化,無論是技術(shù)還是文化都是在慢慢的演進(jìn)出來的。
最后“運(yùn)營模式”,會(huì)后大家再看吧,因?yàn)榻裉鞎r(shí)間不多了,我簡單給大家說一下。最簡單的介紹一下Etsy這個(gè)公司是做什么的,它是一個(gè)在線電商,這是一個(gè)標(biāo)簽,它的品類比較有限,我們這個(gè)平臺(tái)只賣手工制品,不支持批量,而且在這個(gè)平臺(tái)上要想開店,首先你得是一個(gè)手工藝人,公司會(huì)去審核,一旦他發(fā)現(xiàn)你作為一個(gè)手工藝人在這兒開了個(gè)店,賣著從中國義烏來的產(chǎn)品,可能這個(gè)店就要被封掉了,它是不允許批量買賣的,可能涉及的方面也很多,而且這個(gè)網(wǎng)站的賣家和買家,70%以上都是女性用戶,可能女生更在意唯一性之類的事情。近期的一些熱點(diǎn),針對(duì)這個(gè)公司的新聞也蠻多的,公司做的很多事情有可能不一定是在完全維護(hù)買家或者賣家某一方的利益,很多的規(guī)則可能還是來自于整個(gè)社區(qū)的反饋。
針對(duì)這個(gè)公司收益率、市盈率的情況,我也問了一下,包括美股的資料,這個(gè)公司的市盈率數(shù)字看起來還是有泡沫存在的。
謝謝大家今天能到場參加這次分享,也歡迎大家多交流溝通,互相學(xué)習(xí),共同成長!
公眾號(hào)文章:https://mp.weixin.qq.com/s/u0j-QNUdG8mcEqH33fhc4g























