5月15日外電頭條:系統管理員與開發者界限日漸模糊
原創【51CTO.com快譯】我的弟弟在大學里學的是計算機科學,因此,他理所當然應該成為一個程序員,或者說應用程序開發者,這也幾乎是選擇計算機科學的最重要原因。在這一點上,大學里其他的IT重點專業學科也應該一樣,比如網絡、安全和運算等等。
但有趣的是,他在大學里一直在努力的做一名系統管理員,走出校園后的***份工作也是做一名系統管理員。到現在,他兩方面的工作都做過了一些。這和我自己的經驗也有些相似,我經常做著“雙份工作”,有時是系統管理員,有時是程序開發者,具體做什么要看我在哪里工作,還有工作的具體需要。
看看我和我兄弟的經驗,雖然管理員和程序開發者顯然起著不同的作用,但它們兩個有著太多的相似之處,也許遠遠超出大家的想象。畢竟,如果你是一名程序開發者,那么公司里的其他人只是不明白你在做什么。但如果你是系統或網絡管理員,那么他們不僅不明白你在做什么,也不會了解在剛剛過去的一天中發生了多少復雜的事情。企業的煙囪結構經常會造成“我們”和“他們”之間的對立。
讓我們仔細看看傳統的“開發者”的定義:開發者指設計軟件和編寫程序的個人或企業。軟件開發包括設計用戶界面,搭建程序架構,以及編寫源代碼。
但是,任何一個做過半分鐘以上的網絡或系統管理員的人在看到這個定義時,都會不由的懷疑這個“開發者”是不是在說他自己。
穿越靈魂的腳本
腳本語言在很早以前就誕生了并且一直存在著,有Ruby、PHP、ASP和JSP。命令行腳本語言也比比皆是,從PowerShell到TCL,再到Perl和Python。在51CTO.com推出的09年4月編程語言排行榜中,前十名的榜單內,腳本語言占據半壁江山。腳本語言和其他開發語言比如C/C++和Java的***區別是,它們很少有一個明確的“entry point”(切入點)。而且因為沒有“entry point”,它們也就沒有“main”函數來啟動程序,它們一般會從上而下的編寫并執行。
但也有許多相似之處。不管要不要定義函數,怎樣使用條件語句(if…then, for, while),或者怎樣處理變量(by reference還是by value),在系統管理員和程序開發者的日常開發中,腳本語言之間的相似性遠遠大于它們之間的分歧。無論你采用什么腳本語言來編程,都需要了解它的語法、函數、變量、結構和運算順序。
網絡和系統管理員們廣泛的使用腳本語言來自動執行任務,執行特定的“on-demand”函數,甚至用它們來創建清晰的日報表或周報表。51CTO.com此前曾刊出的Linux系統管理員成長經驗一文中介紹,“從命令開始從基礎開始”被作者列為一條重要經驗,而學習Shell腳本以及GCC、VI等編譯器也成為學習路線圖的重要一環。一位網絡或系統管理員和一位應用程序開發者所做的工作之間的唯一差別僅僅在于最終用戶,還有把重點放在哪里。網絡和系統管理員的目標是創建一個應用程序,完成某項運算任務,而應用程序開發者的重點是創建一個應用程序,完成某個業務流程。
他們都必須親自設計解決方案并編寫程序,當然,我說的程序包括腳本。他們需要設計用戶界面——即使只是命令行,他們還要編寫程序的源代碼。網絡和系統管理員所做的一切幾乎和應用程序開發者所做的一模一樣。管理員只是幸運地同時做了最終用戶和程序開發者,他們一般不用與業務分析師或實際客戶打交道。
而應用程序開發者可能需要了解并操作系統配置,以便開發和測試他們的應用,他們一般不用理會網絡硬件或復雜的底層架構,而把這些煩心事留給系統管理員。但是,隨著Infrastructure 2.0的到來,以及對底層架構與應用程序之間合作的需求越來越強烈,開發者和管理員之間的分界線越發變得模糊了。
網絡作為服務帶來的影響
“網絡作為服務”(network as a service)已經開始影響并將不停的改變開發者和管理員所扮演的角色。它提供了服務功能的API和腳本功能的API,通過這些API,應用和網絡的底層架構可以進行控制、配置和管理,這也會進一步推動系統和網絡管理員們向著更加面向應用的與業務流程型的腳本編程方向前進。
如果我們做出這樣的假設,就是已經習慣于在不同環境下使用各種腳本來完成復雜任務的管理員們將會很快改而使用更集成更協作的“應用程序”,這個跳躍并不會太大。同樣的,我們也可以為開發者們做出類似的假設,認為他們將會更好的去理解網絡和系統,以便在一個動態的底層架構上實施他們的應用。因為來自應用的反饋是動態底層架構(比如內部云架構)成功的關鍵,而精致并且堅實的底層架構也是保證這些應用的可用性和性能達到業務預期的關鍵。為了實現這一點,管理員們可能需要為自己開啟一個IDE(集成開發環境),并拿起傳統的“開發者”們的工具,來應對Infrastructure 2.0的需要。不斷擴展的靈活的Eclipse環境已經用于各種編程語言、管理控制臺和圖形環境。管理員們可以使用它,把它安裝在自己的臺式機上,它會很容易讓他們適應環境,完成開發任務。
雖然從表面上說這些任務可以移交給開發者,但并沒有完整的理由來推給他們,因為網絡和系統管理員很可能有能力并且已經掌握了所需的“編程技術”,更何況如今的底層架構越來越需要多方面的合作,來提供必要的力量實現更加高效靈活的數據中心。
在自己的領域里,管理員們一直在充當開發者的角色,他們只是不一定需要這個名稱而已。而Infrastructure 2.0和內部云架構的應用將幾乎肯定會讓管理員們把他們的秘密技能拿出來,他們會進一步被確認為開發者,其實他們早已經是了。
【51CTO.com譯稿,非經授權請勿轉載。合作站點轉載請注明原文譯者和出處為51CTO.com,且不得修改原文內容。】
原文:Are admins developers too?
作者:Lori MacVittie
【編輯推薦】