交付铁三角的故事之兵戎相见
簡介:大家好,交付鐵三角帶著全新的故事來啦!一直被應(yīng)用交付難題所困擾的他們這次又遇到了新的難題,售前大佬的一句客戶資源規(guī)劃緣何讓開發(fā)鐵子暴怒,交付小錘的勸架為何致使自己的交付團(tuán)隊(duì)陷入這場漩渦之中,在客戶現(xiàn)場慘遭客戶對交付質(zhì)量的質(zhì)疑。在這場風(fēng)波背后,又隱藏著怎樣的破解之法,幫助他們重歸于好?快來點(diǎn)擊下方文章了解吧!
作者:新鈺
大家好,我是專注交付的王小錘,與開發(fā)老哥鐵子還有售前大佬強(qiáng)哥組成的“交付鐵三角”團(tuán)隊(duì),我們又來啦!
我們 “交付鐵三角” 服務(wù)于一家提供大數(shù)據(jù)分析服務(wù)的 ISV 企業(yè)。通過對客戶提供的大數(shù)據(jù),進(jìn)行多維度智能化分析,提供用戶畫像、潛客分析、銷量預(yù)測等信息,將數(shù)據(jù)價(jià)值最大化后給到客戶,助力客戶通過分析結(jié)論達(dá)到最大的市場收益。近年來,出于對數(shù)據(jù)安全性以及安全合規(guī)等方面的考慮,選擇私有化交付的客戶越來越多,而他們的要求也變得復(fù)雜多變,無形中我們被迫面臨各類復(fù)雜的交付環(huán)境,同時(shí)產(chǎn)品交付壓力與日俱增。
這不,一直被軟件應(yīng)用私有化交付問題困擾的我們,近期又碰到了新的交付難題,為此還鬧的不歡而散。
兵馬未動(dòng)之糧草準(zhǔn)備多少?
起因
故事是從那天強(qiáng)哥的抱怨開始持續(xù)發(fā)酵的,那天強(qiáng)哥一臉的沮喪回到公司,拉著鐵子就問能不能給他一份清單,讓他帶給客戶。好讓客戶知道要是用咱們的 SaaS 產(chǎn)品,需要買多少設(shè)備,準(zhǔn)備多大的硬盤?咱們的產(chǎn)品會(huì)占用多少內(nèi)存空間?他抱怨道:“因?yàn)榭蛻粜枰幚淼臄?shù)據(jù)量很大,所以最近對資源的使用情況變得格外敏感。客戶希望將每一寸資源都用在刀刃上,像是客戶自身有 MySQL、Redis,或者已經(jīng)在使用一些云上資源,那么就希望能將這些資源做到合理的利用與規(guī)劃,或者客戶自身有幾臺服務(wù)器,那么他們最不希望,有些服務(wù)器配置的很滿,有些卻只使用了一小部分資源的情況發(fā)生。”
今天他去到客戶現(xiàn)場,客戶直接問他要準(zhǔn)備多少資源剛好夠用,能不能給個(gè)清單。當(dāng)時(shí)強(qiáng)哥一下子被問住了,忙說下次去的時(shí)候準(zhǔn)備好給到客戶,讓客戶也好有個(gè)心理預(yù)期。
這時(shí)鐵子一聽就不樂意,沒好氣的對強(qiáng)哥說:“你怎么能亂答應(yīng)客戶呢?和你說過很多次了,我們怎么可能準(zhǔn)備的出來這樣的清單,這種很難預(yù)估的,我只能說去試試!就算準(zhǔn)備出來了,也不會(huì)有多準(zhǔn)的!”強(qiáng)哥一聽也來了脾氣:“客戶要了好幾次了,我不給的話,這單還要不要談了?”
升級
聽到這里我忙勸架,讓鐵子別激動(dòng),這個(gè)事情試試,先拿一個(gè)出來,然后強(qiáng)哥叮囑客戶先按照這個(gè)預(yù)估的資源情況的基礎(chǔ)上往大些準(zhǔn)備就好了嘛。沒想到,就是這句話,將我們交付團(tuán)隊(duì)帶到了一個(gè)個(gè)坑之中。
而為了打動(dòng)客戶,讓客戶感覺不需要花太多錢就可以部署好這個(gè)數(shù)據(jù)產(chǎn)品,鐵子給到強(qiáng)哥的資源規(guī)劃清單相對保守些。直到那天,我們遇到一個(gè)客戶,真的按照強(qiáng)哥帶去的清單做的準(zhǔn)備,竟沒有多一絲資源冗余給到我們。當(dāng)我們?nèi)ゲ渴鸬臅r(shí)候,發(fā)現(xiàn)根本不夠部署我們的產(chǎn)品包。因?yàn)橘Y源不足導(dǎo)致無法完整運(yùn)行,最終被迫在現(xiàn)場裁剪產(chǎn)品資源開銷后重新部署,這個(gè)過程消耗了大量的時(shí)間
于是在客戶現(xiàn)場,就看到我們在反復(fù)部署,將環(huán)境部署到一半,鏟掉,再去部署。當(dāng)時(shí)客戶就和我們在一起,看到屏幕上反復(fù)出現(xiàn)的 delete ,不住的搖頭。那時(shí)的我們感覺太挫敗了,后來客戶看不下去了,直言:“你們這個(gè)交付包是不是質(zhì)量有問題啊?這么反反復(fù)復(fù)的到底還能不能跑起來?” 我們連忙安撫客戶,說放心,不是交付包有問題,是咱們的環(huán)境有點(diǎn)復(fù)雜需要稍微費(fèi)點(diǎn)時(shí)間調(diào)試。而我們心里知道這些話是說給客戶聽的,就是客戶那邊資源沒準(zhǔn)備足,我們需要對現(xiàn)在的產(chǎn)品現(xiàn)場調(diào)試修改,而我們卻不能怪到客戶頭上。
激化
而不巧的是,我們才交付好后回來沒兩天,客戶一個(gè)電話過來,和我們抱怨說這才用了多久,就宕機(jī)了。我們出發(fā)前,就在猜是不是又是因?yàn)橘Y源的問題,他們需要處理的數(shù)據(jù)量還是很大的,當(dāng)初部署完留給業(yè)務(wù)運(yùn)行處理的空間本就不是很多了。果然,當(dāng)我們飛過去排查后發(fā)現(xiàn),確實(shí)資源不足需要擴(kuò)容,但是擴(kuò)容的話,需要將客戶目前的業(yè)務(wù)中斷。終于,這個(gè)舉動(dòng)導(dǎo)致客戶的怒氣值爆棚,直言我們的交付質(zhì)量太差。
爆發(fā)
當(dāng)然我們也很委屈,回去后一名交付同學(xué)在復(fù)盤會(huì),直接將這些話透傳給到開發(fā)團(tuán)隊(duì),進(jìn)一步導(dǎo)致了矛盾激化。
鐵子立馬反擊說:“話不能這么說,本來就說了這個(gè)清單只是參考,我們哪兒想到客戶那么實(shí)誠,原原本本按照這個(gè)來準(zhǔn)備,一點(diǎn)冗余空間都沒準(zhǔn)備。而且我們?nèi)藶橐稽c(diǎn)點(diǎn)去進(jìn)行的核算,已經(jīng)都占用我們很多研發(fā)時(shí)間了,你們還不領(lǐng)情。你們可知道,運(yùn)行時(shí)資源情況會(huì)動(dòng)態(tài)改變的,這讓我們怎么來評估,很難得好不好!你們倒是不寫代碼,體諒體諒我們開發(fā)同學(xué)好不好,不要上來就甩鍋。”
強(qiáng)哥聽到我們屋內(nèi)吵起來,走了進(jìn)來,我原以為他是來勸架的,沒想到他進(jìn)來后又進(jìn)行了補(bǔ)刀。他說剛才接到另一個(gè)客戶電話,說按照他的清單準(zhǔn)備的資源,結(jié)果有些機(jī)器資源都沒怎么用上,空置在那里了,直接浪費(fèi)他們的錢,體驗(yàn)很差,感覺我們很不靠譜。
鐵子聽完我們的集體吐槽,留下一句,說了不好規(guī)劃你們不聽,我有什么辦法后推門而出,再也不理我們了。
這已經(jīng)是我們交付鐵三角不知道第幾次爭吵了,每次都是因?yàn)榻桓稌r(shí)出現(xiàn)的這些問題而吵架,最終鬧的不歡而散。
大戰(zhàn)前夕不來場戰(zhàn)略演練?
盡管吵歸吵,我們的項(xiàng)目還是需要鐵子出包,這天我們還是按照平時(shí)那樣,拿著交付包去到客戶現(xiàn)場。到達(dá)客戶現(xiàn)場后,我們懵了,交付地點(diǎn)在大山深處的廠房不說,客戶準(zhǔn)備的機(jī)器還十分老舊。我們?nèi)グ惭b的時(shí)候,一直在心里犯嘀咕。好在,盡管客戶的網(wǎng)絡(luò)情況比較復(fù)雜,機(jī)器老舊,我們的部署困難重重,但我們還是順利完成了部署。就在我們準(zhǔn)備離開的時(shí)候,廠房突然停電了。客戶解釋道:“我們這邊比較偏遠(yuǎn),有時(shí)候會(huì)動(dòng)不動(dòng)跳下閘,沒事,一會(huì)兒就來電了。”
當(dāng)電力恢復(fù)時(shí),如你所猜測的那樣,我們的產(chǎn)品跑不起來了,需要重新啟動(dòng)幾個(gè)組件。當(dāng)時(shí)交付同學(xué)就說回去復(fù)盤的時(shí)候要提一下,你看,就停了下電,斷電重啟都實(shí)現(xiàn)不了。
復(fù)盤會(huì)上,鐵子這樣解釋道:“每次出包前,我們已經(jīng)進(jìn)行了反復(fù)的驗(yàn)證,雖然這部分工作耗時(shí)耗力,但相對來說我們已經(jīng)盡力了。盡管這樣我們其實(shí)還是無法保證交付包一定能夠容忍很多特定場景的,這個(gè)實(shí)現(xiàn)起來是很困難的。
另外,線下交付場景中問題的處理大多與環(huán)境、配置有關(guān),當(dāng)由不同的交付人員處理時(shí),每個(gè)人處理的環(huán)境、產(chǎn)品故障偏向點(diǎn)狀解決。而當(dāng)遇到新的問題時(shí),需要重新開始排查,摸石頭過河效率較低,那便是你們交付同學(xué)的問題了。由于你們并沒有相關(guān)知識的沉淀,并未提供給到我們這些信息,為下次演練提供素材和參考,這樣我們只能憑我們的經(jīng)驗(yàn)對一些場景進(jìn)行演練,有遺漏的場景太正常了,這才是問題的關(guān)鍵所在。
另外,故障排查數(shù)據(jù)量大,一個(gè)組件出問題排查起來確實(shí)很困難,這個(gè)也是不爭的事實(shí)。但是交付前我們確實(shí)進(jìn)行了充分的模擬演練,已經(jīng)最大限度的來降低問題出錯(cuò)的概率了。”
聽完鐵子各打兩大板的發(fā)言,這次沖突雖然沒有激化。但是我們對于鐵子給出的說法并不滿意,會(huì)議結(jié)束后交付的其他同學(xué)拿起電腦頭也不回的走了。而我坐在會(huì)議室,看著鐵子在不住的搖頭嘆氣。那一刻,我竟感受到了技術(shù)同學(xué)一瞬間的絕望和難過。他在強(qiáng)忍著,只見鐵子一手捂緊拳頭一手不停的撓頭,好似下了很大的決心。
兵馬未動(dòng)之糧草先行
時(shí)間不知不覺的過去,直到有一天,鐵子找到我和強(qiáng)哥,喊我們一起吃個(gè)飯。吃飯的時(shí)候,我們才知道,事后鐵子那個(gè)氣啊,于是為了爭口氣,賭上公司研發(fā)一把手的尊嚴(yán)。拉著開發(fā)團(tuán)隊(duì)徹夜分析,發(fā)現(xiàn)核心矛盾點(diǎn)如下圖所示,最終導(dǎo)致客戶質(zhì)疑我們的交付質(zhì)量。而這一切都源于資源評估這一步,如果把這個(gè)技術(shù)難點(diǎn)突破了,我們的矛盾便可以解決。一邊生氣一邊研究的過程中,他想到了云原生應(yīng)用交付平臺 ADP(以下簡稱 ADP),上次拜訪阿莫了解應(yīng)對軟件應(yīng)用交付難題的招式的時(shí)候,他好像提到過一下,于是他進(jìn)入 ADP 平臺,看到里面真的有資源規(guī)劃能力,經(jīng)過分析研究,發(fā)現(xiàn)可以很好的解決當(dāng)前這個(gè)矛盾。
資源規(guī)劃能力
ADP 的資源規(guī)劃功能可幫助我們,通過模擬部署能力快速且高效的評估出合適的集群資源配置,如:CPU、內(nèi)存、存儲分別需要多少,還可以在部署失敗后查看未成功調(diào)度的 pod 數(shù)以及原因,進(jìn)行調(diào)整,有效降低由人力評估效率低下、動(dòng)態(tài)場景難以統(tǒng)計(jì)準(zhǔn)確等原因所導(dǎo)致的一系列問題。
三步實(shí)現(xiàn)快速資源規(guī)劃
1、自動(dòng)統(tǒng)計(jì)產(chǎn)品的實(shí)際部署開銷。
2、對擬定的節(jié)點(diǎn)資源規(guī)格進(jìn)行仿真調(diào)度實(shí)驗(yàn),得出實(shí)際的部署效果。
3、查看調(diào)度失敗的 Pod 情況,調(diào)整節(jié)點(diǎn)資源規(guī)格,秒級重試驗(yàn)證。
鐵子說完這些后,看向強(qiáng)哥道:“你看,以后我們產(chǎn)品適配改造好后,跑一份更靠譜些的資源容量清單給你,你拿給客戶,就讓客戶按照這個(gè)準(zhǔn)備,還是有問題的話,你來找我,隨便你怎么兇我我都認(rèn),好不好?”
強(qiáng)哥聽完邊點(diǎn)頭邊說道:“行,這可是你說的!一會(huì)兒你把明天我要去聊的客戶,他的資源規(guī)劃清單給到我,我明天帶過去。”
“好的” ,鐵子邊答應(yīng)邊扭頭看向我,對我說道:“小錘,強(qiáng)哥前置把客戶那邊搞定,客戶按照清單中的資源情況進(jìn)行準(zhǔn)備。那以后你們交付團(tuán)隊(duì)再也不會(huì)出現(xiàn),在客戶現(xiàn)場反復(fù)部署安裝,部署了,鏟掉,再部署,再鏟掉,這樣尷尬的情況了!在信老哥一次好不好?” 我拍拍他的肩膀道:“ 好的老哥,再信你一回!”
不打無準(zhǔn)備之仗
關(guān)于交付同學(xué)提懷疑鐵子他們出包前驗(yàn)證不充足的事情。雖說鐵子他們心里不服氣,但是想了想,本身交付的場景就是各種各樣的,確實(shí)很難做到面面俱到,懷疑開發(fā)同學(xué)演練不充分也確實(shí)是有道理的。于是開發(fā)團(tuán)隊(duì)的小伙伴集中起來,梳理了許多的演練場景,然后鐵子又將這些場景在 ADP 平臺中一一查看,發(fā)現(xiàn) ADP 平臺可以自動(dòng)實(shí)現(xiàn)這些場景的線上集成一鍵演練,而且涵蓋的演練場景比他們想到的還要多。
故障演練能力
ADP 提供的故障演練能力可以實(shí)現(xiàn),在線上集成環(huán)節(jié)即可對線下交付中常見的各類故障場景下產(chǎn)品編排的容錯(cuò)性、可靠性和可恢復(fù)性進(jìn)行演練,保證編排穩(wěn)定可靠。
基于線下交付經(jīng)驗(yàn)設(shè)計(jì)的故障演練場景,對基礎(chǔ)設(shè)施、底座、中間件的常見故障場景進(jìn)行覆蓋,無論集群級別的大規(guī)模故障還是節(jié)點(diǎn)、Pod 級別的資源故障,都可以在線上完成演練,可基于產(chǎn)品在常見故障場景下的問題進(jìn)行針對性優(yōu)化。
ADP 故障演練與 AHAS 故障演練產(chǎn)品進(jìn)行深度集成,演練場景豐富,且可一鍵創(chuàng)建線上產(chǎn)品環(huán)境并完成 AHAS 探針接入。基于 AHAS 故障演練產(chǎn)品提供的流程編排能力,可實(shí)現(xiàn)常見故障場景的一鍵準(zhǔn)備、注入和恢復(fù)。使產(chǎn)品在常見故障場景下可以預(yù)設(shè)其可靠性、可恢復(fù)性、告警及時(shí)性,大大增加交付信心。
可演練場景如下:
說完這些,鐵子略帶得意的看下我們兩個(gè),問道:“怎么樣,聽完有沒有覺得交付包可靠了許多,信心滿滿?我們開發(fā)團(tuán)隊(duì)現(xiàn)在已經(jīng)在按照這些流程來進(jìn)行交付了。小錘,下一次交付完記得回來和我反饋,要是交付質(zhì)量有感覺提升了,體驗(yàn)棒棒的,別忘了請我吃飯哈!”
“好的,沒問題!” ?聽完鐵子的一番解釋和介紹,我們都覺得這次靠譜了很多,對下一次的交付充滿了期待,于是我爽快的答應(yīng)了他。
鐵子還說他請我們吃飯前還聯(lián)系了下 ADP 的阿莫,和他聊起來這兩個(gè)能力,他說現(xiàn)在做的還比較初級,后續(xù)在資源規(guī)劃和故障演練能力上還會(huì)加大投入。
在資源規(guī)劃方面,現(xiàn)在提供的是你們部署時(shí)所需的規(guī)劃清單,但是后續(xù)我們?yōu)榱烁泳珳?zhǔn),還將引入線上的壓力測試,這樣你們的產(chǎn)品在運(yùn)行一段時(shí)間后是否還能扛得住就清晰明了了,你說的小錘他們部署好立馬又回去擴(kuò)容的情況可以更有效的避免了。
演練場景這部分,我們后續(xù)計(jì)劃在交付團(tuán)隊(duì)交付部署好之后,可以讓小錘他們在現(xiàn)場再跑一遍故障演練場景,為交付驗(yàn)收再加一層保障,做到出包前交付后都進(jìn)行充分驗(yàn)證。這樣你們用著也會(huì)更放心些,還可以將精力回歸業(yè)務(wù)發(fā)展上。
就這樣,一場兄弟反目的風(fēng)波就此告一段落。
總結(jié)
交付質(zhì)量提升大法
資源評估—— 帶著合理且可靠的資源規(guī)劃清單給到客戶,減少資源浪費(fèi)、避免資源規(guī)劃帶來的業(yè)務(wù)中斷風(fēng)險(xiǎn)、杜絕反復(fù)交付部署情況的發(fā)生。
故障演練—— 出包前一鍵演練或者自動(dòng)化故障演練,做到每個(gè)包都千錘百煉,每個(gè)可能的故障坑,交付人員心里有數(shù),出問題快速排除與解決。
提到 ADP,上次拜訪阿莫已詳細(xì)介紹 ADP 作為一款應(yīng)用交付的利器,提供以下能力:
全棧式在線化服務(wù):穩(wěn)定可靠的中間件適配、極致簡化的交付流程。
異構(gòu)環(huán)境全覆蓋:通過集群鏡像實(shí)現(xiàn)異構(gòu) IaaS 交付、通過應(yīng)用管控實(shí)現(xiàn)異構(gòu) Kubernetes 交付、以及面向開放生態(tài)的規(guī)劃。
穩(wěn)定可運(yùn)維底座:ACK Distro 底座、運(yùn)維管控平臺能力。
上述能力可有效應(yīng)對我們的產(chǎn)品適配成本高、部署環(huán)境復(fù)雜、運(yùn)維低效且門檻高的煩心事,如果感興趣可在文末點(diǎn)擊鏈接,了解上次拜訪細(xì)節(jié)。
而這次竟然是 ADP 提供的能力讓我們重歸于好,看來是時(shí)候再約阿莫他們多聊聊,看看還有什么驚喜,加上上次他埋了幾個(gè)小問題讓我們甚是好奇。待我們再次拜訪阿莫后來同大家分享,一起看看還有哪兒些你不知道的事情吧!
獨(dú)家交付秘籍之招式拆解(第一回)-阿里云開發(fā)者社區(qū)
(本文純屬虛構(gòu),如有雷同純屬巧合)
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?
總結(jié)
以上是生活随笔為你收集整理的交付铁三角的故事之兵戎相见的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云RDS深度定制-XA Crash
- 下一篇: 一撕得:全员参与低代码开发,全面实现企业