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