開發(fā)者與系統(tǒng)管理員的爭執(zhí):不要碰我的生產(chǎn)環(huán)境!
51CTO編輯注:本文敘述的是Web開發(fā)公司的一個常見的糾紛,有關(guān)開發(fā)者與系統(tǒng)管理員之間職權(quán)劃分的問題。本文的意思是系統(tǒng)管理員應(yīng)該承擔(dān)更大的責(zé)任,這與現(xiàn)在在歐美系統(tǒng)管理員界正刮起一股DevOp的潮流是契合的。這些人提倡集系統(tǒng)管理員和開發(fā)者的職責(zé)于一身,達(dá)到“敏捷運維”的目的。
51CTO編輯推薦:SA,神仙與裝機男:運維的工作到底啥樣兒?
在Web開發(fā)公司里,有個問題會被一而再、再而三的提出來,這就是:
“是否應(yīng)該允許開發(fā)人員進(jìn)入生產(chǎn)環(huán)境?如果是,允許到什么程度?”
對于此,我的觀點是,整體上,應(yīng)該限制開發(fā)人員訪問生產(chǎn)環(huán)境。在論證我這個觀點之前,我想聲明一下,我的立場絕對不是基于對開發(fā)人員的品質(zhì)品行的判斷——所以請不要往這方面想。首先我要公布一些常見的程序員們不喜歡或討厭這個觀點的論據(jù):
“系統(tǒng)管理員什么都不讓我們干,他又解決不了,我們根本沒法完成任務(wù)。”
如果真是這種情況,那么他們應(yīng)該是對的。如果是因為沒有足夠的管理員或管理員不稱職,那么瓶頸就會出現(xiàn)。然而,允許開發(fā)人員訪問生產(chǎn)環(huán)境并不是一種解決方案,因為即使這一回你把問題解決了,以后還是會出現(xiàn)缺少管理員的情況。有時候一些管理上的規(guī)章制度會使事情變的繁瑣,耽誤時間,但我想這時間也不會是一種不可接受的漫長。
“我們以前就是這么干的。”
創(chuàng)業(yè)公司很少一成立就有一些系統(tǒng)管理員。出于某些原因,系統(tǒng)管理員會被認(rèn)為是一種奢侈品。盡管這種狀況在以前是可以的,但隨著公司的成長,管理員應(yīng) 該慢慢增多。事情會變的越來越復(fù)雜,這也是公司為什么需要系統(tǒng)管理員的原因。所以說,“我們以前就這么干”的說法并沒有多少說服力。
“我們需要進(jìn)入生產(chǎn)環(huán)境解決問題。”
也許是,也許不是。管理員應(yīng)該能夠給你想要的各種信息。如果這個過程成為瓶頸,那么允許有限范圍內(nèi)的訪問是合適的。
還有很多的關(guān)于限制開發(fā)人員訪問的討論,但來讓我們把目標(biāo)轉(zhuǎn)向我真正想討論的——為什么這是一個好建議。
限制訪問的產(chǎn)生由來:
如果開發(fā)人員不能夠訪問生產(chǎn)環(huán)境,一個最大的含義就是他們不能自己去安裝程序。也就意味這管理員要去為他們安裝程序。這其中會發(fā)生兩件事情:
1)開發(fā)人員和系統(tǒng)管理員必須交流——相互的交流!管理員必須學(xué)會如何安裝程序(我可不希望是由我去解釋),這應(yīng)該是件好事。
2)開發(fā)人員必須制作安裝文件和編寫簡單有效的部署步驟說明。這也是很好的事情。能按步驟來重建系統(tǒng)是應(yīng)對災(zāi)難恢復(fù)的重要的一部分。
所以,一旦開發(fā)人員被限制訪問生產(chǎn)環(huán)境,我們就能避免那種因為程序過于復(fù)雜以致于只有開發(fā)人員出面才能部署安裝的情況出現(xiàn)。同樣,開發(fā)人員也避免了把時間浪費在部署和安裝程序的工作上了,節(jié)省下的時間開發(fā)新程序豈不更好。雖然起初他們會多花一點時間,但以后會越來越方便。
這樣管理員也能學(xué)到更多的關(guān)于安裝過程中需要備份哪些東西的知識了。即使在管理員對程序不太了解的情況,他們只需對著開發(fā)人員提供的文檔來執(zhí)行他們的備份操作。
開發(fā)人員所關(guān)心的并不一定是系統(tǒng)管理員所關(guān)心的:
通常開發(fā)人員所關(guān)注的安全領(lǐng)域并不一定會是系統(tǒng)管理員所關(guān)注的領(lǐng)域。對于Web網(wǎng)站安全,他們只是擅長他們自己特有的領(lǐng)域。諸如跨站腳本攻擊,SQL注入等安全問題是開發(fā)人員擅長的,對于系統(tǒng)管理員則不然。諸如賬戶權(quán)限,文件權(quán)限,web服務(wù)器配置通常不是開發(fā)人員擅長的和感興趣的,而這些對于生產(chǎn)環(huán)境確十分重要的,它們是系統(tǒng)管理員擅長的領(lǐng)域。我對這個領(lǐng)域的見解是越少人訪問越安全。還有,這能有效的避免凌晨兩點被電話吵醒——因為系統(tǒng)管理員懷疑你們15個程序員中的某個人在服務(wù)器上做了不當(dāng)?shù)牟僮鳌?/p>
變更控制:
我不認(rèn)為一個穩(wěn)重的程序員會不把變更控制當(dāng)作重要的事情。因為在程序中經(jīng)常會有這樣的事情。然而,我發(fā)現(xiàn)許多程序員卻不會慎重的把在服務(wù)器上的每次改動都做上日志。(當(dāng)然我也看到過一些配置文件是有版本控制的)
如果你沒有這樣做,這意味這生產(chǎn)環(huán)境不可能正確的重建。這也意味著如果某些改動導(dǎo)致了問題,對于來解決問題的人卻未必能知道這些曾經(jīng)發(fā)生過的改動。這就好像是一個系統(tǒng)管理員打開產(chǎn)品代碼,在未通知任何人的情況下修改了程序或提交到產(chǎn)品里。哇,我估計程序員們會抓狂的。
擁有者對其有控制權(quán):
Joel’s Spolsky有句話放在管理工作上很合適:
“每人都有自己的一塊領(lǐng)地。是誰的,就是誰的。如果一個管理者或其他人,想插手一個事情的管理方式,他必須保證自己是事情擁有者。擁有者有最終話語權(quán)。”
系統(tǒng)管理員通常被認(rèn)為是生產(chǎn)環(huán)境的擁有者。他們是持續(xù)跟蹤機器運行狀態(tài)的人,是凌晨2點會被電話叫醒的人,基本上也是和生產(chǎn)環(huán)境問題距離最近的人。如果開發(fā)人員直接訪問的生產(chǎn)環(huán)境,那這種管理控制無形中就給破壞了。
系統(tǒng)管理員的職責(zé):
為了能在這種原則下正常的工作,管理員必須完成一些工作。
1)向開發(fā)人員們詢問他們想從你這得到什么信息,你要很樂意的給他們想要的。
2)確保開發(fā)人員在他們自己的空間里有一個好的開發(fā)環(huán)境。
3)理論結(jié)合實踐。每個公司都有自己的特殊情況,有些公司由于自身業(yè)務(wù)的原因決定了開發(fā)人員的無訪問權(quán)限(比如金融類)。然而,即使你那不是個金融 公司,取消開發(fā)人員的訪問特權(quán)的作業(yè)制度也是最好的方案。有可能某些開發(fā)人員同時擔(dān)任這系統(tǒng)管理員的工作,所以每個公司都有自己的情況。
就像我在開始時聲明的那樣,我認(rèn)為所討論的問題跟程序員是否優(yōu)秀無關(guān)——有很多的開發(fā)人員的技術(shù)跟系統(tǒng)管理員一樣出色。
我們所關(guān)注的更多的是如何在公司的發(fā)展中讓兩種角色的人都專注于自己擅長的領(lǐng)域。也許事情的改變需要時間。然而,最終的目的是讓我們有一個更加可靠和安全的生產(chǎn)環(huán)境。
[英文出處]:Should Developers have Access to Production?
[中文翻譯]:外刊IT評論
【編輯推薦】