欧美色图 亚洲|野外口爆视频国产|久久精品视频观看|97精品人人抽插

Netflix :我們的全周期開發(fā)者實(shí)踐

2018-06-08 10:16:25 來源: 36氪 熱度:
對于像Netflix這樣服務(wù)上億用戶的軟件服務(wù)提供商來說,服務(wù)運(yùn)營是非常復(fù)雜的。按照傳統(tǒng)的做法,復(fù)雜的事情需要專業(yè)的分工,于是整個軟件生命周期會有設(shè)計(jì)、開發(fā)、測試、部署、運(yùn)營、支持等不同的術(shù)業(yè)有專攻的團(tuán)隊(duì)和角色進(jìn)行配合。但是這種做法會增加溝通損耗,導(dǎo)致問題經(jīng)常被踢皮球。于是Netflix在實(shí)驗(yàn)中實(shí)踐出了一套采用DevOps原則的混合模型:全周期開發(fā)者模式——誰開發(fā)的業(yè)務(wù)誰來運(yùn)營,誰出的問題誰負(fù)責(zé)。同時設(shè)立了集中化團(tuán)隊(duì)來支撐不同的DevOps團(tuán)隊(duì)的公共需求。
 
 
2012年的時候在Netflix運(yùn)營一項(xiàng)關(guān)鍵服務(wù)是很費(fèi)力的。開發(fā)感覺就像在濕沙中行走。金絲雀部署變成了對耐心的測試(“一周的金絲雀測試都沒問題發(fā)生所以我們繼續(xù)推進(jìn)吧”)而不是正確的功能。研究問題就好像橡皮球一樣在團(tuán)隊(duì)之間被踢來踢去,很難抓住根源,想要阻止大家不再踢皮球更是難上加難。
 
時間快進(jìn)到2018年,Netflix已經(jīng)發(fā)展到擁有1.25億的全球會員,每天的瀏覽量超過了140萬小時。我們已經(jīng)在改進(jìn)開發(fā)運(yùn)營方面進(jìn)行了顯著投入。一路走來我們試驗(yàn)了很多服務(wù)開發(fā)和運(yùn)營的方案。在此,我們愿意把其中一種我們內(nèi)部用得相對普遍的方案,包括它的優(yōu)缺點(diǎn)拿出來跟大家分享。我們希望我們的經(jīng)驗(yàn)分享能給大家一點(diǎn)啟發(fā)并且討論出可能的替代方案。
 
一支團(tuán)隊(duì)的旅程
 
Edge Engineering(邊緣工程)負(fù)責(zé)AWS服務(wù)的第一層,必須為Netflix的流媒體服務(wù)正常工作準(zhǔn)備就緒。在過去,Edge Engineering有專注運(yùn)營的團(tuán)隊(duì)以及SRE(網(wǎng)站可靠性工程師)專家,他們負(fù)責(zé)軟件生命周期的部署+運(yùn)營+支撐這部分。發(fā)布新功能意味著開發(fā)跟運(yùn)營團(tuán)隊(duì)要協(xié)調(diào)指標(biāo)、告警及容量考慮等東西,然后再把代碼交給運(yùn)營團(tuán)隊(duì)部署和運(yùn)營。要想高效運(yùn)行代碼并支持合作伙伴,運(yùn)營團(tuán)隊(duì)需要持續(xù)接受新功能和修補(bǔ)bug的培訓(xùn)。擁有一支獨(dú)立運(yùn)營團(tuán)隊(duì)的主要好處是在一切正常的時候?qū)﹂_發(fā)者的干擾沒那么多。
 
可當(dāng)情況進(jìn)展不暢時,成本就會提高。開發(fā)和運(yùn)營/SRE人員之間的溝通和知識轉(zhuǎn)移是有損耗的,調(diào)試問題或者回答伙伴問題需要額外的來回。部署問題因?yàn)檫\(yùn)營團(tuán)隊(duì)對部署的變更沒那么多直接知識,所以檢測和解決需要更多的時間。代碼完成與部署之間的鴻溝變得更大,發(fā)布往往是以周為量級而不是日。反饋從運(yùn)營發(fā)起,這幫人直接經(jīng)歷了缺少告警/監(jiān)控或者性能問題及時延增加這樣的痛苦,然后再傳遞到開發(fā)人員這里時問題已經(jīng)是二手了。
 
為了改善這種情況,Edge Engineering實(shí)驗(yàn)了一種混合模型,就是開發(fā)人員可以在需要的時候自己推送代碼,同時負(fù)責(zé)非高峰期的生產(chǎn)問題和支持請求。這改善了開發(fā)者的反饋和學(xué)習(xí)周期。但這會出現(xiàn)部分的責(zé)任不到位的問題。比方說,即便開發(fā)者可以自己部署和調(diào)試管道破損,他們往往也會交給運(yùn)營發(fā)布專家處理。對于聚焦運(yùn)營的人來說,他們對日常工作有積極性,但是很難會把無需別人依賴自己的自動化放在優(yōu)先考慮的位置。
 
為了尋找更好的解決辦法,我們退后一步?jīng)Q定從第一性原理開始。我們究竟想實(shí)現(xiàn)什么?以及為什么我們不能成功?
 
軟件生命周期
 
軟件生命周期的目的是優(yōu)化“時間價值”,有效地將想法轉(zhuǎn)化為替客戶做出產(chǎn)品和服務(wù)。開發(fā)和運(yùn)行軟件服務(wù)涉及到一系列的責(zé)任:
 
 
軟件開發(fā)生命周期組件
 
我們一直在細(xì)分這些責(zé)任。極端情況下,這意味著每一個職能領(lǐng)域都由不同的人/角色負(fù)責(zé):
 
 
軟件開發(fā)生命周期專家
 
這些專門的角色在每一個細(xì)分領(lǐng)域內(nèi)創(chuàng)造出了效能,但是卻有可能造成整個生命周期的低效。專家在其聚焦的領(lǐng)域發(fā)展專業(yè)知識并針對該領(lǐng)域的需要進(jìn)行優(yōu)化。他們在解決特定領(lǐng)域的難題上變得越來越高效。但是軟件需要整個生命周期來為客戶提供價值。各自精通生命周期的一小塊的專家團(tuán)隊(duì)反而可能會制造出煙囪導(dǎo)致整個端到端流程放緩。將不同的專家組成一個團(tuán)隊(duì)能減少煙囪,但讓不同的人負(fù)責(zé)各自角色又增加了溝通負(fù)擔(dān),引入了瓶頸,并且抑制反饋回環(huán)的效能。
 
運(yùn)營你開發(fā)的東西
 
為了反思我們的做法,我們從開發(fā)運(yùn)營(devops)運(yùn)動的原則總獲取靈感。我們可以通過打破煙囪并鼓勵分享整個軟件開發(fā)周期的所有權(quán)來優(yōu)化學(xué)習(xí)和反饋:
 
 
支持devops原則的軟件開發(fā)生命周期
 
“運(yùn)營你開發(fā)的東西”通過讓開發(fā)系統(tǒng)的團(tuán)隊(duì)也負(fù)責(zé)系統(tǒng)的運(yùn)營和支持來踐行devops原則。把這個責(zé)任分?jǐn)偨o每一支開發(fā)團(tuán)隊(duì),而不是外化它,這樣就建立直接反饋回環(huán)并且把激勵給統(tǒng)一起來。感受到運(yùn)營痛苦的團(tuán)隊(duì)被賦權(quán)通過改變系統(tǒng)設(shè)計(jì)或代碼來治療這種痛苦;他們要負(fù)責(zé)這兩種職能。每一支開發(fā)團(tuán)隊(duì)都要負(fù)責(zé)部署問題、性能bug、能力規(guī)劃、告警差異、伙伴支持等等。
 
利用開發(fā)者工具擴(kuò)張
 
對整個開發(fā)生命周期的所有權(quán)給軟件開發(fā)者顯著增加了負(fù)擔(dān)。這就需要有簡化和自動化共同開發(fā)需求的工具來減輕負(fù)擔(dān)。比方說,如果軟件開發(fā)者預(yù)期要管理服務(wù)的回滾的話,就要有豐富的工具既能檢測到問題并予以告警,又能輔助進(jìn)行回滾才行。
 
Netflix建立了集中化團(tuán)隊(duì)(比如Cloud Platform、Performance & Reliability Engineering以及Engineering Tools)來解決每一支開發(fā)團(tuán)隊(duì)都會遇到的問題,其使命是開發(fā)公共工具和基礎(chǔ)設(shè)施。這些集中化團(tuán)隊(duì)將自己的專業(yè)知識變成了可重用的建構(gòu)塊,充當(dāng)了力量倍增器的作用。比方說:
 
 
專家創(chuàng)建可重用的工具
 
有了這些工具在手,開發(fā)團(tuán)隊(duì)就可以專注地解決自身特定產(chǎn)品領(lǐng)域的問題。當(dāng)額外的工具需求產(chǎn)生時,集中化團(tuán)隊(duì)會評估多個開發(fā)團(tuán)隊(duì)是否也有這些需求。如果有,接著就要協(xié)作。有時候這些局部需求太過特殊而無法獲得集中化的投入。在這種情況下開發(fā)團(tuán)隊(duì)就要決定其需求是否重要到需要自己解決。
 
對類似問題在局部與集中投資間進(jìn)行平衡是我們的方案當(dāng)中最棘手的地方。按照我們的經(jīng)驗(yàn)尋找開發(fā)需求的新穎解決方案的好處,是值得冒險讓多支團(tuán)隊(duì)同時開發(fā)在將來殊途同歸的解決方案的。溝通與協(xié)調(diào)是成功的關(guān)鍵。通過協(xié)調(diào)好需求及其共性,我們就能更好地將投資與跨開發(fā)團(tuán)隊(duì)的好處進(jìn)行匹配。
 
全周期開發(fā)者
 
把所有這些想法湊到一起,我們就得出了這么一個模式,在配備了出色的開發(fā)者生產(chǎn)力工具之后,開發(fā)團(tuán)隊(duì)將負(fù)責(zé)整個軟件生命周期:包括設(shè)計(jì)、開發(fā)、測試、部署、運(yùn)營以及支持。
 
 
被賦能的全周期開發(fā)者
 
全周期開發(fā)者需要熟悉軟件生命周期各個領(lǐng)域并且高效。對于很多不熟悉Netflix的開發(fā)者來說,這意味著要在自己之前不怎么關(guān)注的領(lǐng)域加把勁。我們開設(shè)有dev新兵訓(xùn)練營及其他持續(xù)培訓(xùn)形式來灌輸這種知識并培養(yǎng)技能。知識是必要非充分條件;部署管道和監(jiān)控還需要有易用的工具才能支撐高效的全周期開發(fā)運(yùn)營。
 
全周期開發(fā)者把工程規(guī)范應(yīng)用到生命周期的各個領(lǐng)域。他們從開發(fā)者的角度去評估問題,會提出類似“我如何才能自動化該系統(tǒng)運(yùn)營所需的東西?”以及“什么樣的自服務(wù)工具能讓我的伙伴回答他們的問題而不需要我的參與?”優(yōu)先考慮聚焦系統(tǒng)的辦法而不是聚焦于人的辦法,優(yōu)先考慮自動化而不是手工,這幫助了我們團(tuán)隊(duì)實(shí)現(xiàn)伸縮性。
 
轉(zhuǎn)向全周期開發(fā)者模式需要理念的轉(zhuǎn)變。一些開發(fā)者認(rèn)為設(shè)計(jì)+開發(fā),或者有時候測試才是創(chuàng)造價值的主要手段。這會導(dǎo)致一種反模式,認(rèn)為運(yùn)營是分心的事情,更喜歡對運(yùn)營和支持問題進(jìn)行短期性質(zhì)的修補(bǔ)以便能夠回到自己“真正的工作”上去。但是全周期開發(fā)者這項(xiàng)“真正的工作”是利用他們的軟件開發(fā)知識去解決全生命周期的問題。全周期開發(fā)者要像SWE、SDET以及SRE一樣思考和行動。有時候他們要創(chuàng)建軟件去解決商業(yè)問題,有時候他們寫相應(yīng)的測試用例,還有些時候他們會對系統(tǒng)的運(yùn)營方面進(jìn)行自動化。
 
這一模式要想取得成功,團(tuán)隊(duì)必須為它所帶來的價值做奉獻(xiàn)并且要認(rèn)識到所需的成本。團(tuán)隊(duì)需要預(yù)留合理的人手去管理開發(fā)和部署,處理生產(chǎn)問題,并且對伙伴的支持請求作出響應(yīng)。需要投入時間到培訓(xùn)上。要利用好工具并且投資于工具。需要跟集中化團(tuán)隊(duì)培養(yǎng)合作關(guān)系來創(chuàng)建出可重用的組件和解決方案。規(guī)劃和回顧階段要考慮到生命周期的各個領(lǐng)域。除了商業(yè)項(xiàng)目以外,像自動化告警響應(yīng)和開發(fā)自服務(wù)伙伴支持工具這樣的投資需要優(yōu)先考慮。有了合適的人力、恰當(dāng)?shù)膬?yōu)先次序,再加上合作關(guān)系,團(tuán)隊(duì)就能成功地運(yùn)營自己開發(fā)的東西。沒有這些,團(tuán)隊(duì)就會有負(fù)擔(dān)過重精疲力竭的風(fēng)險。
 
在Netflix之外的地方應(yīng)用這一模式需要進(jìn)行必要的調(diào)整。開發(fā)團(tuán)隊(duì)之間的共同問題可能是類似的——比如持續(xù)交付管道的需求,比如監(jiān)控/可觀察性等等。但很多公司并沒有像Netflix這樣有足夠的人力投資到集中化團(tuán)隊(duì)上,或者也不需要Netflix這種規(guī)模導(dǎo)致的復(fù)雜性。Netflix的工具往往是開源的,所以一開始你想嘗試一下也正常。不過這些問題其他的開源和SaaS解決方案也能滿足大多數(shù)公司的需求。先從分析潛在價值和計(jì)算成本開始沒然后再進(jìn)行觀念轉(zhuǎn)變。評估你需要什么,小心不要引入不必要的復(fù)雜性。
 
權(quán)衡利弊
 
技術(shù)圈有很豐富的手段來解決開放和運(yùn)營需求(延伸閱讀:devops拓?fù)洌?。這里描述的全周期模型在Netflix很普遍,但這種模式也有缺點(diǎn)。在選擇一種模式前先了解其中的利弊可以提高成功的幾率。
 
在全周期模式下,一個人要管的事情變寬了變多了。而一些開發(fā)者偏向于專注成為比較狹窄的領(lǐng)域的世界級專家,在一些領(lǐng)域我們也是需要那種類型的專家的。對于那些專家來說,需要一專多能,對每個領(lǐng)域都懂一些的要求可能會感覺不太舒服而且有時候勉為其難。有些人寧愿呆在需要深厚知識不需要持續(xù)擴(kuò)展廣度的領(lǐng)域,我們也支持他們?nèi)ヌ撜羞@樣的角色;有的則享受并且歡迎承擔(dān)更廣的責(zé)任。
 
根據(jù)我們開發(fā)和運(yùn)營基于云的系統(tǒng)的經(jīng)驗(yàn),我們見識過哪些重視擁有全周期所需的廣度的開發(fā)者的效能。但是這種廣度增加了每一位開發(fā)者的認(rèn)知負(fù)荷,這意味著團(tuán)隊(duì)每周將比僅關(guān)注一個領(lǐng)域要平衡更多的優(yōu)先事項(xiàng)。為此我們采取了隨時待命的輪轉(zhuǎn)來緩解這一點(diǎn):即讓開發(fā)者輪流分擔(dān)部署+運(yùn)營+支持責(zé)任。做得不好的情況下,就會出現(xiàn)人人都在當(dāng)救火隊(duì)員去處理生產(chǎn)問題等高中斷的情況,導(dǎo)致所有人精疲力竭。
 
工具和自動化有助于擴(kuò)展專業(yè)知識,但沒有一項(xiàng)工具能解決開發(fā)者生產(chǎn)力和運(yùn)營領(lǐng)域的每一個問題。Netflix有集中化團(tuán)隊(duì)支撐的現(xiàn)成的一套工具和實(shí)踐。我們不強(qiáng)求其他團(tuán)隊(duì)一定要用這些,但是通過確保開發(fā)和運(yùn)營采用這些技術(shù)的體驗(yàn)要比不用好得多來鼓勵他們采用。我們的辦法不好之處在于“每一支團(tuán)隊(duì)將每一項(xiàng)工具的每一個功能用到其最重要的需求”上這個理想幾乎是不可能實(shí)現(xiàn)的。需要意識到我們集中化團(tuán)隊(duì)解決方案的投資回報(bào)需要努力、協(xié)調(diào)以及持續(xù)適配。
 
結(jié)論
 
從2012年走到今天經(jīng)歷了種種實(shí)驗(yàn)、學(xué)習(xí)和適配的過程。Edge Engineering的早期經(jīng)歷刺激了尋找更好模式的需求,從此全周期開發(fā)者模式就被我們積極地應(yīng)用到今天。部署是日常,進(jìn)行得很頻繁,金絲雀行動只需要數(shù)小時而不是數(shù)日了,開發(fā)者可以迅速調(diào)研問題作出變更而不是在團(tuán)隊(duì)之間踢皮球。其他的團(tuán)隊(duì)也看到了類似的好處。然而,我們認(rèn)識到我們是通過應(yīng)用替代方案并從中學(xué)習(xí)才走到今天的。我們預(yù)期將來的需求還會推動進(jìn)一步的演進(jìn)。
 
原文鏈接:https://medium.com/netflix-techblog/full-cycle-developers-at-netflix-a08c31f83249

責(zé)任編輯:張曉寶

相關(guān)推薦

美衛(wèi)星電視公司Dish推流視頻服務(wù)挑戰(zhàn)Netflix

北京時間9月3日消息,據(jù)國外媒體報(bào)道,一名不具名知情人士透露,美國第二大衛(wèi)星電視公司DishNetworkCorp.(以下簡稱“Dish”)下個月將推出一款流視頻服務(wù),與Netflix競爭。上述知情人士稱,Dish之所以選擇下個月推流視頻服務(wù),原因就在于Netflix提高了其服務(wù)的價格。Netflix表示,從本月開始,該公司將對郵寄DVD和流視頻服務(wù)分開收費(fèi),同時購買兩項(xiàng)服務(wù)的價格將提高60%至15.98美元。上述知情人士稱,Dish尚未設(shè)定服務(wù)的價格。Dish4月份斥資3.2億美元收購了破產(chǎn)的視頻租賃服務(wù)Blockbuster的幾乎所有資產(chǎn)。上述知情人士稱,Dish的新服務(wù)可能包含Block

Netflix與米高梅簽訂多年期授權(quán)協(xié)議

北京時間11月7日晚間消息,Netflix和米高梅周一共同宣布,兩家公司已經(jīng)簽訂多年期授權(quán)協(xié)議。根據(jù)這一協(xié)議,Netflix將在英國和愛爾蘭提供米高梅電影的獨(dú)家流媒體播放服務(wù)。這一協(xié)議將于2012年初生效,屆時Netflix將開始在英國和愛爾蘭提供服務(wù)。訂購Netflix的服務(wù)后,用戶將可以通過電視機(jī)、平板電腦、游戲主機(jī)、計(jì)算機(jī)和手機(jī)觀看流媒體內(nèi)容。Netflix尚未宣布在英國和愛爾蘭地區(qū)提供服務(wù)的價格。將在上映后一年內(nèi)通過Netflix獨(dú)家播放的電影包括《霍比特人:不可思議之旅》、《霍比特人:來來往往》、《動物園看守》和《龍虎少年隊(duì)》等。此外,英國和愛爾蘭地區(qū)用戶還可以通過Netflix觀看

Netflix創(chuàng)始人買進(jìn)價值100萬美元Facebook股票

北京時間8月11日消息,據(jù)國外媒體報(bào)道,周三的一份監(jiān)管備案文件顯示,Netflix的創(chuàng)始人兼Facebook董事會成員里德-黑斯廷斯(ReedHastings)買入了這家社交網(wǎng)絡(luò)公司價值100萬美元的股票,他表示自己對Facebook依然充滿信心。黑斯廷斯按每股21.03美元的價格一共買進(jìn)了大約47800股。其他投資者并不那么急于買進(jìn)Facebook的股票。Facebook在五月份上市時的股價為38美元一股,但