是否應該允許開發人員進入生產環境?

aqee發表於2012-11-06

  在Web開發公司裡,有個問題會被一而再、再而三的提出來,這就是:

  “是否應該允許開發人員進入生產環境?如果是,允許到什麼程度?”

  對於此,我的觀點是,整體上,應該限制開發人員訪問生產環境。在論證我這個觀點之前,我想宣告一下,我的立場絕對不是基於對開發人員的品質品行的判斷——所以請不要往這方面想。首先我要公佈一些常見的程式設計師們不喜歡或討厭這個觀點的論據:

  “系統管理員什麼都不讓我們幹,他又解決不了,我們根本沒法完成任務。”

  如果真是這種情況,那麼他們應該是對的。如果是因為沒有足夠的管理員或管理員不稱職,那麼瓶頸就會出現。然而,允許開發人員訪問生產環境並不是一種解決方案,因為即使這一回你把問題解決了,以後還是會出現缺少管理員的情況。有時候一些管理上的規章制度會使事情變的繁瑣,耽誤時間,但我想這時間也不會是一種不可接受的漫長。

  “我們以前就是這麼幹的。”

  創業公司很少一成立就有一些系統管理員。出於某些原因,系統管理員會被認為是一種奢侈品。儘管這種狀況在以前是可以的,但隨著公司的成長,管理員應該慢慢增多。事情會變的越來越複雜,這也是公司為什麼需要系統管理員的原因。所以說,“我們以前就這麼幹”的說法並沒有多少說服力。

  “我們需要進入生產環境解決問題。”

  也許是,也許不是。管理員應該能夠給你想要的各種資訊。如果這個過程成為瓶頸,那麼允許有限範圍內的訪問是合適的。

  還有很多的關於限制開發人員訪問的討論,但來讓我們把目標轉向我真正想討論的——為什麼這是一個好建議。

  限制訪問的產生由來:

  如果開發人員不能夠訪問生產環境,一個最大的含義就是他們不能自己去安裝程式。也就意味這管理員要去為他們安裝程式。這其中會發生兩件事情:

  1)開發人員和系統管理員必須交流——相互的交流!管理員必須學會如何安裝程式(我可不希望是由我去解釋),這應該是件好事。

  2)開發人員必須製作安裝檔案和編寫簡單有效的部署步驟說明。這也是很好的事情。能按步驟來重建系統是應對災難恢復的重要的一部分。
所以,一旦開發人員被限制訪問生產環境,我們就能避免那種因為程式過於複雜以致於只有開發人員出面才能部署安裝的情況出現。同樣,開發人員也避免了把時間浪費在部署和安裝程式的工作上了,節省下的時間開發新程式豈不更好。雖然起初他們會多花一點時間,但以後會越來越方便。

  這樣管理員也能學到更多的關於安裝過程中需要備份哪些東西的知識了。即使在管理員對程式不太瞭解的情況,他們只需對著開發人員提供的文件來執行他們的備份操作。

  開發人員所關心的並不一定是系統管理員所關心的:

  通常開發人員所關注的安全領域並不一定會是系統管理員所關注的領域。對於Web網站安全,他們只是擅長他們自己特有的領域。諸如跨站指令碼攻擊,SQL隱碼攻擊等安全問題是開發人員擅長的,對於系統管理員則不然。諸如賬戶許可權,檔案許可權,web伺服器配置通常不是開發人員擅長的和感興趣的,而這些對於生產環境確十分重要的,它們是系統管理員擅長的領域。我對這個領域的見解是越少人訪問越安全。還有,這能有效的避免凌晨兩點被電話吵醒——因為系統管理員懷疑你們15個程式設計師中的某個人在伺服器上做了不當的操作。

  變更控制:

  我不認為一個穩重的程式設計師會不把變更控制當作重要的事情。因為在程式中經常會有這樣的事情。然而,我發現許多程式設計師卻不會慎重的把在伺服器上的每次改動都做上日誌。(當然我也看到過一些配置檔案是有版本控制的)

  如果你沒有這樣做,這意味這生產環境不可能正確的重建。這也意味著如果某些改動導致了問題,對於來解決問題的人卻未必能知道這些曾經發生過的改動。這就好像是一個系統管理員開啟產品程式碼,在未通知任何人的情況下修改了程式或提交到產品裡。哇,我估計程式設計師們會抓狂的。

  擁有者對其有控制權:

  Joel’s Spolsky有句話放在管理工作上很合適:

  “每人都有自己的一塊領地。是誰的,就是誰的。如果一個管理者或其他人,想插手一個事情的管理方式,他必須保證自己是事情擁有者。擁有者有最終話語權。”

  系統管理員通常被認為是生產環境的擁有者。他們是持續跟蹤機器執行狀態的人,是凌晨2點會被電話叫醒的人,基本上也是和生產環境問題距離最近的人。如果開發人員直接訪問的生產環境,那這種管理控制無形中就給破壞了。

  系統管理員的職責:

  為了能在這種原則下正常的工作,管理員必須完成一些工作。

  1)向開發人員們詢問他們想從你這得到什麼資訊,你要很樂意的給他們想要的。

  2)確保開發人員在他們自己的空間裡有一個好的開發環境。

  3)理論結合實踐。每個公司都有自己的特殊情況,有些公司由於自身業務的原因決定了開發人員的無訪問許可權(比如金融類)。然而,即使你那不是個金融公司,取消開發人員的訪問特權的作業制度也是最好的方案。有可能某些開發人員同時擔任這系統管理員的工作,所以每個公司都有自己的情況。

  就像我在開始時宣告的那樣,我認為所討論的問題跟程式設計師是否優秀無關——有很多的開發人員的技術跟系統管理員一樣出色。
我們所關注的更多的是如何在公司的發展中讓兩種角色的人都專注於自己擅長的領域。也許事情的改變需要時間。然而,最終的目的是讓我們有一個更加可靠和安全的生產環境。

原文連結:Should Developers have Access to Production?

相關文章