偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

商家域穩(wěn)定性建設(shè)之原理探索

開(kāi)發(fā) 前端
我們先來(lái)探討一個(gè)核心概念:穩(wěn)定性 。想象一下,一個(gè)系統(tǒng)、一個(gè)物體或一個(gè)過(guò)程在受到外部干擾或內(nèi)部變化時(shí),能否如一面堅(jiān)實(shí)的墻壁,屹立不倒?在信息系統(tǒng)的世界里,穩(wěn)定性的定義就如同這面的墻壁,它確保在各種干擾面前,我們服務(wù)依舊保持可用。

一、穩(wěn)定性及其意義

    1.什么是穩(wěn)定性?

    2.為什么要進(jìn)行穩(wěn)定性建設(shè)?

    3.穩(wěn)定性建設(shè)究竟要建什么?

二、穩(wěn)定性建設(shè)面臨什么困難?

    1.穩(wěn)定性建設(shè)缺少立竿見(jiàn)影的短期價(jià)值

    2.穩(wěn)定性建設(shè)存在極大的復(fù)雜性和風(fēng)險(xiǎn)

三、如何進(jìn)行穩(wěn)定性建設(shè)?

    1. 建立穩(wěn)定性共識(shí)

    2.明確穩(wěn)定性建設(shè)目標(biāo)

    3.落地穩(wěn)定性建設(shè)任務(wù)

    4.穩(wěn)定性建設(shè)的困難是否都被解決了?

四、穩(wěn)定性建設(shè)全景圖

一、穩(wěn)定性及其意義

什么是穩(wěn)定性?

我們先來(lái)探討一個(gè)核心概念:穩(wěn)定性 。想象一下,一個(gè)系統(tǒng)、一個(gè)物體或一個(gè)過(guò)程在受到外部干擾或內(nèi)部變化時(shí),能否如一面堅(jiān)實(shí)的墻壁,屹立不倒?在信息系統(tǒng)的世界里,穩(wěn)定性的定義就如同這面的墻壁,它確保在各種干擾面前,我們服務(wù)依舊保持可用。

然而,盡管這個(gè)定義聽(tīng)上去很清晰,若要用它來(lái)推動(dòng)我們的穩(wěn)定性建設(shè),卻顯得有些模糊。因此,我們需要深入探討如何將這一概念轉(zhuǎn)化為切實(shí)可行的方法論。

我們將方法論定義為影響結(jié)果的公式,并為穩(wěn)定性寫(xiě)下了如下公式:

穩(wěn)定性 = 全局風(fēng)險(xiǎn)可見(jiàn)性 * 風(fēng)險(xiǎn)轉(zhuǎn)化概率 * 故障可感知 * 預(yù)案可靠性

但隨著實(shí)踐經(jīng)驗(yàn)的增長(zhǎng),再對(duì)上述公式因子進(jìn)行正交分析后,我發(fā)現(xiàn)穩(wěn)定性其實(shí)可以簡(jiǎn)化為:

穩(wěn)定性 = 系統(tǒng)風(fēng)險(xiǎn)(概率) * 風(fēng)險(xiǎn)應(yīng)對(duì)能力

我們進(jìn)一步拆分這一關(guān)系:

系統(tǒng)風(fēng)險(xiǎn)(概率) = 固有風(fēng)險(xiǎn)(概率) + 變更風(fēng)險(xiǎn)(概率)

其中固有風(fēng)險(xiǎn)對(duì)應(yīng)穩(wěn)定性概念的內(nèi)部變化,工程上可以定義為網(wǎng)絡(luò)、服務(wù)器等運(yùn)行環(huán)境變化。而變更風(fēng)險(xiǎn),則是包括發(fā)布、配置變更在內(nèi)的,由人為發(fā)起的系統(tǒng)變化。一般固有風(fēng)險(xiǎn)會(huì)由運(yùn)維團(tuán)隊(duì)進(jìn)行關(guān)注,因此我們主要展開(kāi)變更風(fēng)險(xiǎn):

變更風(fēng)險(xiǎn) = 變更頻率 * 變更復(fù)雜度 * 變更爆炸半徑

其中:

變更頻率:代表變更的發(fā)生次數(shù),它一般和業(yè)務(wù)的需求有關(guān)。

變更復(fù)雜度:這不僅限于代碼的可理解性和可修改性,還包括配置的復(fù)雜性。一般來(lái)說(shuō),復(fù)雜度越高,單次變更出問(wèn)題的概率也越大。

變更爆炸半徑:表示發(fā)生問(wèn)題后的影響面,直接影響實(shí)際的損失。這個(gè)爆炸半徑也有很多的衡量因子,如QPS、場(chǎng)景重要性、強(qiáng)弱依賴關(guān)系等等。

接下來(lái)我們對(duì)風(fēng)險(xiǎn)處理能力進(jìn)行展開(kāi):

風(fēng)險(xiǎn)處理能力 = 風(fēng)險(xiǎn)前置發(fā)現(xiàn)概率 * 前置風(fēng)險(xiǎn)處理 * 后置風(fēng)險(xiǎn)發(fā)現(xiàn)時(shí)長(zhǎng) * 應(yīng)急效果

其中,風(fēng)險(xiǎn)前置發(fā)現(xiàn)可以定義為在測(cè)試階段發(fā)現(xiàn)問(wèn)題的場(chǎng)景,由于線下的風(fēng)險(xiǎn)總會(huì)有手段可以處理,因此前置風(fēng)險(xiǎn)處理并不會(huì)成為瓶頸;后置風(fēng)險(xiǎn)則可定義為上線之后暴露的問(wèn)題,由于生產(chǎn)問(wèn)題總會(huì)暴露,其關(guān)鍵影響點(diǎn)為發(fā)現(xiàn)時(shí)長(zhǎng),以及完成應(yīng)急后最終的影響面,即應(yīng)急效果。

如果認(rèn)可這些穩(wěn)定性公式的拆解推導(dǎo)步驟,我們最終可以將穩(wěn)定性拉成一個(gè)龐大的公式:

穩(wěn)定性 =(固有風(fēng)險(xiǎn) + 變更頻率 * 變更復(fù)雜度 * 變更爆炸半徑)

*(風(fēng)險(xiǎn)前置發(fā)現(xiàn)概率 * 前置風(fēng)險(xiǎn)處理)*(后置風(fēng)險(xiǎn)發(fā)現(xiàn)時(shí)長(zhǎng) * 應(yīng)急效果)

而這個(gè)公式,涵蓋了影響穩(wěn)定性的一系列關(guān)鍵因素,這些關(guān)鍵因素,也將為后續(xù)的穩(wěn)定性建設(shè)定下基礎(chǔ)。

為什么要進(jìn)行穩(wěn)定性建設(shè)?

在進(jìn)行如何建設(shè)穩(wěn)定性的探討之前。我們先來(lái)討論一個(gè)問(wèn)題:為什么我們?nèi)绱酥匾暦€(wěn)定性?這可以從兩個(gè)重要方面來(lái)理解:

1.失去穩(wěn)定性的損失 :

  • 直接經(jīng)濟(jì)與業(yè)務(wù)損失 :想象一下,系統(tǒng)故障導(dǎo)致下單鏈路出現(xiàn)異常,訂單急劇下降;營(yíng)銷邏輯錯(cuò)誤,導(dǎo)致優(yōu)惠券被濫發(fā),直接造成公司的資損。
  • 信任度與隱形資產(chǎn)損失 :故障不可用或大規(guī)模的技術(shù)問(wèn)題可能引發(fā)輿論危機(jī),給品牌形象帶來(lái)巨大損害。尤其對(duì)云服務(wù)廠商而言,穩(wěn)定性故障更可能導(dǎo)致客戶的大量流失。

2.具備穩(wěn)定性的好處 :

  • 提高業(yè)務(wù)迭代效率,使得團(tuán)隊(duì)能迅速應(yīng)對(duì)市場(chǎng)變化。
  • 節(jié)約值班等額外的投入,減少資源浪費(fèi)。

此時(shí),大家一定會(huì)疑惑,穩(wěn)定性差的損失容易理解,但良好穩(wěn)定性與業(yè)務(wù)迭代的高效又有何關(guān)系呢?回到我們的變更風(fēng)險(xiǎn)公式,你會(huì)發(fā)現(xiàn),變更復(fù)雜度與業(yè)務(wù)迭代效率之間存在著顯著的負(fù)相關(guān)關(guān)系,容易的變更交付的快,復(fù)雜的變更交付的慢,這很好理解。因此:良好的穩(wěn)定性 -> 低變更風(fēng)險(xiǎn) -> 低變更復(fù)雜度 -> 高迭代效率,形成了一個(gè)合理的邏輯鏈。

穩(wěn)定性建設(shè)究竟要建什么?

在推導(dǎo)出穩(wěn)定性公式之前,這個(gè)命題簡(jiǎn)直寬泛地讓人無(wú)從下手。但推導(dǎo)出公式之后,所有的關(guān)鍵點(diǎn)都已經(jīng)成竹在胸?。ㄟ@也是方法論的魅力所在)

1.1中,我們已經(jīng)給出了穩(wěn)定性的公式,并標(biāo)紅了關(guān)鍵因子。當(dāng)我們應(yīng)用上這個(gè)方法論時(shí),問(wèn)題就變得清晰起來(lái):穩(wěn)定性建設(shè)的目標(biāo)應(yīng)該聚焦于之前提及的關(guān)鍵因素,借此我們可以制定出實(shí)用的治理項(xiàng)如下:

圖片

當(dāng)然,每個(gè)治理項(xiàng)都能進(jìn)一步拆分成若干舉措。由于每個(gè)團(tuán)隊(duì)、每個(gè)應(yīng)用的生命周期階段不同、實(shí)際特性不同,因此各團(tuán)隊(duì)在需要重點(diǎn)治理的方向和舉措上均有所不同。但總歸跳不出這個(gè)框架。

二、穩(wěn)定性建設(shè)面臨什么困難?

穩(wěn)定性建設(shè)在當(dāng)今技術(shù)驅(qū)動(dòng)的時(shí)代至關(guān)重要,但它常常被視為“重要但不緊急”的任務(wù),導(dǎo)致在排期過(guò)程中得不到必要的優(yōu)先級(jí)支持。許多時(shí)候,團(tuán)隊(duì)甚至不得不依賴于故障的驅(qū)動(dòng)才能艱難推進(jìn)穩(wěn)定性建設(shè)。這一現(xiàn)象的根源,可以歸結(jié)為以下幾個(gè)方面。

穩(wěn)定性建設(shè)缺少立竿見(jiàn)影的短期價(jià)值

其一:量化價(jià)值不明確,收益評(píng)估困難

我們可以從上文提到的穩(wěn)定性公式中找到一些線索,尤其是兩個(gè)非常重要的因子:變更復(fù)雜度和風(fēng)險(xiǎn)前置發(fā)現(xiàn)概率。變更復(fù)雜度實(shí)際上對(duì)應(yīng)的是研發(fā)引入的單次變更中攜帶風(fēng)險(xiǎn)的概率,而風(fēng)險(xiǎn)前置發(fā)現(xiàn)概率是經(jīng)過(guò)研發(fā)和測(cè)試團(tuán)隊(duì)的努力后,變更風(fēng)險(xiǎn)仍被遺漏到生產(chǎn)環(huán)境中的可能性。

正是因?yàn)樵诜€(wěn)定性的衡量公式計(jì)算中,帶入了這2個(gè)概率因子,穩(wěn)定性建設(shè)的量化價(jià)值的不確定性就顯而易見(jiàn)了。概率常常需要經(jīng)過(guò)大量的樣本統(tǒng)計(jì)才能形成有效的量化指標(biāo),但在實(shí)操時(shí)聚焦到某個(gè)團(tuán)隊(duì)、某個(gè)應(yīng)用或某個(gè)具體的治理需求中時(shí),它提升的概率影響往往不足以成為一個(gè)可以衡量的量化指標(biāo)。甚至運(yùn)氣不好的時(shí)候,可能會(huì)出現(xiàn)治理越多故障越多的離譜事件。

其二:業(yè)務(wù)壓力重,穩(wěn)定性任務(wù)排不上優(yōu)先級(jí)

我們不妨再回到穩(wěn)定性的關(guān)鍵因子,尤其是變更頻率這個(gè)有意思的指標(biāo)。我們很容易通過(guò)公式推導(dǎo)得出:變更頻率越高的功能,其穩(wěn)定性治理的收益也越大。然而,正如你所想的,這類功能往往是在業(yè)務(wù)高速發(fā)展時(shí)誕生的,此時(shí)需求繁多且時(shí)間緊迫,在這樣的情況下,穩(wěn)定性治理的優(yōu)先級(jí)與業(yè)務(wù)的迭代需求相較,無(wú)疑排不上號(hào)。

而當(dāng)業(yè)務(wù)進(jìn)入穩(wěn)定期,變更頻率下降,終于有時(shí)間投入穩(wěn)定性治理了,但變更頻率的下降又同樣帶來(lái)了穩(wěn)定性風(fēng)險(xiǎn)的減小,治理優(yōu)先級(jí)隨之降低。此時(shí)的穩(wěn)定性治理就變成了“食之無(wú)味,棄之可惜”的雞肋工程,仍舊排不上優(yōu)先級(jí)。

穩(wěn)定性建設(shè)存在極大的復(fù)雜性和風(fēng)險(xiǎn)

與上文所述的不確定收益相對(duì)的,卻是穩(wěn)定性建設(shè)確定性的復(fù)雜度和風(fēng)險(xiǎn)。無(wú)論是風(fēng)險(xiǎn)識(shí)別、風(fēng)險(xiǎn)治理,還是風(fēng)險(xiǎn)預(yù)防,均需要投入大量的精力。

存量風(fēng)險(xiǎn)識(shí)別的難度

在解決問(wèn)題的第一步中,發(fā)現(xiàn)問(wèn)題是重中之重。穩(wěn)定性建設(shè)的第一步同樣是識(shí)別其中的穩(wěn)定性問(wèn)題。但問(wèn)題是,我們?cè)撊绾伟l(fā)現(xiàn)這些問(wèn)題呢?依靠故障或者TS工單嗎?這種方式確實(shí)可以幫助我們發(fā)現(xiàn)問(wèn)題,并在后續(xù)解決問(wèn)題。但這種亡羊補(bǔ)牢的操作,對(duì)于穩(wěn)定性的建設(shè)而言,實(shí)在是太過(guò)滯后,根本達(dá)不到預(yù)期的效果。

為了有效地防范問(wèn)題發(fā)生,我們需要從整體上排除風(fēng)險(xiǎn)——它大到一個(gè)域,幾十個(gè)應(yīng)用,成千上萬(wàn)條調(diào)用鏈路;小到一個(gè)git倉(cāng)庫(kù),數(shù)萬(wàn)甚至數(shù)十萬(wàn)代碼——要準(zhǔn)確評(píng)估整個(gè)域的穩(wěn)定性并識(shí)別其中的風(fēng)險(xiǎn),這無(wú)疑是一項(xiàng)巨大的挑戰(zhàn)。

風(fēng)險(xiǎn)治理的難度

風(fēng)險(xiǎn)識(shí)別已經(jīng)足夠困難,風(fēng)險(xiǎn)治理的復(fù)雜性同樣不容忽視。雖然理論上,技術(shù)同學(xué)從不畏懼已知問(wèn)題,但不同問(wèn)題背后的復(fù)雜性,也往往會(huì)帶來(lái)不同的治理難度。

首當(dāng)其沖的自然是技術(shù)同學(xué)最頭疼的排期問(wèn)題,“世上無(wú)難事,只要有排期”。但正如2.1中提到的,穩(wěn)定性建設(shè)由于價(jià)值的不確定性,往往難以取得足夠的排期。即便是再高瞻遠(yuǎn)矚的管理者,也不得不嚴(yán)格控制技術(shù)投入的占比,將更多的資源用于服務(wù)業(yè)務(wù),創(chuàng)造更多的增長(zhǎng)。

其次,穩(wěn)定性治理本身帶來(lái)的變更風(fēng)險(xiǎn)也不容小覷。這里貼上技術(shù)人員非常喜歡的一張圖,來(lái)貼切地表示這個(gè)難題。

上圖的這個(gè)房屋,毫無(wú)疑問(wèn)是個(gè)風(fēng)吹就塌的危房。但誰(shuí)又真敢動(dòng)手對(duì)這樣的危房進(jìn)行穩(wěn)定性治理呢?如果就是個(gè)普通房屋,推倒重建就完了,但業(yè)務(wù)系統(tǒng)可無(wú)法停機(jī)。在這種情況下進(jìn)行代碼改動(dòng),就如同需要持續(xù)地挪動(dòng)木頭、泥土和石塊,試圖將其替換為堅(jiān)固的建筑材料,卻很可能無(wú)意中移走某個(gè)重要支撐,導(dǎo)致整個(gè)系統(tǒng)崩潰。

這在穩(wěn)定性建設(shè)中是不可接受的。為了預(yù)防可能發(fā)生的故障,反而引入了變更故障,這實(shí)屬本末倒置。

至于另外一種治理方案……新建一個(gè)系統(tǒng),然后把流量切過(guò)去。如果面對(duì)類似圖片這種治理難度地獄級(jí)的項(xiàng)目,確實(shí)是個(gè)最佳選擇,并且該方法也確實(shí)大量應(yīng)用在架構(gòu)治理上(如服務(wù)拆分)。但大部分應(yīng)用,使用該方案又著實(shí)奢侈了。疊加上文提及的排期問(wèn)題,也限制了這種方案成為穩(wěn)定性治理銀彈的可能性。

如果繼續(xù)深入探討變更風(fēng)險(xiǎn)的問(wèn)題,我們必然會(huì)碰到“代碼債務(wù)”的概念。每一位技術(shù)開(kāi)發(fā)者都對(duì)代碼債務(wù)耳熟能詳,深有感觸。它通常定義為低代碼質(zhì)量和不合理架構(gòu)設(shè)計(jì)等一系列技術(shù)負(fù)擔(dān),而這些問(wèn)題并非立刻顯現(xiàn)出危害。一個(gè)重的代碼債務(wù),只要在生產(chǎn)環(huán)境中能夠正常運(yùn)行,就意味著它是能被接受的。即如圖中的房子再怎么危房,沒(méi)塌之前,住人防風(fēng)擋雨都是沒(méi)問(wèn)題的。

然而,代碼債務(wù)阻礙了變更,無(wú)論是業(yè)務(wù)的迭代還是技術(shù)的治理,都會(huì)提升變更的風(fēng)險(xiǎn)。因此,最后的風(fēng)險(xiǎn)治理難度來(lái)到了穩(wěn)定性風(fēng)險(xiǎn)因子中的變更復(fù)雜度問(wèn)題。

命名為變更復(fù)雜度,而非代碼復(fù)雜度這種客觀描述,也是意味著變更難度是包含主觀含義,是因人而異的。例如某個(gè)應(yīng)用由一位同學(xué)貫穿始終地維護(hù),代碼再?gòu)?fù)雜,變更復(fù)雜度也高不到哪里去。因?yàn)檫@份代碼從始至終,都是由同一個(gè)人,以他的思維框架,解讀業(yè)務(wù)鏈路后,再抽象建設(shè)而成的,這份代碼從頭到腳都是這位同學(xué)的形狀。他知道這些代碼從何而來(lái),又應(yīng)當(dāng)往哪里去。但實(shí)際生產(chǎn)過(guò)程中,一個(gè)應(yīng)用往往要經(jīng)歷多人維護(hù),就必然出現(xiàn)信息傳遞的損失。最終,我們?cè)诿鎸?duì)這種代碼時(shí),大概率會(huì)遇到理解困難以及對(duì)變更后果的無(wú)能為力。因此,變更復(fù)雜度的本質(zhì),是由不同人員的思維方式、設(shè)計(jì)理念、編碼習(xí)慣,以及業(yè)務(wù)知識(shí)在傳遞過(guò)程中的信息偏差交織在一起,構(gòu)成的一種現(xiàn)象。

至此,排期、變更復(fù)雜度、變更風(fēng)險(xiǎn)三者,構(gòu)成了整個(gè)穩(wěn)定性風(fēng)險(xiǎn)治理的難度。

增量風(fēng)險(xiǎn)預(yù)防的難度

在此前的討論中,我們已經(jīng)探討了存量風(fēng)險(xiǎn)的識(shí)別和治理。而本節(jié)將重點(diǎn)關(guān)注每次變更引入的增量風(fēng)險(xiǎn)。這是一個(gè)不可忽視的領(lǐng)域,因?yàn)轱L(fēng)險(xiǎn)的根源在于變更,而變更又是業(yè)務(wù)發(fā)展的必然過(guò)程。那么,如何有效控制這些因變更而來(lái)的風(fēng)險(xiǎn)呢?

變更可見(jiàn)性

首先,最重要的是確保變更的可見(jiàn)性和可感知性 。這里所說(shuō)的可見(jiàn)性,不僅僅是變更執(zhí)行者本人的知曉,更是整個(gè)團(tuán)隊(duì)乃至所有相關(guān)方共同的認(rèn)知。畢竟,執(zhí)行變更的同事自然會(huì)清楚自己做了什么,但真正的問(wèn)題在于,執(zhí)行變更的同事是否知道這些變更意味著什么,這個(gè)認(rèn)知和其他相關(guān)人員——比如PM和測(cè)試人員——是否是一致的?

這就是為什么變更可見(jiàn)性如此重要。做過(guò)業(yè)務(wù)負(fù)責(zé)人的都知道,最擔(dān)心的事情就是業(yè)務(wù)/產(chǎn)品和技術(shù)說(shuō)要改個(gè)什么一句話功能,或者是刷數(shù)等操作,技術(shù)同學(xué)順手就給做了;因?yàn)楣δ茳c(diǎn)太小,甚至都沒(méi)通知測(cè)試和PM,直接自測(cè)完就上線了,真就映著一句話:天知地知,你知我知。但這個(gè)卻是風(fēng)險(xiǎn)最高的行為,因?yàn)闆](méi)有任何人幫助變更同學(xué)進(jìn)行二次確認(rèn),不出問(wèn)題都是僥幸。

那么難點(diǎn)來(lái)了,對(duì)一個(gè)域少則幾十,多則數(shù)百的同學(xué),每個(gè)迭代也是幾十個(gè)需求,上百種不同類型的變更,怎么保證每個(gè)微小的變更,都能讓變更的所有相關(guān)方都感知到,并且進(jìn)行有效的二次確認(rèn)呢?

方案可控性

在確認(rèn)了變更共識(shí)后,下一步便是對(duì)變更方案本身進(jìn)行評(píng)估,從而確保每項(xiàng)調(diào)整都符合預(yù)期。但此時(shí),又出現(xiàn)了一個(gè)障礙:如何保證這個(gè)變更是符合預(yù)期的呢?

對(duì)于一項(xiàng)代碼的變更,它不僅會(huì)對(duì)這行代碼的所有上游場(chǎng)景產(chǎn)生影響,更會(huì)影響所有使用到這行代碼結(jié)果的下游場(chǎng)景。若是數(shù)據(jù)的變更,更是牽一發(fā)而動(dòng)全身,所有讀取和寫(xiě)入到這行數(shù)據(jù)的場(chǎng)景都要受到影響。由于整體鏈路的復(fù)雜性和不可控性,對(duì)于變更方案的風(fēng)險(xiǎn)可控性評(píng)估就顯得異常困難。

人員可靠性

最后,涉及到的還有變更執(zhí)行人員本身的可靠性 ,人是同時(shí)具備高上限和低下限的特性的。即便是一個(gè)優(yōu)秀的同學(xué),即有高瞻遠(yuǎn)矚,防范未然的時(shí)候;也有馬失前蹄,被"!"和“NullPointException”搞得焦頭爛額的時(shí)候。

那么怎樣在各種各樣的變更中,去保障人員的下限,不要讓這種人員的波動(dòng)性影響到系統(tǒng)的穩(wěn)定性;甚至盡可能讓人員保持他們的高上限,將更多的穩(wěn)定性風(fēng)險(xiǎn)扼殺在搖籃之中?這便是穩(wěn)定性建設(shè)中最后一個(gè)需要重點(diǎn)考慮的問(wèn)題。

三、如何進(jìn)行穩(wěn)定性建設(shè)?

經(jīng)過(guò)前面的鋪墊,我們已經(jīng)明確了穩(wěn)定性建設(shè)的重要性,以及在實(shí)施過(guò)程中面臨的種種挑戰(zhàn)。那么,問(wèn)題的關(guān)鍵就在于如何克服這些困難,順利進(jìn)行穩(wěn)定性的建設(shè)。實(shí)際操作中,很多治理建設(shè)的思路和策略都已經(jīng)隱含在前文的分析中,現(xiàn)在我們只需將它們整合提煉出來(lái)。

建立穩(wěn)定性共識(shí)

從上文知,困難中排在第一點(diǎn)的,即是穩(wěn)定性治理的優(yōu)先級(jí)和的資源排期問(wèn)題。因此,在解決穩(wěn)定性建設(shè)的客觀困難之前,首先需要業(yè)務(wù)團(tuán)隊(duì)內(nèi)部從主觀層面建立對(duì)穩(wěn)定性的一致認(rèn)知:即業(yè)務(wù)團(tuán)隊(duì)需要針對(duì)本團(tuán)隊(duì)業(yè)務(wù)的重要性、發(fā)展階段、風(fēng)險(xiǎn)情況進(jìn)行綜合評(píng)估,確定好穩(wěn)定性建設(shè)在本團(tuán)隊(duì)中的重要程度。

直白點(diǎn)說(shuō),這個(gè)共識(shí)就是業(yè)務(wù)團(tuán)隊(duì)確定好穩(wěn)定性建設(shè)將在團(tuán)隊(duì)總投入中的時(shí)間占比。

這個(gè)占比可以在迭代維度進(jìn)行波動(dòng),但周期拉長(zhǎng)到季度、年維度的時(shí)候,是需要保持在一個(gè)符合預(yù)期的比例的。它可以是5%或者更低,也可以是10%甚至更高,具體的數(shù)值需要和團(tuán)隊(duì)目前的業(yè)務(wù)和技術(shù)現(xiàn)狀相匹配。

明確穩(wěn)定性建設(shè)目標(biāo)

當(dāng)確定了資源比例后,接下來(lái)就是明確具體的目標(biāo)。在此過(guò)程中,我們需制定可執(zhí)行的方案,將大方向細(xì)化為明確的階段目標(biāo)。

回到1.3腦圖中提供的三個(gè)大方向:

  • 風(fēng)險(xiǎn)前置發(fā)現(xiàn) :側(cè)重于人和流程的管理;
  • 變更風(fēng)險(xiǎn)控制 :關(guān)注系統(tǒng)性架構(gòu)建設(shè);
  • 風(fēng)險(xiǎn)后置處理 :著眼于應(yīng)急響應(yīng),同時(shí)關(guān)注人的應(yīng)急流程和系統(tǒng)的預(yù)案建設(shè);

因此,歸根結(jié)底,穩(wěn)定性的目標(biāo)收斂成是練人、建系統(tǒng)兩種。我們通常建議先從練人中的強(qiáng)化意識(shí)和流程入手,再優(yōu)化系統(tǒng),最后持續(xù)性地提高人員的綜合能力。

這是因?yàn)榧訌?qiáng)團(tuán)隊(duì)意識(shí)和規(guī)范團(tuán)隊(duì)流程的投入相對(duì)較低,通過(guò)制定規(guī)范、流程,進(jìn)行宣導(dǎo)培訓(xùn)甚至考試等形式,不需要投入過(guò)多資源就能取得良好效果。這種意識(shí)的培養(yǎng),雖然不會(huì)立即影響故障率,但有助于營(yíng)造穩(wěn)定性的文化氛圍,為長(zhǎng)期的治理打下基礎(chǔ)。其次,在這一過(guò)程中,無(wú)需直接修改代碼,在初期可以盡量避免“越治理越故障”的困境。最后,加強(qiáng)團(tuán)隊(duì)意識(shí)和規(guī)范團(tuán)隊(duì)流程,有助于后續(xù)保護(hù)好穩(wěn)定性治理結(jié)果。避免一邊堵漏,一邊挖坑的迷惑行為。

需要注意的是,穩(wěn)定性建設(shè)是一個(gè)動(dòng)態(tài)變化的過(guò)程。隨著時(shí)間的推移,人可能會(huì)逐漸懈怠,系統(tǒng)架構(gòu)也可能因?yàn)闃I(yè)務(wù)迭代而腐化。因此,穩(wěn)定性建設(shè)必須是一個(gè)周期性的工作,并且建議每一個(gè)季度都專注于1-2項(xiàng)關(guān)鍵點(diǎn),使得整個(gè)系統(tǒng)的穩(wěn)定性可以在螺旋中上升。

落地穩(wěn)定性建設(shè)任務(wù)

為了有效實(shí)施穩(wěn)定性建設(shè),我們將其任務(wù)進(jìn)一步細(xì)分為五個(gè)核心部分:意識(shí)培養(yǎng)、 安全生產(chǎn)規(guī)范、應(yīng)急響應(yīng)、日常巡檢和架構(gòu)治理 。接下來(lái),我們將逐一闡述這五個(gè)部分的重要性及其具體實(shí)現(xiàn)方案,并表述清楚這些部分應(yīng)對(duì)的是上述的那些困難點(diǎn)。

意識(shí)培養(yǎng)

意識(shí)培養(yǎng)是提升團(tuán)隊(duì)成員在穩(wěn)定性建設(shè)中能動(dòng)性的關(guān)鍵環(huán)節(jié)。它主要涵蓋三個(gè)方面:認(rèn)知、意愿和能力。換句話說(shuō),我們要弄清楚團(tuán)隊(duì)成員對(duì)于穩(wěn)定性的認(rèn)知程度、愿意投入的程度以及他們的能力如何。

認(rèn)知 :團(tuán)隊(duì)成員是否充分了解穩(wěn)定性的重要性。

針對(duì)這一點(diǎn),我們可以定期舉辦“謹(jǐn)慎編碼”宣講,以提高大家的意識(shí)。雖然這看似簡(jiǎn)單,但不可忽視。因?yàn)槿绻L(zhǎng)期不提及穩(wěn)定性,其重要性就會(huì)在潛意識(shí)中隨時(shí)間弱化。

意愿 :團(tuán)隊(duì)成員是否愿意花費(fèi)時(shí)間和精力去評(píng)估并解決穩(wěn)定性風(fēng)險(xiǎn)。

評(píng)估穩(wěn)定性風(fēng)險(xiǎn)往往需要深入細(xì)致的工作,還需要克服習(xí)慣、自信、僥幸、嫌麻煩等心理障礙。為了提升意愿度,可從獎(jiǎng)、懲兩方面入手。如可以通過(guò)設(shè)置穩(wěn)定性紅線或進(jìn)行故障復(fù)盤來(lái)進(jìn)行必要的懲罰,同時(shí)引入激勵(lì)機(jī)制,比如對(duì)表現(xiàn)突出的團(tuán)隊(duì)成員進(jìn)行表彰或績(jī)效激勵(lì)。此外權(quán)責(zé)到人也是激發(fā)意愿的手段之一,當(dāng)同學(xué)有了固定負(fù)責(zé)的應(yīng)用,并有權(quán)限進(jìn)行完全控制時(shí),會(huì)更愿意吃透其業(yè)務(wù),保證其代碼整潔和穩(wěn)定。

能力 :團(tuán)隊(duì)成員能否識(shí)別風(fēng)險(xiǎn),并設(shè)計(jì)有效的解決方案。

這塊可提升點(diǎn)就很多了:如一是案例分享可以擴(kuò)展同學(xué)眼界,通過(guò)舉一反三可以避免同類問(wèn)題的發(fā)生;二是沉淀組內(nèi)/域內(nèi)的穩(wěn)定性知識(shí)庫(kù),將團(tuán)隊(duì)的能力沉淀下來(lái),將團(tuán)隊(duì)的智慧變成個(gè)人的智慧,提高同學(xué)能力上限;三是尋求組內(nèi)同學(xué)的幫助也是一種方法,這適合于發(fā)現(xiàn)了問(wèn)題后,在設(shè)計(jì)方案時(shí)進(jìn)行組內(nèi)交流,查缺補(bǔ)漏,共同設(shè)計(jì)完備的解決方案。

當(dāng)然,意識(shí)培養(yǎng),或者說(shuō)人的培養(yǎng),同樣是一個(gè)龐大復(fù)雜的體系,這里僅針對(duì)三個(gè)關(guān)鍵因素進(jìn)行粗淺的解讀,更多內(nèi)容可以關(guān)注一些專業(yè)書(shū)籍。

安全生產(chǎn)規(guī)范

安全生產(chǎn)規(guī)范,我們定義為為了保證變更風(fēng)險(xiǎn)可控而制定的一系列流程規(guī)范。但很多人對(duì)于這些流程規(guī)范可能不以為然,認(rèn)為繁瑣的過(guò)程除了降低效率外并沒(méi)有什么實(shí)際的益處。但其實(shí),這些環(huán)節(jié)的存在是對(duì)變更方案及其風(fēng)險(xiǎn)進(jìn)行二次確認(rèn)的重要保障。

在一個(gè)典型的需求變更流程中,一般會(huì)有需求評(píng)審、技術(shù)方案評(píng)審、用例評(píng)審、自測(cè)/測(cè)試環(huán)節(jié)、CR、驗(yàn)收等多個(gè)環(huán)節(jié)。為什么需要有這么多環(huán)節(jié)呢?

  • 需求評(píng)審:針對(duì)業(yè)務(wù)變化帶來(lái)的功能變化,在產(chǎn)品、研發(fā)、測(cè)試之間達(dá)成一致,進(jìn)行多方確認(rèn)。
  • 技術(shù)方案評(píng)審:針對(duì)功能變化對(duì)應(yīng)的技術(shù)變化,在產(chǎn)品、研發(fā)、測(cè)試之間達(dá)成一致,進(jìn)行多方確認(rèn)。
  • 用例評(píng)審:針對(duì)功能變化/技術(shù)變化帶來(lái)的用例變化,在產(chǎn)品、研發(fā)、測(cè)試之間達(dá)成一致,進(jìn)行多方確認(rèn)。
  • 自測(cè)/測(cè)試環(huán)節(jié):針對(duì)技術(shù)變化的正確性和完備性,在研發(fā)、測(cè)試之間達(dá)成一致,進(jìn)行二次確認(rèn)。
  • CR:針對(duì)技術(shù)變化對(duì)應(yīng)的代碼變化,在研發(fā)團(tuán)隊(duì)內(nèi)部進(jìn)行風(fēng)險(xiǎn)確認(rèn),屬于二次確認(rèn)。
  • 驗(yàn)收:針對(duì)功能變化的最終效果,在產(chǎn)品、研發(fā)、測(cè)試之間達(dá)成一致,屬于多方確認(rèn)。

可以看到,通過(guò)這些環(huán)節(jié),變更的可見(jiàn)性將得以顯著提升:幾乎所有的相關(guān)方,都能夠準(zhǔn)確知道變更內(nèi)容、變更方案和變更時(shí)間,并共同確認(rèn)過(guò)變更風(fēng)險(xiǎn)。正因?yàn)檫@些環(huán)節(jié)在現(xiàn)有的需求流程中多半能夠充分落實(shí),因此需求變更帶來(lái)風(fēng)險(xiǎn)的概率是相對(duì)較低的。

與需求變更的多方確認(rèn)相反的是,技改需求、curl、數(shù)據(jù)訂正、Ark變更等操作,在技術(shù)部多次管控加碼之前,這些變更操作發(fā)生問(wèn)題的概率遠(yuǎn)高于需求變更。其原因正是由于這些變更可能就是某個(gè)研發(fā)順手操作了,其可見(jiàn)范圍極小。根本沒(méi)有相關(guān)方進(jìn)行多輪有效的二次確認(rèn)操作,容易出問(wèn)題也就不足為奇了。其他類似的案例還有業(yè)務(wù)方突然執(zhí)行了大量的業(yè)務(wù)變更操作,突然進(jìn)行了某項(xiàng)營(yíng)銷活動(dòng)導(dǎo)致引入遠(yuǎn)超預(yù)期的流量等等,這同樣也是由于變更的可見(jiàn)性并未被技術(shù)團(tuán)隊(duì)感知,而導(dǎo)致的變更風(fēng)險(xiǎn)。

因此,安全生產(chǎn)規(guī)范,就是用來(lái)約定當(dāng)任意變更產(chǎn)生時(shí),需要通過(guò)何種流程將該變更通知到所有相關(guān)方,并通過(guò)何種方式進(jìn)行多方確認(rèn),共同確保變更風(fēng)險(xiǎn)可控的共識(shí)方案。了解了安全生產(chǎn)的本質(zhì)后,各團(tuán)隊(duì)就完全可以針對(duì)自己的業(yè)務(wù)特性和所有的變更場(chǎng)景,制定專屬的安全生產(chǎn)規(guī)范。其完備性取決于變更場(chǎng)景的完備性,其有效性取決于多方確認(rèn)的有效性。這樣,也同時(shí)回答了“如何制定一個(gè)好的安全生產(chǎn)規(guī)范”這個(gè)問(wèn)題。

應(yīng)急響應(yīng)

應(yīng)急響應(yīng)主要分三個(gè)部分:發(fā)現(xiàn)、響應(yīng)和處理;關(guān)鍵的標(biāo)準(zhǔn)則是及時(shí)性和有效性。及時(shí)性確保了問(wèn)題的影響不被放大,有效性則確保了已經(jīng)發(fā)生的影響能被控制和修復(fù)。

發(fā)現(xiàn):發(fā)現(xiàn)的關(guān)鍵點(diǎn)是及時(shí)。若不考慮及時(shí)性,客戶進(jìn)線、結(jié)算錯(cuò)誤這種后置發(fā)現(xiàn)手段,是可以發(fā)現(xiàn)所有的問(wèn)題的。但這種通過(guò)實(shí)際的業(yè)務(wù)損失來(lái)發(fā)現(xiàn)問(wèn)題的方案,顯然不符合預(yù)期。因此,必須通過(guò)系統(tǒng)的手段,做好監(jiān)控、告警布防,不論是系統(tǒng)資源使用率、服務(wù)可用性情況,還是業(yè)務(wù)數(shù)據(jù)正確性、波動(dòng)值,均要做好完善的布控,方可及時(shí)發(fā)現(xiàn)。

響應(yīng):響應(yīng)的要點(diǎn)同樣也是及時(shí),它關(guān)系到已經(jīng)出現(xiàn)的異常事件是否有人立即進(jìn)行跟進(jìn)處理,它一方面和意識(shí)培養(yǎng)直接相關(guān),對(duì)應(yīng)人的責(zé)任意識(shí)。另一方面對(duì)應(yīng)的工具的正確使用,諸如手機(jī)、電腦、飛書(shū)等通知配置,也是關(guān)系到值班同學(xué)是否能第一時(shí)間獲取到緊急事件通知的關(guān)鍵。

處理:?jiǎn)栴}處理是應(yīng)急響應(yīng)的最后一環(huán),它需要兼顧及時(shí)性和有效性:是否能夠快速定位根因?是否能夠有效止血?這就不僅和個(gè)人的能力有關(guān),也和系統(tǒng)的完備性有關(guān)。

個(gè)人能力這塊基本和3.3.1提及的內(nèi)容一致。但系統(tǒng)能力的完備性,則同樣可以展開(kāi)大量的建設(shè)任務(wù),如:為了定位問(wèn)題根因:告警信息的重要性(是否提供關(guān)鍵信息快速定位),日志信息的完備性和串聯(lián)性(是否能夠提供足夠的信息定位問(wèn)題,是否提供的信息均是重要的關(guān)聯(lián)信息,減少不必要的噪聲),都是非常重要的基礎(chǔ)建設(shè)。

為了快速止血:除了通過(guò)個(gè)人的能力快速找到止血方案外,更重要的在于系統(tǒng)是否預(yù)設(shè)過(guò)相應(yīng)的故障,并提供了止血預(yù)案。如果有,往往可以快速解決問(wèn)題。但如果沒(méi)有,要在短時(shí)間內(nèi)解決問(wèn)題,往往難度極高。如果操作不當(dāng),容易引入額外的風(fēng)險(xiǎn)。

最后,團(tuán)隊(duì)中關(guān)于應(yīng)急問(wèn)題處理的知識(shí)庫(kù)也是非常重要的知識(shí)沉淀,有助于不熟悉該業(yè)務(wù)的同學(xué),也能夠快速定位和處理問(wèn)題。

日常巡檢

“防患于未然”是我們維護(hù)穩(wěn)定性的重要目標(biāo)。通過(guò)日常巡檢,團(tuán)隊(duì)能夠識(shí)別潛在的風(fēng)險(xiǎn)苗頭?;蚴锹齋QL、或是慢接口,或是cpu突刺。包括業(yè)務(wù)數(shù)據(jù)量是否逐步增長(zhǎng)到了危險(xiǎn)的范圍,各項(xiàng)活動(dòng)/配置是否臨近過(guò)期,上下游的調(diào)用量是否接近容量上限……等等,這些風(fēng)險(xiǎn),均可以在相應(yīng)的巡檢中發(fā)現(xiàn)問(wèn)題,避免潛在風(fēng)險(xiǎn)逐步積累引發(fā)的災(zāi)難性后果。

架構(gòu)治理

如果之前的部分主要關(guān)注人員層面的提升,那么架構(gòu)治理則是從代碼層面提升系統(tǒng)穩(wěn)定性的一項(xiàng)重要措施,能夠真正提升系統(tǒng)抗風(fēng)險(xiǎn)的硬實(shí)力。

從穩(wěn)定性共識(shí)中可知,架構(gòu)治理的能影響的關(guān)鍵因子為變更風(fēng)險(xiǎn) ,而變更風(fēng)險(xiǎn)主要包括變更頻率、變更復(fù)雜度和變更爆炸半徑。

對(duì)應(yīng)的領(lǐng)域建模、高內(nèi)聚低耦合、OO等的架構(gòu)原則,反映到變更風(fēng)險(xiǎn)中,就是控制了變更復(fù)雜度。因?yàn)閮?nèi)聚性,變更多可以聚焦在單一應(yīng)用中,爆炸半徑也同時(shí)得到控制。

資源隔離的架構(gòu)設(shè)計(jì),則是專門用于控制爆炸半徑,不論是容器資源、線程池,還是DB、redis,甚至是P0/PN鏈路拆分等,均為控制爆炸半徑,避免相互影響。

還有一種特殊的稱作B/C流量拆分,這種看似是爆炸半徑,但實(shí)際上也控制了變更頻次?;蛘吒_的說(shuō)法,是運(yùn)營(yíng)/B/C三端拆分,它的邏輯除了流量來(lái)源不同之外,更在于場(chǎng)景和變更頻次不同。一般可以認(rèn)為B端/運(yùn)營(yíng)端的供給側(cè),相較于C端的消費(fèi)側(cè),會(huì)有更復(fù)雜的模型,更高的變更頻次。進(jìn)行這幾端的拆分,更多在于減少C端(往往更核心)的變更頻次,減少變更時(shí)的相互影響。

關(guān)于架構(gòu)治理還有一個(gè)關(guān)鍵點(diǎn),那就是抓住主要矛盾,先從最核心的業(yè)務(wù)場(chǎng)景開(kāi)始治理。如果沒(méi)有考慮好治理優(yōu)先級(jí),那么茫茫多的場(chǎng)景和鏈路就會(huì)成為一個(gè)交織在一起的毛線球,是無(wú)法進(jìn)行抽絲剝繭逐一治理的。

資損防控

最后還有一個(gè)特殊的穩(wěn)定性場(chǎng)景,資損防控。它在穩(wěn)定性建設(shè)中比較特殊,是一個(gè)強(qiáng)業(yè)務(wù)相關(guān)的防控方案。一般可以在事前、事中、事后三個(gè)環(huán)節(jié)進(jìn)行防控。

事前環(huán)節(jié):一般考慮防呆攔截/提醒、二次確認(rèn)、審批流等多輪操作確認(rèn);更深入的可以增加結(jié)果預(yù)計(jì)算、影響面提示、前后對(duì)比等重提示,給到使用方對(duì)于執(zhí)行后果的直觀展示,減少誤操作可能性。

事中環(huán)節(jié):一般會(huì)有資金上限熔斷、實(shí)時(shí)/準(zhǔn)實(shí)時(shí)Dcheck預(yù)警、相關(guān)資金指標(biāo)波動(dòng)預(yù)警等策略,在出現(xiàn)資損風(fēng)險(xiǎn)的時(shí)候進(jìn)行預(yù)警,或業(yè)務(wù)熔斷。

事后環(huán)節(jié):一般會(huì)采取T+1對(duì)賬,確認(rèn)多方資金數(shù)據(jù)一致。并輔以貨款抵扣、調(diào)賬等工具,在發(fā)生資金差額的情況下,進(jìn)行金額補(bǔ)償。

穩(wěn)定性建設(shè)的困難是否都被解決了?

最后,讓我們回過(guò)頭來(lái)復(fù)盤一下第2節(jié)中提到的困難,看看這些攔路虎是否在本節(jié)中被逐一擊破。

首先是短期價(jià)值不明確帶來(lái)的爭(zhēng)議,這塊我們通過(guò)建立團(tuán)隊(duì)的穩(wěn)定性共識(shí)得到徹底的解決。

其次穩(wěn)定性建設(shè)的復(fù)雜性和風(fēng)險(xiǎn)性:

  • 先說(shuō)相對(duì)明確的增量風(fēng)險(xiǎn)預(yù)防:3.3.2中的安全生產(chǎn)規(guī)范整個(gè)存在的意義就是為了通過(guò)流程來(lái)控制增量風(fēng)險(xiǎn)。
  • 然后是風(fēng)險(xiǎn)治理的難度:該問(wèn)題先可以通過(guò)架構(gòu)治理進(jìn)行分而治之,將大問(wèn)題拆解成若干個(gè)小問(wèn)題;再通過(guò)安全生產(chǎn)規(guī)范,控制每次解決小問(wèn)題引入風(fēng)險(xiǎn)的概率。
  • 最后是存量風(fēng)險(xiǎn)識(shí)別的難度:日常巡檢有助于發(fā)現(xiàn)存量風(fēng)險(xiǎn)的苗頭,意識(shí)培養(yǎng)則有助于對(duì)單應(yīng)用風(fēng)險(xiǎn)的摸排,架構(gòu)治理則對(duì)應(yīng)了對(duì)于應(yīng)用間、甚至整個(gè)域內(nèi)的依賴鏈路風(fēng)險(xiǎn)評(píng)估和治理。

至此,所有的核心困難點(diǎn)都有了解決的方案,穩(wěn)定性治理不再是一座不可逾越的高山,剩下的無(wú)非是根據(jù)具體問(wèn)題,照著公式,逢山開(kāi)路,遇水搭橋了。

四、穩(wěn)定性建設(shè)全景圖

通過(guò)以上的探討,我們不僅分析了穩(wěn)定性建設(shè)的重要性,還從理論角度,揭示了穩(wěn)定性建設(shè)的核心要素與挑戰(zhàn),提供了具體的解決方案和建設(shè)任務(wù)。簡(jiǎn)單統(tǒng)合一下,就生成了下面的穩(wěn)定性建設(shè)全景圖,希望能為正在努力追求系統(tǒng)穩(wěn)定性的小伙伴們提供啟發(fā)與幫助。

當(dāng)然,其中的支撐事項(xiàng)僅是拋磚引玉,每個(gè)團(tuán)隊(duì)都可以因地制宜,設(shè)計(jì)有團(tuán)隊(duì)特色的支撐事項(xiàng)。只要是能夠服務(wù)于上層的建設(shè)目標(biāo),就具備落地的價(jià)值。

圖片 圖片

責(zé)任編輯:武曉燕 來(lái)源: 得物技術(shù)
相關(guān)推薦

2022-09-15 08:33:27

安全生產(chǎn)系統(tǒng)Review

2025-02-11 10:13:05

2023-04-26 18:36:13

2025-07-31 01:25:00

2023-08-22 14:29:05

大前端

2023-05-25 21:35:00

穩(wěn)定性建設(shè)前端

2010-09-30 16:35:34

DB2隔離級(jí)別

2010-09-07 13:31:02

無(wú)線網(wǎng)絡(luò)穩(wěn)定性

2023-06-30 08:43:36

2023-06-15 11:48:09

2009-07-27 10:08:14

2011-12-21 09:46:46

程序員

2011-08-01 11:03:15

2020-07-28 08:07:14

ElasticSear

2020-07-13 08:10:13

軟件設(shè)計(jì)系統(tǒng)

2023-05-30 07:27:45

高可用架構(gòu)流量

2024-03-26 00:00:02

交易鏈路同城雙活交易

2022-05-05 19:20:24

數(shù)據(jù)系統(tǒng)穩(wěn)定性峰會(huì)數(shù)據(jù)系統(tǒng)

2024-12-12 09:18:21

2025-10-10 08:20:59

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)