知識
互聯(lián)網(wǎng)時(shí)代,知識是一個(gè)特別簡(jiǎn)單的問(wèn)題?;ヂ?lián)網(wǎng)就是一個(gè)非常有效的知識存儲系統,對很多問(wèn)題而言,“我來(lái)為你 Google-下"都是高效且往往也是高產(chǎn)的回答。關(guān)于操作Web基礎結構的幾乎你想知道(或不想知道)的任何事情,你猜對了,都在Web上。
把自己限制在Web上查找信息,喔喔,那就局限了。在這個(gè)過(guò)程中,盡管感覺(jué)不同,可你并非獨自一人。你有同伴,如同你需要他們一樣,他們也同樣需要你。用戶(hù)組(各種各樣)遍及全球,這可是分享知識的絕佳場(chǎng)所。

要是你正讀到這里的話(huà),你肯定早已經(jīng)知道書(shū)本對于獲取知識的價(jià)值了,所有資深的Web運維工程師的一個(gè)共同點(diǎn)是都擁有一個(gè)相當規模的書(shū)架。試著(zhù)在你的組織內部成立一個(gè)圖書(shū)俱樂(lè )部,如果你的組織太小,那就在本地用戶(hù)組里問(wèn)問(wèn),看有沒(méi)有同道者。
互聯(lián)網(wǎng)行業(yè)的一個(gè)獨特之處就是幾乎所有東西都是公開(kāi)的,事實(shí)上,有專(zhuān)有權的東西也是極少的,而更為獨特的是,幾乎所有規范文本都是免費的?;ヂ?lián)網(wǎng)是怎么工作的?交換這里有IE的規范說(shuō)明交換的原理;IP:這里有RFC791;TCP:RFC793;HTTP:RFC2616。你可以讀讀這些規范文本,從而對互聯(lián)網(wǎng)的工作原理有一個(gè)透徹的理解。這些協(xié)議規定了網(wǎng)絡(luò )服務(wù)的規則,你對這些協(xié)議的理解越深,你的決策就會(huì )越有水平。但不能就此止步!TCP可能是在RFC793中描述的,但TCP的各種細節、擴展以及后來(lái)的“發(fā)展”都是在RFC1323、2001、2018、2581等文本中描述的,所以,還需要進(jìn)一步深入研究?;蛟S研究一下TCP是從哪里來(lái)的,也是值得的:請看RFC761。
讓我們再來(lái)看看理論與實(shí)踐的難解之謎。TCP的RFC就是理論,每個(gè)操作系統中實(shí)現TCP棧的代碼就是實(shí)踐。理論與實(shí)踐的輝煌撞擊(glorious collision)就是不同TCP實(shí)現之間互操作性(或互不操作性)的微妙之處,而由此產(chǎn)生的爆炸就是慢速的下載,掛起的會(huì )話(huà),以及沮喪的用戶(hù)。
在你走在從學(xué)徒到師傅的路途中,盡可能多地占有信息是你的職責,這樣你的大腦才能將那些細微之處進(jìn)行排序、過(guò)濾、關(guān)聯(lián),使其成為一幅簡(jiǎn)明、精確的圖畫(huà),從而有助于你的決策一一不管是長(cháng)期的架構設計的關(guān)鍵決策,還是臨時(shí)的排除故障的決策。
工具
工具,在我的經(jīng)驗里,是計算史上持續時(shí)間最長(cháng)、言辭最激烈的爭論之 對Emacs、Subversion對Git、Java對PHP一從不同陣營(yíng)的爭論開(kāi)始,迅速地演化為愚蠢的門(mén)派之戰。
簡(jiǎn)單的事實(shí)是,雖然這些工具各有優(yōu)缺點(diǎn),然而人們使用這些工具卻都取得了成功。為什么人們要使用所有這些不同的工具呢?為什么我們還要制造更多的工具呢?當ThomasCarlyle和 Benjamin Franklin說(shuō)“人類(lèi)是使用工具的動(dòng)物”和“人類(lèi)是制造工具的動(dòng)物”時(shí),我認為他們道出了人類(lèi)本性中某種重要的東西。因為制造與使用工具是我們的本性那為什么我們還要進(jìn)行無(wú)謂的爭論呢?雖然 Thoreau/在某些問(wèn)問(wèn)題上很尖刻,但他的評論“人類(lèi)已經(jīng)成為他們的工具了”,我覺(jué)得在現代語(yǔ)境下,也是同樣準確的。
這個(gè)簡(jiǎn)單的事實(shí),在Emerson那里得到了最好的表達:“所有的工具和機器歸根到底都只是人類(lèi)肢體和感覺(jué)器官的延長(cháng)。”這很好地道出了那個(gè)古老的格言:師傅不是用工具煉成的。在互聯(lián)網(wǎng)應用的環(huán)境中,你會(huì )看得更清楚,五花八門(mén)的語(yǔ)言、平臺、技術(shù)都能夠成功地組合在一起,將這些成功地構建為一個(gè)架構的,不是Java或PHP,而是設計與實(shí)現它的工程師一一那些師傅們。
工程上的一個(gè)真理是,不管在用的工具是什么,要了解你的工具,這是在這個(gè)行業(yè)登堂入室的前提。你的工具必須成為你的肢體和感覺(jué)器官的延長(cháng)。對于工程師和非工程師都同樣深入了解,不要僅僅為了一張證書(shū)。你必須了解工具的效果,以及與環(huán)境的交互能力 清楚的是,事情發(fā)生時(shí),再抱著(zhù)本工具說(shuō)明書(shū)來(lái)看,則無(wú)異于遠水救近火。對你的工具要句話(huà),必須要實(shí)用。
運維工程師的工具箱中的一個(gè)強有力的工具,就是系統調用跟蹤器(system call tracer),系統不同,這個(gè)工具也可能稍有差別。Solaris的是truss,Linux的是strace,FREEBSD的是
ktrace,而Mac OS X本來(lái)是ktrace,可后來(lái)?yè)Q成了用處不大的 truss系統調用跟蹤器就是一個(gè)窺視孔,透過(guò)這個(gè)孔,你可以看到操作系統在用戶(hù)空間和內核空間的交互作用,換句話(huà)說(shuō),如果不是計算密集的操作,這個(gè)工具能夠告訴你應用程序正在請求什么,滿(mǎn)足這個(gè)請求花了多長(cháng)時(shí)間。
在Solaris、Opensolaris、 FREEBSD、Mac OS X,以及其他一些平臺中,Dtrace具占有獨特的地位。但Dtrace卻應該在這里提一下。Dtrace在系統可觀(guān)測性(system observability)方面是一個(gè)巨大的飛躍,有經(jīng)驗的工程師通過(guò)這個(gè)工具,可以獲得對系統更為深人的理解,這在以前是不可能做到的。然而, Dtrace就像神諭一樣玄妙深奧,一方面是其深邃的洞察力,另一方面就是答案的質(zhì)量取決于問(wèn)題的質(zhì)量。從另一方面來(lái)說(shuō),系統調用追蹤器的預言就像雪崩一樣洶涌而來(lái)很容易引你上鉤,但要在大量的輸出信息中找到所需要的東西,卻是一個(gè)真正的挑戰。
我們怎么談?wù)撈鹧┍篮蜕裼鍋?lái)了?支撐Web的架構沒(méi)有固定的形態(tài),一般也都是異質(zhì)的環(huán)境,從這點(diǎn)來(lái)看,這倒是一個(gè)恰當當的比喻。使用 strace探測你的Web服務(wù)器正在做什么肯定非常令人興查(而且不用花太多時(shí)間,一般也都能做些優(yōu)化)。但發(fā)生問(wèn)題時(shí),除非是非常有經(jīng)驗的工程師,你要是第一次查看那些輸出,則對你基本上沒(méi)有價(jià)值,事實(shí)上,卻反而浪費你大量的時(shí)間與精力。問(wèn)題在于,這是一件需要經(jīng)驗才能對付的事情,而你只是個(gè)新手。在發(fā)生“問(wèn)題”時(shí),從這樣的工具中查看輸出,試圖找出不尋常的模式,是符合邏輯的。很清楚,你如果在正常操作模式下都不能使用探測工具的話(huà),則比較的基礎也就不存在了。從而所有輸出模式都是不尋常的。那些看起來(lái)與題有關(guān)的模式,其實(shí)并不是,這種情況經(jīng)常碰到,導致在這上面浪費了大量時(shí)間。
傳播關(guān)于工具的爭論往往是重要的,這樣你就能夠針對工具對問(wèn)題的適用性進(jìn)行選擇,而不會(huì )僅限于自己的個(gè)人喜好。 FREEBSD項目是一個(gè)極好的例子,它的發(fā)布管理絕對是一流的,使用的工具卻是被大多數人認為完全過(guò)時(shí)的版本控制系統(CVS)。許多成功的架構是建立在PHP語(yǔ)言之上的,而PHP卻缺乏很多現代語(yǔ)言都具有的一些特性。而從另一方面來(lái)看,很多項目,雖然裝備了最強有力的工具,仍然失敗了。靈巧地運用工具的能力,比工具本身的質(zhì)量要重要得多。話(huà)雖如此,有經(jīng)驗的工程師還是應該手邊備一件合適的高質(zhì)量工具的。
經(jīng)驗
任何情況下,經(jīng)驗都是最有力的武器之一。經(jīng)驗意味著(zhù)太多的東西,所以特別重要。從最本質(zhì)的意義上來(lái)說(shuō),經(jīng)驗意味著(zhù)良好的判斷力,而良好的判斷力卻是從很多失敗中取得的。從理論與實(shí)踐的沖突中,我們可以看出殘酷與美麗。沖突無(wú)疑有犧牲一一數據丟失、服務(wù)中斷、激怒用戶(hù),以及金錢(qián)損失一一但同時(shí),沖突的完整情景和病理卻有著(zhù)深邃的美:職責受到了挑戰(你可能因此而丟掉飯碗),非預期的結果也得以彩顯,而比這些更重要的,這是你成為病理學(xué)家(pathologist)千載難逢的機會(huì ),而且對于理論與實(shí)踐在哪里分道揚鑣會(huì )有更加深入的理解。
經(jīng)驗與知識是緊密相關(guān)的,知識可以認為是他人經(jīng)驗的總結。你有了這些知識,并不就能把握知識背后的深刻意蘊,這是需要直接經(jīng)驗才能獲得的。經(jīng)由經(jīng)驗磨礪的洞察力(這種洞察力在僅有知識的情況下是不會(huì )有的)具有洞幽燭微的能力,才能夠探出問(wèn)題所在,而知識背后的深刻意蘊則能夠讓你靈活應用學(xué)得的教訓,解決這里的問(wèn)題。
經(jīng)驗既是一個(gè)名詞,也是一個(gè)動(dòng)詞:獲得經(jīng)驗,與應用經(jīng)驗,同樣容易(也同樣困難)。
無(wú)經(jīng)驗者的機構化挑戰
盡管獲得經(jīng)驗就像簡(jiǎn)單的“做事”一樣容易,但在Web運維中,就是一個(gè)制造糟糕判斷并從中脫險的過(guò)程。然而,問(wèn)題在于:身處這樣一個(gè)激烈競爭的行業(yè),有哪一個(gè)機構愿意讓
自己的員工制造糟糕判斷呢?回答這樣的問(wèn)題并執行這樣的計劃,對于想擁有職業(yè)Web運維工程師的任何一家公司,都是基本的要求。這個(gè)問(wèn)題的答案分為兩部分:一陰,一陽(yáng)。
首先,為了讓初級和中級工程師制造糟糕判斷,必須保證安全。這通過(guò)將每次糟糕判斷的責任和造成的損失控制在一定的限度內來(lái)實(shí)現,環(huán)境(工作區、網(wǎng)絡(luò )、系統、代碼)要能夠完整地從偶爾的糟糕判斷中脫險。你肯定不希望被通到這樣的份上,僅僅由于一次糟糕判斷,就將員工炒魷魚(yú)(雖然我知道這不能完全避免,但總是一個(gè)美好的目標)。失誤越大,從教訓中學(xué)到的就越深入和持久。這讓我們進(jìn)入了答案的第二部分
相同的糟糕判斷水遠不要犯第二次。錯誤可以發(fā)生,糟糕的判斷事實(shí)上也總會(huì )遇到,但不能從自己的錯誤中學(xué)到數訓,是不可原諒的。雖然意外總是存在的,你應該期待并倡導這樣一種文化:對重復糟糕判斷的零容忍。
“資深運維”的概念
一直困擾著(zhù)我的一個(gè)問(wèn)題,是初級運維工程師申請資深職位。他們的想法是知識決定了一個(gè)人在團隊中的地位,正像其他領(lǐng)域一樣,這是絕對錯誤的。一名資深工程師最大的特點(diǎn)是其致與可靠的良好判斷力,很顯然,這要在需要做出判斷的場(chǎng)合經(jīng)受鍛煉,而且有一個(gè)簡(jiǎn)單的數學(xué)算法需要做出判斷的場(chǎng)合的困難程度乘以任職期限。在一個(gè)經(jīng)常發(fā)生災難性性事故的運維團隊中空降,是可以在“快車(chē)道”上迅速成長(cháng)的。在一個(gè)位置上待10年,從來(lái)沒(méi)有做出過(guò)挑戰性的決策也是可能的,其結果就是,沒(méi)有積累起任何有價(jià)值的經(jīng)驗。
X一代(甚至Y一代)奉行即時(shí)滿(mǎn)足的文化。我與一大批的工程師共同工作過(guò),他們期望他們的“職業(yè)路徑”在5年之內能夠達到最高位置,只是因為他們非常聰明。我認為對這么一大批人來(lái)說(shuō)是不可能的,不是每個(gè)人都能夠做到資深工程師。就算5年之后,你做到了資深工程師,難道這就是你的頂峰了嗎?再一個(gè)5年之后,你就不累積寶貴的經(jīng)驗了嗎?到時(shí)候應該是什么呢?“超級工程師(super engineer)”?5年之后又是什么呢?“無(wú)敵工程師(super- duper engineer)”?我認為我們這個(gè)行業(yè)的年輕人不值得為此煩惱,真實(shí)情況是,極少有工程師會(huì )在Web運維領(lǐng)域干上15年。我們這個(gè)行業(yè)的變化性很強,很多人被選拔到了管理崗位,或作為企業(yè)家冒險運維自己的事情去了。
對進(jìn)入這個(gè)領(lǐng)域而沒(méi)有什么經(jīng)驗的工程師,我的忠告是:耐心。然而,這句箴言明顯自相矛盾,在你能夠領(lǐng)悟其真意之前,你的耐心恐怕早就跑光了。
紀律
紀律,在我看來(lái),是我們這個(gè)行業(yè)中最大的災難。Web運維,從其進(jìn)人結構規劃、過(guò)程設設計、人員訓練之后,業(yè)績(jì)就非常槽糕。作為我工作的一部分,我做了很多評估,走訪(fǎng)了很
多公司,對他們的組織結構、運維實(shí)踐、整體架構進(jìn)行復審,以便能夠識別出一但業(yè)務(wù)規模上來(lái)之后,什么時(shí)候以及哪里會(huì )出問(wèn)題。
猜猜我經(jīng)??吹绞裁?我看到的是懶懶的牛仔和持槍歹徒,這是狂野西部(Wild,WildWest)啊。情經(jīng)常被吹噓為程序員的必需品質(zhì),在Perl社區(這一點(diǎn)已經(jīng)成為其符咒的一部分),其意義并非真如字面所示(在符咒中已經(jīng)進(jìn)一步簡(jiǎn)化為野做),而是通過(guò)盡可能正確面高效地做事,從而為解決同樣同題,面盡可能地少做工作一這其實(shí)離橫情已經(jīng)很遠了。不幸的是,程序設計和運維領(lǐng)域的其他人卻將真正的懶惰作為一種我稱(chēng)之為“我的地盤(pán)你休想”的做慢。
紀律就是可控制的行為,來(lái)自于培訓、學(xué)習和實(shí)踐。以我的經(jīng)驗,紀行律應該是Web運維團隊最普通的要素,缺乏紀律的結果就是不協(xié)調、效率低下。
紀律不是通過(guò)書(shū)本可以教的東西,必須通過(guò)實(shí)踐養成。你接手的每個(gè)任務(wù)都要用長(cháng)遠的眼光來(lái)對待。對你的崗位和職責要長(cháng)期經(jīng)營(yíng),處理問(wèn)題的解決方案要5年之后還能夠滿(mǎn)意,這些是實(shí)踐的良好基礎,紀律從此實(shí)踐中即可養成。
軟件工程(一個(gè)密切相關(guān)的領(lǐng)域)在紀律上卻有不錯的成績(jì),我覺(jué)得這挺有諷刺意味的。我猜Web運維領(lǐng)域缺乏紀律性的根本原因是缺乏職業(yè)路徑,這看起來(lái)好像是一個(gè)雞與蛋的問(wèn)題,我X對這個(gè)行業(yè)很快就會(huì )有一個(gè)明確的職業(yè)路徑還是充滿(mǎn)信心的。
參與職業(yè)的網(wǎng)站建設規劃設計,對于在這個(gè)行業(yè)工作的工程師來(lái)說(shuō),肯定是是非常重要的。Web已經(jīng)在那兒了,架構在Web上的服務(wù)正在變得越來(lái)越關(guān)鍵,Web運維“職業(yè)”是不可缺少的。通過(guò)參與,你就更能夠確信,當初吸引你進(jìn)來(lái)的這種工作的特質(zhì),將持續你的整個(gè)職業(yè)生涯。
本文地址:http://www.havencoinwallet.com//article/3303.html