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


















