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