云計(jì)算環(huán)境春季大清理最佳實(shí)踐
譯文技術(shù)債務(wù)來自許多軟件實(shí)踐/做法,而其中大多數(shù)實(shí)踐/做法相當(dāng)明顯,是故意選擇的結(jié)果。不過在云計(jì)算領(lǐng)域,有一些隱伏的、幾乎看不見的新來源導(dǎo)致了軟件無序。
連云計(jì)算也需要春季大清理。而這種大清理不是指你已經(jīng)有所了解的重構(gòu)和數(shù)據(jù)質(zhì)量工作。那些“重大項(xiàng)目”不容易漏掉,現(xiàn)在我們需要注意只有在變得特別突出時(shí)才會(huì)注意到的那些細(xì)小問題。
由于云系統(tǒng)易于配置,這些新的小債務(wù)很快就會(huì)顯露出來。添加新的字段,編輯公式,修改報(bào)表,更改參數(shù)選用表值,這每一項(xiàng)操作都只需要短短幾秒鐘。而這些小更改會(huì)帶來重大的后果或影響。拋開沒有全面的方法可以清點(diǎn)所有更改這一點(diǎn)不說,新添或更改的條目引起的連鎖反應(yīng)很難評(píng)估。
所以,撤銷更改(為了停用過時(shí)功能或糾正新癥狀)涉及的工作量比當(dāng)初進(jìn)行更改所需的工作量要大得多。由于日積月累,原先的小債務(wù)也開始變得令人討厭。
當(dāng)然了,傳統(tǒng)派會(huì)提到采用配置控制這一方法。對(duì)此我深表贊同:云系統(tǒng)比傳統(tǒng)系統(tǒng)更加需要配置控制,就因?yàn)樗鼈兏菀资褂茫彝ǔR砸环N完全分散的方式來加以管理。
為此我曾在四年前撰文過,使用云系統(tǒng)支持的新模式將更改記入文檔。但如果將更改記入到配置控制系統(tǒng)所花的時(shí)間比實(shí)際更改所花的時(shí)間還要長,你沒必要是行為經(jīng)濟(jì)學(xué)家就知道人們不會(huì)記入更改。這是人性使然――誰都知道,用牙線清潔牙齒受益無窮,可是由于每天要花2分鐘,于是沒人經(jīng)常用牙齒清潔牙齒。
Salesforce.com用戶們的好消息
這里有幾則好消息,至少對(duì)Salesforce.com用戶們來說是這樣。系統(tǒng)會(huì)自動(dòng)保持一份管理更改日志。它并不能代替真正將你的每個(gè)操作記入文檔,但這至少開了個(gè)好頭。另外,面向Eclipse IDE的Force.com插件讓你可以對(duì)幾乎整個(gè)系統(tǒng)配置進(jìn)行快照處理,處理成一組(有時(shí)是一組龐大的)XML文件。拿來當(dāng)月快照后使用你常用的XML差分工具,你就能看到什么地方發(fā)生了更改。當(dāng)然了,你不會(huì)知道為何更改或者由誰更改,但至少有了點(diǎn)頭緒。
另外,還有DreamFactory、Panaya等其他廠商提供的一些快照和差分工具。但如果你并沒有一直在做任何定期的清理任務(wù),可能會(huì)發(fā)現(xiàn)這些工具不頂用。在Salesforce.com中,API讓你可以詢問最多10000個(gè)對(duì)象;而在最近的系統(tǒng)審計(jì)中,一個(gè)客戶有20000多個(gè)對(duì)象。真糟糕。
采取行動(dòng)以減少技術(shù)債務(wù)
但是工具在這里解決不了問題,而***實(shí)踐解決得了問題,比如下面這些:
1.設(shè)定更改方面的預(yù)期目標(biāo)。即便你可以在20秒內(nèi)進(jìn)行更改,也要明確:更改只能每天進(jìn)行一次,如果可以的話,每周進(jìn)行一次。
2.設(shè)定系統(tǒng)管理工作負(fù)載方面的預(yù)期目標(biāo)。你根本無法一下子還清技術(shù)債務(wù),預(yù)計(jì)15%的管理時(shí)間專門用于慢慢清理債務(wù)是合理的。
3.每季度(或者按云系統(tǒng)的日志跨度)備份一次系統(tǒng)管理員的更改日志。這個(gè)小文件要***保存。
4.使用標(biāo)準(zhǔn)的沙盒,每月更新一次。想真正看到潛在更改的影響,唯一的辦法就是在裝滿數(shù)據(jù)的沙盒里面;即便如此,還是會(huì)有一些問題只在生產(chǎn)環(huán)境中才會(huì)體現(xiàn)出來。
5.另外使用開發(fā)沙盒(這是免費(fèi)的),每天更新一次。
6.對(duì)生產(chǎn)系統(tǒng)使用系統(tǒng)快照工具,每天更新一次。使用該快照分析哪里在使用,以支持設(shè)計(jì)提擬的更改。
7.在生產(chǎn)環(huán)境中進(jìn)行更改之前,先在其中一個(gè)沙盒里面進(jìn)行測試。要是更改區(qū)域是配置在過去30天沒有發(fā)生太大變化的區(qū)域,就在整個(gè)沙盒里面進(jìn)行測試。要是出現(xiàn)了許多配置更改,就在開發(fā)沙盒里面進(jìn)行測試。
8.一旦你將更改的內(nèi)容放入到沙盒,就按一下“運(yùn)行所有測試”按鈕(或者是你的云系統(tǒng)用來運(yùn)行單元測試和系統(tǒng)測試的任何機(jī)制),看看有沒有任何新的測試錯(cuò)誤出現(xiàn)。有時(shí)候,僅僅修復(fù)參數(shù)選用表中的拼寫錯(cuò)誤就會(huì)引起好多的測試錯(cuò)誤。
9.合計(jì)系統(tǒng)中的所有視圖、報(bào)表和儀表板,每月合計(jì)一次。這些東西往往會(huì)迅速增多(如果大多數(shù)用戶被允許可以創(chuàng)建自己的報(bào)表,更是如此),會(huì)給系統(tǒng)可靠性帶來致命影響。大膽精簡報(bào)表(通過隱藏報(bào)表,而不是刪除報(bào)表)――12個(gè)月里面沒有運(yùn)行過的任何報(bào)表都不太可能有保留價(jià)值。
10.分析什么條目引起系統(tǒng)管理項(xiàng)急劇增多,嚴(yán)密分析增添復(fù)雜性的新來源,每月分析一次。在Salesforce中,主要條目有配置文件、自定義對(duì)象和記錄類型。有100000多個(gè)布爾表達(dá)式定義安全系統(tǒng),這種情況并不罕見,所以你應(yīng)該密切關(guān)注會(huì)導(dǎo)致這個(gè)數(shù)呈幾何增長的任何方面。
11.制定一項(xiàng)政策:每當(dāng)你給系統(tǒng)添加內(nèi)容,至少要廢棄一個(gè)條目。至少需要?jiǎng)h除之前被廢棄的一個(gè)條目(通常每月至少應(yīng)該進(jìn)行一次“清除”工作。)
- 廢棄對(duì)象應(yīng)該包括條目標(biāo)簽開頭的特殊ASCII字符(比如▼或♖),明確表明在使用該字段的任何報(bào)表或頁面布局中“這里出現(xiàn)了異常問題”。
- 廢棄還應(yīng)該包括給字段的“開發(fā)人員姓名”前面加上“zzz”,迫使已廢棄的字段進(jìn)入按首字母排序列表的底部。
- 必須將廢棄和刪除操作當(dāng)作變更來處理,這些變更已記入日志,并在沙盒里面進(jìn)行了全面測試,之后才可以進(jìn)入到生產(chǎn)環(huán)境。
結(jié)束語
這方面沒有什么簡易的解決辦法,沒人喜歡還債。但是技術(shù)債務(wù)確確實(shí)實(shí)存在,而且會(huì)日積月累。所以,不妨授權(quán)員工來一番春季大清理,免得到時(shí)局面失控。
原文標(biāo)題:Best practices for cloud spring cleaning