免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Netflix 官方博客:我們的全周期開(kāi)發(fā)者實(shí)踐

編者按:對(duì)于像Netflix這樣服務(wù)上億用戶的軟件服務(wù)提供商來(lái)說(shuō),服務(wù)運(yùn)營(yíng)是非常復(fù)雜的。按照傳統(tǒng)的做法,復(fù)雜的事情需要專(zhuān)業(yè)的分工,于是整個(gè)軟件生命周期會(huì)有設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、部署、運(yùn)營(yíng)、支持等不同的術(shù)業(yè)有專(zhuān)攻的團(tuán)隊(duì)和角色進(jìn)行配合。但是這種做法會(huì)增加溝通損耗,導(dǎo)致問(wèn)題經(jīng)常被踢皮球。于是Netflix在實(shí)驗(yàn)中實(shí)踐出了一套采用DevOps原則的混合模型:全周期開(kāi)發(fā)者模式——誰(shuí)開(kāi)發(fā)的業(yè)務(wù)誰(shuí)來(lái)運(yùn)營(yíng),誰(shuí)出的問(wèn)題誰(shuí)負(fù)責(zé)。同時(shí)設(shè)立了集中化團(tuán)隊(duì)來(lái)支撐不同的DevOps團(tuán)隊(duì)的公共需求。

2012年的時(shí)候在Netflix運(yùn)營(yíng)一項(xiàng)關(guān)鍵服務(wù)是很費(fèi)力的。開(kāi)發(fā)感覺(jué)就像在濕沙中行走。金絲雀部署變成了對(duì)耐心的測(cè)試(“一周的金絲雀測(cè)試都沒(méi)問(wèn)題發(fā)生所以我們繼續(xù)推進(jìn)吧”)而不是正確的功能。研究問(wèn)題就好像橡皮球一樣在團(tuán)隊(duì)之間被踢來(lái)踢去,很難抓住根源,想要阻止大家不再踢皮球更是難上加難。

時(shí)間快進(jìn)到2018年,Netflix已經(jīng)發(fā)展到擁有1.25億的全球會(huì)員,每天的瀏覽量超過(guò)了140萬(wàn)小時(shí)。我們已經(jīng)在改進(jìn)開(kāi)發(fā)運(yùn)營(yíng)方面進(jìn)行了顯著投入。一路走來(lái)我們?cè)囼?yàn)了很多服務(wù)開(kāi)發(fā)和運(yùn)營(yíng)的方案。在此,我們?cè)敢獍哑渲幸环N我們內(nèi)部用得相對(duì)普遍的方案,包括它的優(yōu)缺點(diǎn)拿出來(lái)跟大家分享。我們希望我們的經(jīng)驗(yàn)分享能給大家一點(diǎn)啟發(fā)并且討論出可能的替代方案。

一支團(tuán)隊(duì)的旅程

Edge Engineering(邊緣工程)負(fù)責(zé)AWS服務(wù)的第一層,必須為Netflix的流媒體服務(wù)正常工作準(zhǔn)備就緒。在過(guò)去,Edge Engineering有專(zhuān)注運(yùn)營(yíng)的團(tuán)隊(duì)以及SRE(網(wǎng)站可靠性工程師)專(zhuān)家,他們負(fù)責(zé)軟件生命周期的部署+運(yùn)營(yíng)+支撐這部分。發(fā)布新功能意味著開(kāi)發(fā)跟運(yùn)營(yíng)團(tuán)隊(duì)要協(xié)調(diào)指標(biāo)、告警及容量考慮等東西,然后再把代碼交給運(yùn)營(yíng)團(tuán)隊(duì)部署和運(yùn)營(yíng)。要想高效運(yùn)行代碼并支持合作伙伴,運(yùn)營(yíng)團(tuán)隊(duì)需要持續(xù)接受新功能和修補(bǔ)bug的培訓(xùn)。擁有一支獨(dú)立運(yùn)營(yíng)團(tuán)隊(duì)的主要好處是在一切正常的時(shí)候?qū)﹂_(kāi)發(fā)者的干擾沒(méi)那么多。

可當(dāng)情況進(jìn)展不暢時(shí),成本就會(huì)提高。開(kāi)發(fā)和運(yùn)營(yíng)/SRE人員之間的溝通和知識(shí)轉(zhuǎn)移是有損耗的,調(diào)試問(wèn)題或者回答伙伴問(wèn)題需要額外的來(lái)回。部署問(wèn)題因?yàn)檫\(yùn)營(yíng)團(tuán)隊(duì)對(duì)部署的變更沒(méi)那么多直接知識(shí),所以檢測(cè)和解決需要更多的時(shí)間。代碼完成與部署之間的鴻溝變得更大,發(fā)布往往是以周為量級(jí)而不是日。反饋從運(yùn)營(yíng)發(fā)起,這幫人直接經(jīng)歷了缺少告警/監(jiān)控或者性能問(wèn)題及時(shí)延增加這樣的痛苦,然后再傳遞到開(kāi)發(fā)人員這里時(shí)問(wèn)題已經(jīng)是二手了。

為了改善這種情況,Edge Engineering實(shí)驗(yàn)了一種混合模型,就是開(kāi)發(fā)人員可以在需要的時(shí)候自己推送代碼,同時(shí)負(fù)責(zé)非高峰期的生產(chǎn)問(wèn)題和支持請(qǐng)求。這改善了開(kāi)發(fā)者的反饋和學(xué)習(xí)周期。但這會(huì)出現(xiàn)部分的責(zé)任不到位的問(wèn)題。比方說(shuō),即便開(kāi)發(fā)者可以自己部署和調(diào)試管道破損,他們往往也會(huì)交給運(yùn)營(yíng)發(fā)布專(zhuān)家處理。對(duì)于聚焦運(yùn)營(yíng)的人來(lái)說(shuō),他們對(duì)日常工作有積極性,但是很難會(huì)把無(wú)需別人依賴自己的自動(dòng)化放在優(yōu)先考慮的位置。

為了尋找更好的解決辦法,我們退后一步?jīng)Q定從第一性原理開(kāi)始。我們究竟想實(shí)現(xiàn)什么?以及為什么我們不能成功?

軟件生命周期

軟件生命周期的目的是優(yōu)化“時(shí)間價(jià)值”,有效地將想法轉(zhuǎn)化為替客戶做出產(chǎn)品和服務(wù)。開(kāi)發(fā)和運(yùn)行軟件服務(wù)涉及到一系列的責(zé)任:

軟件開(kāi)發(fā)生命周期組件

我們一直在細(xì)分這些責(zé)任。極端情況下,這意味著每一個(gè)職能領(lǐng)域都由不同的人/角色負(fù)責(zé):

軟件開(kāi)發(fā)生命周期專(zhuān)家

這些專(zhuān)門(mén)的角色在每一個(gè)細(xì)分領(lǐng)域內(nèi)創(chuàng)造出了效能,但是卻有可能造成整個(gè)生命周期的低效。專(zhuān)家在其聚焦的領(lǐng)域發(fā)展專(zhuān)業(yè)知識(shí)并針對(duì)該領(lǐng)域的需要進(jìn)行優(yōu)化。他們?cè)诮鉀Q特定領(lǐng)域的難題上變得越來(lái)越高效。但是軟件需要整個(gè)生命周期來(lái)為客戶提供價(jià)值。各自精通生命周期的一小塊的專(zhuān)家團(tuán)隊(duì)反而可能會(huì)制造出煙囪導(dǎo)致整個(gè)端到端流程放緩。將不同的專(zhuān)家組成一個(gè)團(tuán)隊(duì)能減少煙囪,但讓不同的人負(fù)責(zé)各自角色又增加了溝通負(fù)擔(dān),引入了瓶頸,并且抑制反饋回環(huán)的效能。

運(yùn)營(yíng)你開(kāi)發(fā)的東西

為了反思我們的做法,我們從開(kāi)發(fā)運(yùn)營(yíng)(devops)運(yùn)動(dòng)的原則總獲取靈感。我們可以通過(guò)打破煙囪并鼓勵(lì)分享整個(gè)軟件開(kāi)發(fā)周期的所有權(quán)來(lái)優(yōu)化學(xué)習(xí)和反饋:

支持devops原則的軟件開(kāi)發(fā)生命周期

“運(yùn)營(yíng)你開(kāi)發(fā)的東西”通過(guò)讓開(kāi)發(fā)系統(tǒng)的團(tuán)隊(duì)也負(fù)責(zé)系統(tǒng)的運(yùn)營(yíng)和支持來(lái)踐行devops原則。把這個(gè)責(zé)任分?jǐn)偨o每一支開(kāi)發(fā)團(tuán)隊(duì),而不是外化它,這樣就建立直接反饋回環(huán)并且把激勵(lì)給統(tǒng)一起來(lái)。感受到運(yùn)營(yíng)痛苦的團(tuán)隊(duì)被賦權(quán)通過(guò)改變系統(tǒng)設(shè)計(jì)或代碼來(lái)治療這種痛苦;他們要負(fù)責(zé)這兩種職能。每一支開(kāi)發(fā)團(tuán)隊(duì)都要負(fù)責(zé)部署問(wèn)題、性能bug、能力規(guī)劃、告警差異、伙伴支持等等。

利用開(kāi)發(fā)者工具擴(kuò)張

對(duì)整個(gè)開(kāi)發(fā)生命周期的所有權(quán)給軟件開(kāi)發(fā)者顯著增加了負(fù)擔(dān)。這就需要有簡(jiǎn)化和自動(dòng)化共同開(kāi)發(fā)需求的工具來(lái)減輕負(fù)擔(dān)。比方說(shuō),如果軟件開(kāi)發(fā)者預(yù)期要管理服務(wù)的回滾的話,就要有豐富的工具既能檢測(cè)到問(wèn)題并予以告警,又能輔助進(jìn)行回滾才行。

Netflix建立了集中化團(tuán)隊(duì)(比如Cloud Platform、Performance & Reliability Engineering以及Engineering Tools)來(lái)解決每一支開(kāi)發(fā)團(tuán)隊(duì)都會(huì)遇到的問(wèn)題,其使命是開(kāi)發(fā)公共工具和基礎(chǔ)設(shè)施。這些集中化團(tuán)隊(duì)將自己的專(zhuān)業(yè)知識(shí)變成了可重用的建構(gòu)塊,充當(dāng)了力量倍增器的作用。比方說(shuō):

專(zhuān)家創(chuàng)建可重用的工具

有了這些工具在手,開(kāi)發(fā)團(tuán)隊(duì)就可以專(zhuān)注地解決自身特定產(chǎn)品領(lǐng)域的問(wèn)題。當(dāng)額外的工具需求產(chǎn)生時(shí),集中化團(tuán)隊(duì)會(huì)評(píng)估多個(gè)開(kāi)發(fā)團(tuán)隊(duì)是否也有這些需求。如果有,接著就要協(xié)作。有時(shí)候這些局部需求太過(guò)特殊而無(wú)法獲得集中化的投入。在這種情況下開(kāi)發(fā)團(tuán)隊(duì)就要決定其需求是否重要到需要自己解決。

對(duì)類(lèi)似問(wèn)題在局部與集中投資間進(jìn)行平衡是我們的方案當(dāng)中最棘手的地方。按照我們的經(jīng)驗(yàn)尋找開(kāi)發(fā)需求的新穎解決方案的好處,是值得冒險(xiǎn)讓多支團(tuán)隊(duì)同時(shí)開(kāi)發(fā)在將來(lái)殊途同歸的解決方案的。溝通與協(xié)調(diào)是成功的關(guān)鍵。通過(guò)協(xié)調(diào)好需求及其共性,我們就能更好地將投資與跨開(kāi)發(fā)團(tuán)隊(duì)的好處進(jìn)行匹配。

全周期開(kāi)發(fā)者

把所有這些想法湊到一起,我們就得出了這么一個(gè)模式,在配備了出色的開(kāi)發(fā)者生產(chǎn)力工具之后,開(kāi)發(fā)團(tuán)隊(duì)將負(fù)責(zé)整個(gè)軟件生命周期:包括設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、部署、運(yùn)營(yíng)以及支持。

被賦能的全周期開(kāi)發(fā)者

全周期開(kāi)發(fā)者需要熟悉軟件生命周期各個(gè)領(lǐng)域并且高效。對(duì)于很多不熟悉Netflix的開(kāi)發(fā)者來(lái)說(shuō),這意味著要在自己之前不怎么關(guān)注的領(lǐng)域加把勁。我們開(kāi)設(shè)有dev新兵訓(xùn)練營(yíng)及其他持續(xù)培訓(xùn)形式來(lái)灌輸這種知識(shí)并培養(yǎng)技能。知識(shí)是必要非充分條件;部署管道和監(jiān)控還需要有易用的工具才能支撐高效的全周期開(kāi)發(fā)運(yùn)營(yíng)。

全周期開(kāi)發(fā)者把工程規(guī)范應(yīng)用到生命周期的各個(gè)領(lǐng)域。他們從開(kāi)發(fā)者的角度去評(píng)估問(wèn)題,會(huì)提出類(lèi)似“我如何才能自動(dòng)化該系統(tǒng)運(yùn)營(yíng)所需的東西?”以及“什么樣的自服務(wù)工具能讓我的伙伴回答他們的問(wèn)題而不需要我的參與?”優(yōu)先考慮聚焦系統(tǒng)的辦法而不是聚焦于人的辦法,優(yōu)先考慮自動(dòng)化而不是手工,這幫助了我們團(tuán)隊(duì)實(shí)現(xiàn)伸縮性。

轉(zhuǎn)向全周期開(kāi)發(fā)者模式需要理念的轉(zhuǎn)變。一些開(kāi)發(fā)者認(rèn)為設(shè)計(jì)+開(kāi)發(fā),或者有時(shí)候測(cè)試才是創(chuàng)造價(jià)值的主要手段。這會(huì)導(dǎo)致一種反模式,認(rèn)為運(yùn)營(yíng)是分心的事情,更喜歡對(duì)運(yùn)營(yíng)和支持問(wèn)題進(jìn)行短期性質(zhì)的修補(bǔ)以便能夠回到自己“真正的工作”上去。但是全周期開(kāi)發(fā)者這項(xiàng)“真正的工作”是利用他們的軟件開(kāi)發(fā)知識(shí)去解決全生命周期的問(wèn)題。全周期開(kāi)發(fā)者要像SWE、SDET以及SRE一樣思考和行動(dòng)。有時(shí)候他們要?jiǎng)?chuàng)建軟件去解決商業(yè)問(wèn)題,有時(shí)候他們寫(xiě)相應(yīng)的測(cè)試用例,還有些時(shí)候他們會(huì)對(duì)系統(tǒng)的運(yùn)營(yíng)方面進(jìn)行自動(dòng)化。

這一模式要想取得成功,團(tuán)隊(duì)必須為它所帶來(lái)的價(jià)值做奉獻(xiàn)并且要認(rèn)識(shí)到所需的成本。團(tuán)隊(duì)需要預(yù)留合理的人手去管理開(kāi)發(fā)和部署,處理生產(chǎn)問(wèn)題,并且對(duì)伙伴的支持請(qǐng)求作出響應(yīng)。需要投入時(shí)間到培訓(xùn)上。要利用好工具并且投資于工具。需要跟集中化團(tuán)隊(duì)培養(yǎng)合作關(guān)系來(lái)創(chuàng)建出可重用的組件和解決方案。規(guī)劃和回顧階段要考慮到生命周期的各個(gè)領(lǐng)域。除了商業(yè)項(xiàng)目以外,像自動(dòng)化告警響應(yīng)和開(kāi)發(fā)自服務(wù)伙伴支持工具這樣的投資需要優(yōu)先考慮。有了合適的人力、恰當(dāng)?shù)膬?yōu)先次序,再加上合作關(guān)系,團(tuán)隊(duì)就能成功地運(yùn)營(yíng)自己開(kāi)發(fā)的東西。沒(méi)有這些,團(tuán)隊(duì)就會(huì)有負(fù)擔(dān)過(guò)重精疲力竭的風(fēng)險(xiǎn)。

在Netflix之外的地方應(yīng)用這一模式需要進(jìn)行必要的調(diào)整。開(kāi)發(fā)團(tuán)隊(duì)之間的共同問(wèn)題可能是類(lèi)似的——比如持續(xù)交付管道的需求,比如監(jiān)控/可觀察性等等。但很多公司并沒(méi)有像Netflix這樣有足夠的人力投資到集中化團(tuán)隊(duì)上,或者也不需要Netflix這種規(guī)模導(dǎo)致的復(fù)雜性。Netflix的工具往往是開(kāi)源的,所以一開(kāi)始你想嘗試一下也正常。不過(guò)這些問(wèn)題其他的開(kāi)源和SaaS解決方案也能滿足大多數(shù)公司的需求。先從分析潛在價(jià)值和計(jì)算成本開(kāi)始沒(méi)然后再進(jìn)行觀念轉(zhuǎn)變。評(píng)估你需要什么,小心不要引入不必要的復(fù)雜性。

權(quán)衡利弊

技術(shù)圈有很豐富的手段來(lái)解決開(kāi)放和運(yùn)營(yíng)需求(延伸閱讀:devops拓?fù)?/a>)。這里描述的全周期模型在Netflix很普遍,但這種模式也有缺點(diǎn)。在選擇一種模式前先了解其中的利弊可以提高成功的幾率。

在全周期模式下,一個(gè)人要管的事情變寬了變多了。而一些開(kāi)發(fā)者偏向于專(zhuān)注成為比較狹窄的領(lǐng)域的世界級(jí)專(zhuān)家,在一些領(lǐng)域我們也是需要那種類(lèi)型的專(zhuān)家的。對(duì)于那些專(zhuān)家來(lái)說(shuō),需要一專(zhuān)多能,對(duì)每個(gè)領(lǐng)域都懂一些的要求可能會(huì)感覺(jué)不太舒服而且有時(shí)候勉為其難。有些人寧愿呆在需要深厚知識(shí)不需要持續(xù)擴(kuò)展廣度的領(lǐng)域,我們也支持他們?nèi)ヌ撜羞@樣的角色;有的則享受并且歡迎承擔(dān)更廣的責(zé)任。

根據(jù)我們開(kāi)發(fā)和運(yùn)營(yíng)基于云的系統(tǒng)的經(jīng)驗(yàn),我們見(jiàn)識(shí)過(guò)哪些重視擁有全周期所需的廣度的開(kāi)發(fā)者的效能。但是這種廣度增加了每一位開(kāi)發(fā)者的認(rèn)知負(fù)荷,這意味著團(tuán)隊(duì)每周將比僅關(guān)注一個(gè)領(lǐng)域要平衡更多的優(yōu)先事項(xiàng)。為此我們采取了隨時(shí)待命的輪轉(zhuǎn)來(lái)緩解這一點(diǎn):即讓開(kāi)發(fā)者輪流分擔(dān)部署+運(yùn)營(yíng)+支持責(zé)任。做得不好的情況下,就會(huì)出現(xiàn)人人都在當(dāng)救火隊(duì)員去處理生產(chǎn)問(wèn)題等高中斷的情況,導(dǎo)致所有人精疲力竭。

工具和自動(dòng)化有助于擴(kuò)展專(zhuān)業(yè)知識(shí),但沒(méi)有一項(xiàng)工具能解決開(kāi)發(fā)者生產(chǎn)力和運(yùn)營(yíng)領(lǐng)域的每一個(gè)問(wèn)題。Netflix有集中化團(tuán)隊(duì)支撐的現(xiàn)成的一套工具和實(shí)踐。我們不強(qiáng)求其他團(tuán)隊(duì)一定要用這些,但是通過(guò)確保開(kāi)發(fā)和運(yùn)營(yíng)采用這些技術(shù)的體驗(yàn)要比不用好得多來(lái)鼓勵(lì)他們采用。我們的辦法不好之處在于“每一支團(tuán)隊(duì)將每一項(xiàng)工具的每一個(gè)功能用到其最重要的需求”上這個(gè)理想幾乎是不可能實(shí)現(xiàn)的。需要意識(shí)到我們集中化團(tuán)隊(duì)解決方案的投資回報(bào)需要努力、協(xié)調(diào)以及持續(xù)適配。

結(jié)論

從2012年走到今天經(jīng)歷了種種實(shí)驗(yàn)、學(xué)習(xí)和適配的過(guò)程。Edge Engineering的早期經(jīng)歷刺激了尋找更好模式的需求,從此全周期開(kāi)發(fā)者模式就被我們積極地應(yīng)用到今天。部署是日常,進(jìn)行得很頻繁,金絲雀行動(dòng)只需要數(shù)小時(shí)而不是數(shù)日了,開(kāi)發(fā)者可以迅速調(diào)研問(wèn)題作出變更而不是在團(tuán)隊(duì)之間踢皮球。其他的團(tuán)隊(duì)也看到了類(lèi)似的好處。然而,我們認(rèn)識(shí)到我們是通過(guò)應(yīng)用替代方案并從中學(xué)習(xí)才走到今天的。我們預(yù)期將來(lái)的需求還會(huì)推動(dòng)進(jìn)一步的演進(jìn)。

原文鏈接:https://medium.com/netflix-techblog/full-cycle-developers-at-netflix-a08c31f83249

編譯組出品。編輯:郝鵬程。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
開(kāi)發(fā)者不懂產(chǎn)品運(yùn)維的痛?Netflix想讓你親自做運(yùn)維試試看!
譯言網(wǎng) | 什么是DevOps?
谷歌放權(quán) AOSP,Android 進(jìn)一步開(kāi)放
打造云端一體化的全新開(kāi)發(fā)和數(shù)據(jù)運(yùn)營(yíng)模式
微信開(kāi)放小程序公測(cè),做好這 4 件事?lián)屨枷葯C(jī)
人人都是開(kāi)發(fā)者,0代碼輔助開(kāi)發(fā)軟件應(yīng)用工具推薦
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服