據今年Stack Overflow網站對廣大開發人員的調查顯示,最常見的一群開發人員是二十出頭的JavaScript全棧開發員。全棧(full-stack)這個短語意指“能夠從頭開始編寫Web服務”。全棧開發員能夠使用亞馬遜網絡服務(AWS)API,處理Ubuntu操作系統,編寫JavaScript代碼,并且提供接口。
不過這其實并非云計算,不是嗎?JavaScript開發員可不在乎云計算的細枝末節,比如RAID配置、內核模塊或應用程序故障切換。他也不在乎OpenStack的未來,不在乎Lattice是不是比Cloud Foundry更容易使用。JavaScript全棧開發員與云計算到底有什么關系呢?
云計算堆棧
IT人員喜歡堆棧,因為堆棧的上層隱藏了低層的復雜性。云計算技術堆棧看起來就像這樣:
頂層是應用程序――各種各樣的計算機程序,從Apache到Zabbix,不一而足。
中間層是操作系統――咱們實話實說吧,Ubuntu在這方面勝出。
底層――云服務提供商
JavaScript堆棧
JavaScript堆棧是位于云計算堆棧那個頂層的多種類型的工件(artifact)當中的一種。JavaScript堆棧實際上與其說是一種堆棧,還不如說是一種軟件包:該軟件包既涵蓋服務器端計算,又涵蓋客戶機端計算。
服務器端確確實實含有軟件堆棧。底層是谷歌公司的V8 JavaScript引擎,Joyent公司的Node.js服務器建立在V8上,編碼框架則位于Node.js的基礎上。服務器端存儲區是NoSQL數據庫――傳統的關系型數據庫管理系統(RDBMS)根本就不是很酷。客戶機端包括另一種應用程序框架(如果你聽到開發人員把這一切現成的代碼稱作樣板,那么他很可能是全棧開發員群體當中的一員)。
千萬不要低估了大批開發員的耐心。以色列開發公司Linnovate拿來服務器端數據庫Mongo、服務器端Express框架、谷歌的客戶機端框架AngularJS以及Node.js后,隨后進行了一番整合工作,開發出了MEAN.io。MEAN軟件包將這些組件的安裝和配置簡化為只有一行的命令。這種簡化工作對開發人員來說如同小菜一碟(這也就是開發人員覺得Docker和Vagrant如此吸引人的原因之一)。
JavaScript開發人員的工具箱包括更多節省時間的軟件,這些軟件的名稱好像是從字典里隨機選擇似的。你會喜歡Jasmine還是Mocha?不知道。會喜歡Grunt還是Gulp?說不準。喜歡D3還是Epoch?拜托,到此為止吧。
JavaScript全棧開發員
全棧開發員的想法是,面向Web、完全從軟件的視角看待技術世界,這在云計算之前是不可能做到的。十年前有的只是從O'Reilly Web2.0視角看待Web,而現在是從全棧視角看待Web。
全棧開發員是專家級的JavaScript編程人員,能夠處理這些全棧工具,諳熟HTML5和CSS等其他語言(沒錯,這些是語言),而且了解AJAX、單頁應用程序和充分利用代表性狀態傳輸協議(REST)的Web服務等概念。
與所有IT技術迷一樣,JavaScript全棧開發人員也被嶄新的技術所吸引。如果說企業投資者是闊綽的后臺老板、系統管理員是不修邊幅的家伙,那么JavaScript全棧開發員就是趕時髦的人。他們一點也不像擅長LAMP堆棧或PHP驅動的CMS的人群。而全棧這個短語讓這一批新的JavaScript開發員有別于昔日微不足道的JavaScript前端開發員。
站在巨人的肩上
你可以說,這些JavaScript全棧開發員與云計算沒有半毛關系。他們的日常工作與構建或運行大規模分布式云計算系統毫無關系。他們可能在滑雪旅行間歇為小公司制作漂亮的網站,從不考慮那些云API后面的東西。
但這其實是一種誤解。這些開發人員的工作恰恰離不開云計算的存在。JavaScript全棧開發員好比站在巨人的肩上。JavaScript全棧開發員很可能是開發運營(DevOps)文化圈的一員,構建彈性系統,并使用版本控制系統來編寫代碼。他關注架構、監控和容量,他每天都在耗用云計算資源。
如果拿顯微鏡來細細研讀JavaScript全棧開發員,研究這個群體。你就會發現這是云計算時代的諸多奇跡之一。